diff --git a/SKILL.md b/SKILL.md index ce9cc6d..651e36a 100644 --- a/SKILL.md +++ b/SKILL.md @@ -72,7 +72,7 @@ finished when Hands can go straight to the cut. branch: its rationale, and the design truths the migration will produce. The `campaign` and the `target` cite it by `DocRef`, and a `DocRef` names a commit. -- Then admit the stewardships, the `campaign` and the `target` (Self's +- Then admit the `campaign` and the `target` (Self's checklist in `references/briefs.md`). The target holds the ends, not the means: labelled invariants that must survive (wire parity, one owner per decision, what the operator refuses to lose), and what is explicitly **not** a consumer. For @@ -114,7 +114,7 @@ different is not waste; discovering it after the code lands is. ### 1. Imagination maps the cut Brief an Imagination agent to admit the cuts: one `cut_spec` per cut against -the current Body, ordered by `depends_on`. The fields are the spec standard: +the current Body, ordered by `depends_on`, which names cut labels. The fields are the spec standard: repo, branch and base; `deletes` first, with exact paths and line counts; `keeps_moves`; `adds`; `file_changes` at `file:line` **for code that exists**; an `authority_map` for anything that changes ownership; `verification` (builds, diff --git a/references/briefs.md b/references/briefs.md index 8a1bda6..2a5aca7 100644 --- a/references/briefs.md +++ b/references/briefs.md @@ -62,12 +62,7 @@ Self's own checklist; Self admits as `SelfFaculty`. ``` Open: check the eureka-state tools are present, then whoami (the mind's instance document, :instance:self, already exists). Write the target -document and commit it on the working branch. For each repo in scope with no -stewardship in force, admit a stewardship (sequence = latest + 1). -Stewardship is universal today: one mind, one steward. The operator said on -2026-09-30 that leasing it between agents is a deferred cut. The per-repo -record exists only because admission requires it -(eureka-substrate:follow_up:gap-stewardship-ceremony). Then admit the campaign +document and commit it on the working branch. Then admit the campaign (slug, title, every repo a cut may touch, working_branch, target_doc = a DocRef to that commit) and target revision 1 (labelled invariants, not in scope, canonical implementations, doc = the same DocRef). Run the @@ -159,7 +154,7 @@ The cut_spec's fields are the spec standard. Beyond filling them: revision N by it, in one batch; never a second spec for the same cut If a cut would not fit one Hands pass under , split it into specs ordered by depends_on, each with its own +step 3>, split it into specs ordered by depends_on (cut labels), each with its own verification. Where only the operator can decide, admit a question with a recommended diff --git a/references/campaign-state.md b/references/campaign-state.md index 93daf27..f7dd1cc 100644 --- a/references/campaign-state.md +++ b/references/campaign-state.md @@ -28,7 +28,7 @@ The instance and the daemon are the server's configuration | `query` | `{ selection, semantic? }` | `{ matched, as_of, next, items, edges }`. `items` is `Headers([...])` or `Documents([...])`. | - `faculty` is one of `SelfFaculty`, `Imagination`, `Hands`, `Soul`, - `MindSteward`, `Eyes`, `Operator`. It is attribution, not authority. + `Life`, `Eyes`, `Operator`. It is attribution, not authority. - `agent` names the admitting agent. `session` is the campaign session label Self gives in every brief, so that sessions sharing one mind stay tellable apart. @@ -36,9 +36,13 @@ The instance and the daemon are the server's configuration kind in snake case (`cut_spec`). A reference is `{ "kind": "", "id": "" }`, with the kind in Pascal case (`CutSpec`). - **A refusal is an answer.** It names the rule, for example - `RepoNotStewarded`, `CitesResolvedDocument`, `ResolutionOutOfSequence` or + `CitesResolvedDocument`, `ResolutionOutOfSequence` or `PromiseWithoutVerdict`. Fix the batch and admit again. An exact replay - answers `AlreadyAdmitted`, so retrying a batch is safe. + answers `AlreadyAdmitted`, so retrying a batch is safe. A key, format or + bound error arrives as `Refused(Document(..))` with the field and value: + fix it and resend. `Refused(Unavailable)` means a store fault: retry once, + as for `isError` `Unavailable`. The retired faculty name for `Life` is + refused in query selections; stored receipts that carry it still decode. - **`isError: true` means no answer:** `Unavailable` (the daemon is down or unreachable), `Rejected` (it refused the envelope), `Misconfigured`, `TooLarge`, `Unencodable`, `InvalidInput` or `Internal`. @@ -72,11 +76,11 @@ mismatch. The root is the campaign slug, or the instance for `instance`, |---|---|---|---|---| | `instance` | `self` | exists (`eureka:instance:self`) | instance, display name, host | | | `stewardship` | `.n` | Self | instance, repo, sequence, note | | -| `campaign` | `self` | Self | title, repos (each stewarded), working branch, target doc | | +| `campaign` | `self` | Self | title, repos, working branch, target doc | | | `target` | `r` | Self | invariants (`label`, `statement`), not in scope, canonical implementations, doc | | | `question` | `