diff --git a/SKILL.md b/SKILL.md index 044296f..26f03cb 100644 --- a/SKILL.md +++ b/SKILL.md @@ -40,7 +40,7 @@ its own brief. A faculty that grades its own work has lost the point. | Faculty | Runs against | Admits | Must not | |---|---|---|---| -| **Imagination** | the Body (source, docs, probes), plus the target | `question`s and `cut_spec`s specified to `file:line`, and `follow_up`s for work no cut owns; body facts and rationale go to the prose map | commit code, choose a product fork silently | +| **Imagination** | the Body (source, docs, probes), plus the target | `question`s and `cut_spec`s specified to `file:line`, and `follow_up`s for work no cut owns; body facts, the model page and rationale go to the prose map | commit code, choose a product fork silently | | **Hands** | one `cut_spec` | small pushed commits, then one `cut_report` | redesign the spec, work around a fork | | **Soul** | Hands' *executed* commits | one `verdict` and its `finding`s | edit or commit a repo, or review a plan (a pass on a plan is Imagination) | | **Life** | memory surfaces | nothing: named mutations and proposals | touch Body code, restate what an owner records | @@ -265,8 +265,8 @@ nothing is pasted or paraphrased. The brief says: `mutations` (at most 64) holds every survivor and the kills Soul should rerun; the totals (generated, caught, unviable, missed) go in its `verification` evidence. Each survivor also gets a `deviations` entry with - its triage, because the mutation record has no field for it (a substrate gap - in `references/campaign-state.md`). Soul reruns the tool on the range rather + its triage, because the mutation record has no field for it (substrate gap + `idunn-watchdog:follow_up:gap-mutation-triage-field`). Soul reruns the tool on the range rather than trusting Hands' triage. - **No committed hand-written mutation suites, and no fallback harness.** The operator ruled this on 2026-09-22: "Better to have nothing than a @@ -460,7 +460,7 @@ and reconciles the target doc with the Body. store. Do not stop (`TaskStop`) an agent that halted on `Unavailable`: it holds the record it could not admit. Resume it when the organ answers. - **Keep the prose map current.** After a ruling changes a design, sweep the - map's body facts and rationale, and the target doc, for the old version the + map's body facts, model page and rationale, and the target doc, for the old version the same day. The specs and rulings need no sweep, because their resolutions already say what is in force. - **One owner per decision, in code too.** When Hands moves a decision partway, for @@ -506,7 +506,8 @@ and reconciles the target doc with the Body. the missing thing or route work to it: work around it and leave evidence. The evidence is a `follow_up` whose source is the document where the run felt the gap, and whose owner is the missing thing's owner. The gaps already known are - listed in `references/campaign-state.md`. + follow-ups in the mind; "Substrate gaps" in `references/campaign-state.md` + gives the query and where a new one is admitted. - **Never claim an agent's result before its notification arrives.** ## Git and tooling rules (scars) diff --git a/references/briefs.md b/references/briefs.md index 6fa864f..5a78932 100644 --- a/references/briefs.md +++ b/references/briefs.md @@ -54,12 +54,16 @@ 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). 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). -In the first campaign, admit a follow_up for each substrate gap listed in -campaign-state.md. +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 +(idunn-watchdog:follow_up:gap-stewardship-ceremony). 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 +substrate-gaps query in campaign-state.md, so the campaign starts knowing +which workarounds are in force. Rule: for each operator answer, a ruling (answers, choice, authority, and operator_quote when the words matter). A direction that answers no question is @@ -115,8 +119,10 @@ You are Imagination for . Admit a cut_spec for so Hands can go straight to the cut with little reading. Admit only cut_specs, their superseding resolutions, and questions. In the -prose map at , edit only body facts and rationale. Do not commit; the -root agent commits. Do not change code in any repo. Scratch probes in +prose map at , edit body facts and rationale. Also edit the model page +whenever a probe changes a row's identity, lifecycle or authority. Imagination +wrote that page in 0b, and a model a cut contradicts is stale steering text. +Do not commit; the root agent commits. Do not change code in any repo. Scratch probes in are fine. Rehydrate (recipes: target in force, rulings in force, open questions and diff --git a/references/campaign-state.md b/references/campaign-state.md index 8c343af..a9a50ef 100644 --- a/references/campaign-state.md +++ b/references/campaign-state.md @@ -286,21 +286,33 @@ reading its verdicts and findings, check that `admission.provenance.faculty` is ## Substrate gaps -The skill works around each of these, and Self admits each as a `follow_up` -(source: the campaign, owner as named) in the first campaign, so the gap is -counted rather than forgotten. Add to this list when a run works around -something new. +The known gaps in the mind's substrate are `follow_up`s in the mind, not a +list on this page. Each one names the gap, its owner, and in +`why_it_can_wait` the workaround the skill uses meanwhile. The workarounds +that steer agents are also written into the step or brief that applies them. +Examples are the mutation triage in `deviations`, the ruling id at the start +of a claim, and the retry on `Unavailable`. -| Gap | What the skill does meanwhile | Owner | -|---|---|---| -| `faculty` is attribution only. Admission does not check that verdicts and findings come from Soul, or that rulings come from Self. | Recipes filter `faculty`, and readers check provenance. | Huginn admission, with the Epiphany schema owner | -| `MutationRecord` has no field for why a survivor is equivalent, and a report holds at most 64 mutations. | `mutations` holds the survivors and the kills Soul should rerun; the totals (generated, caught, unviable, missed) go in `verification` evidence. Each surviving mutation gets one `deviations` entry (`what`: its label; `why`: the triage). Deviations hold at most 32, so more survivors than that means the cut was too big. | `epiphany-pipeline` | -| A `cut_report` needs a commit (`range.head`), so a pass that stops at a fork before its first commit leaves no report. | Hands admits only the question and reports its id. The blocked-spec check reads it. | `epiphany-pipeline` | -| The faculty enum says `MindSteward`; the faculty is Life. | Life admits nothing, so nothing is mislabelled today. | `huginn-mind` | -| A verdict claim cannot reference a ruling: `VerdictClaim` has `promise: Option