encapsulation
This skill should be used when the user asks to \"audit plugin encapsulation\", \"check self-containment semantics\", \"find…
The user vaguely recalls a past discussion, line of work, topic, or settled concept but cannot name it: find it in past records to recognize in a story, knowing it took place, not that it still holds.
$ npx -y skills add jongwony/epistemic-protocols --skill recollect --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/recollectContext preview
The summary Claude sees to decide when to auto-load this skill.
The user vaguely recalls a past discussion, line of work, topic, or settled concept but cannot name it: find it in past records to recognize in a story, knowing it took place, not that it still holds.
name: recollect description: "The user vaguely recalls a past discussion, line of work, topic, or settled concept but cannot name it: find it in past records to recognize in a story, knowing it took place, not that it still holds."
Find the past the user is reaching for in the records it left and tell it as a story on records they can reopen, until they recognize it — knowing it took place, not that it still holds. Type: `(RecallAmbiguous, AI, RECOGNIZE, VagueRecall) → RecalledContext`.
**Anamnesis** (ἀνάμνησις): A dialogical act of resolving vague recall into recognized context. The person holds an empty intention toward a past they cannot name — a conversation, or a line of work, a topic, or a settled concept spread across several. AI reads what they reach for out of their words and the accumulated context, searches the records the past work left along the axes the cue offers, opens each candidate's own record at the span the cue reaches, and tells what those records carry with their sources, so the person can recognize it. An index's gist wakes recall; the opened record is the evidence; the act that makes a RecalledContext is the person's identification. Recognition over retrieval, grounded in the record rather than in the index.
/-!
How to read this block. It is core Lean 4 and elaborates as written, and you are the model it is
written for: you read it, and by inference over the context you settle each element it leaves
open. Every `axiom` is one of those judgments — a black box to the contract, yours to make from
the material in front of you; its doc comment says what you judge there, and nothing in this
block decides it for you. Every `def`, `inductive`, and `structure` is fixed by the contract.
-/
/-! ── FLOW ──
Anamnesis(V) → start(c) → recollect(c, utterances), where c is the fused session context:
[no empty intention, and the person did not invoke this] relay the finding → proceed, not activated
[the latest utterance identifies what a carried-over recall presented] close: identified
pass(c): read the cue — the past the person reaches for, the whole they mean, the axes it can be
reached along; run every search `search` names; open each member of the leading recognizable
at the span the cue reaches; what each read returned enters the context → record the pass
[a recognizable whose story rests on opened records] present it
[nothing to present ∧ nothing yet added to the cue] one open question
[nothing to present ∧ something added to the cue] close: unresolved within the scope searched
next utterance u: c' := fuse(c, u) →
[u takes the presented recognizable as the past they meant] close: identified
[u reaches a recall other than this one (Elsewhere)] hold, the turn kept — holdReply
[u bears on this recall (Reaches)] pass(c') → round → the same reading
[otherwise — other work, or words that end the recall] the session answers it; no pass runs; the recall stays as it stood
no utterance: the recall holds; nothing is identified and nothing closes
-/
/-! ── MORPHISM ──
VagueRecall
→ detect(empty_intention) -- the person points at a past they cannot name; an invocation of their own activates on its own
→ cue(meant, whole, axes) -- what past, at which whole, along which axes: read from the utterance and the fused context, afresh on every utterance
→ find(records, cue) -- the records the past work left that may bear the cue, as `search` names them
→ ground(recognizable) -- open each member's own record at the span the cue reaches; the story is composed from what those records carry
→ present(recognizable) -- as The presentation lays it out
→ identify(recognizable, person) -- synthesis of identification (Husserl CM §18) fulfilling the empty horizon (CM §19): the person's observable act, never inferred from silence
→ emit(RecalledContext) -- the identified recognizable with its story, excerpts, locators, qualifications, the scope searched, and the doubts that stood, as session text
→ RecalledContext
requires: empty_intention(V) ∨ invoked(V) -- runtime checkpoint, read by `start` before the first pass
deficit: RecallAmbiguous -- activation precondition (Layer 1/2)
preserves: the records searched -- recall reads them and writes none; the context only grows
invariant: Recognition over Retrieval
invariant: the person identifies; opened records support what is presented; an index's gist is a cue and supports nothing
-/
namespace Anamnesis
/-! ── GROUND ──
The session primitive this contract reads.
-/
inductive Origin | person | assistant | external | peer | injected | unknown
deriving DecidableEq
/-- A turn is who sent it and what it says. What the turn does — a statement, a request, an
instruction, a report of what was observed — is read from its content, never stored here. -/
structure Turn (P : Type) where
origin : Origin
content : P
abbrev Context (P : Type) := List (Turn P)
/-- An origin that may ground: the harness says who sent a turn, and that is all this admits on.
The assistant's own turns, injected text, and turns of unknown origin ground nothing. -/
def Grounding := {o : Origin // o ≠ .assistant ∧ o ≠ .injected ∧ o ≠ .unknown}
/-- Any turn a person sent, whatever it does. -/
def Utterance (P : Type) := {e : Turn P // e.origin = .person}
def Response (P : Type) := {e : Turn P // e.origin = .assistant}
/-- A turn from outside the conversation: what a tool or the environment returned, or a peer's
report. A person's account of what they observed is an utterance, read as such. -/
def Evidence (P : Type) := {e : Turn P // e.origin = .external ∨ e.origin = .peer}
def fuse {P : Type} (c : Context P) (u : Utterance P) : Context P := c ++ [u.val]
/-- One turn of the context, with the origin it gro한국어 When AI collaboration goes off-track, you redo everything. These protocols bring the decisions that set the direction to you early — often at the plan level, before a wrong one hardens into code or other downstream work — and leave each one yours to
This skill should be used when the user asks to \"audit plugin encapsulation\", \"check self-containment semantics\", \"find…
This skill should be used when the user asks to \"formal review\", \"formal lens review\", or invokes /formal-review. A…
This skill should be used when the user asks to "run the outcome eval", "paired bare vs protocol", "which decisions did the…
This skill should be used when the user asks to "run the eval", "test whether the protocol actually works at runtime", "check…
This skill should be used when a contributor names a skill whose Lean contract is to be re-derived — a core protocol, or a…