encapsulation
This skill should be used when the user asks to \"audit plugin encapsulation\", \"check self-containment semantics\", \"find…
The user cannot yet see what a task needs decided, or what to keep or entrust: they can then see each decision, what rests on it, its cost if wrong, what settled it, and what stays open and with whom.
$ npx -y skills add jongwony/epistemic-protocols --skill bound --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/boundContext preview
The summary Claude sees to decide when to auto-load this skill.
The user cannot yet see what a task needs decided, or what to keep or entrust: they can then see each decision, what rests on it, its cost if wrong, what settled it, and what stays open and with whom.
name: bound description: "The user cannot yet see what a task needs decided, or what to keep or entrust: they can then see each decision, what rests on it, its cost if wrong, what settled it, and what stays open and with whom."
Define epistemic boundaries through a recognizable whole map and progressive examination. Type: `(BoundaryUndefined, AI, DEFINE, TaskScope) → DefinedBoundary`.
/-!
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 ──
Horismos(T) → bound(c, o, utterances), where c is the fused session context and o is how the run
stands:
first round(c): c₀ := observed(c) [Tool] → readout(c₀) → present the whole map →
nothing awaits the person's disposition and no turn of theirs is owed: the boundary stands —
the turn that shows it is `converge` (an Extension), with its map, sources, and limits (an
acceptance in the invoking context accepts nothing before a map was shown)
otherwise: the round (`round`, an Extension); the run holds
next utterance u: c' := fuse(c, u) →
it does not bear on the boundary: the session answers it; the run stands as it was, a
holding run holding the context as it now stands
otherwise c'' := observed(c') [Tool] → read at c'', before your turn: the boundary stands where
no turn of the person's is owed and their acceptance reaches it or nothing awaits them; else
the run holds → the next round, or the boundary shown
no further utterance: the run as it stands — a holding run keeps holding, a boundary that
stands keeps standing; nothing is selected and nothing settles
-/
/-! ── MORPHISM ──
TaskScope
→ observe_and_read_whole_map
→ present_round ↺ fuse_utterance → observe -- while something awaits unaccepted, or a turn is owed
→ stand_where_accepted_or_nothing_awaits -- shown by `converge`; reachable from the first reading
→ DefinedBoundary
requires: boundary_undefined(T)
deficit: BoundaryUndefined
preserves: task_identity(T) -- the purpose and limits actually supplied, including their open coordinates and authorized revisions
invariant: Definition over Assumption
invariant: proposal-and-settlement-separation -- presence, inspection, silence, and work allocation settle nothing; a disposition is made only by a person's turn
-/
namespace Horismos
/-! ── 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 grounds on. -/
structure Cite {P : Type} (c : Context P) where
i한국어 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…