Substrate gaps live in the mind; Imagination owns the model page
The gap table in campaign-state.md duplicated eight typed follow-ups; it now gives the query instead. The first campaign no longer admits the list; every campaign runs the query. Imagination edits the model page when a probe changes a row. Stewardship is universal (operator, 2026-09-30). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
parent
bdb9dfdaff
commit
e96c482940
4 changed files with 78 additions and 27 deletions
11
SKILL.md
11
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)
|
||||
|
|
|
|||
|
|
@ -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>: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 <migration>. Admit a cut_spec for <cut or cuts> 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 <path>, 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 <path>, 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
|
||||
<scratchpad> are fine.
|
||||
|
||||
Rehydrate (recipes: target in force, rulings in force, open questions and
|
||||
|
|
|
|||
|
|
@ -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<Label>` and no ruling reference. | Soul starts each ruling claim's text with the ruling id. | `epiphany-pipeline` |
|
||||
| A cold semantic embed after an idle spell exceeds the client's 15 s deadline. | Retry `Unavailable` once. | Huginn, with the embedder |
|
||||
| No tool supplies the session's id. | Self picks a session label and passes it in every brief. | `eureka-state` |
|
||||
| The reports-with-no-verdict hop cannot filter the citer's faculty. | Soul's queue is checked against the verdict's provenance. | CultNet selection |
|
||||
Every follow-up is rooted in a campaign, so no substrate-rooted home exists
|
||||
yet (`idunn-watchdog:follow_up:gap-substrate-followups-campaign-rooted`).
|
||||
Until one does, substrate gaps live under the first typed campaign,
|
||||
`idunn-watchdog`, with labels starting `gap-`:
|
||||
|
||||
```json
|
||||
{ "selection": { "schemas": ["epiphany.pipeline.follow_up.v2"],
|
||||
"fields": [{ "index": "root", "op": "any_of", "values": ["idunn-watchdog"] },
|
||||
{ "index": "in_force", "op": "any_of", "values": ["true"] }] } }
|
||||
```
|
||||
|
||||
- **When a run works around a gap that is not there,** Self admits a new
|
||||
`gap-<name>` follow-up under that root. Its source is the document where the
|
||||
run felt the gap, and its owner is the missing thing's owner.
|
||||
- **When a run hits a gap that is already there,** it admits nothing new. The
|
||||
run records the recurrence where it happened: a report's `deviations`, or the
|
||||
prose map. The count lives in that evidence until the follow-up kind can
|
||||
carry it.
|
||||
- **Do not copy the list back here.** A table on this page is a second copy, and
|
||||
it goes stale the day an owner fixes a gap.
|
||||
|
||||
## The prose map
|
||||
|
||||
|
|
|
|||
|
|
@ -2,6 +2,38 @@
|
|||
|
||||
Record each change to the skill together with the evidence that motivated it.
|
||||
|
||||
## 2026-09-30: substrate gaps are read from the mind, and Imagination owns the model page
|
||||
|
||||
The first typed campaign, `idunn-watchdog`, admitted the eight gaps from
|
||||
`campaign-state.md` as follow-ups, as the Self checklist said. That left the
|
||||
same eight facts in two places: the typed follow-ups and the page's table. The
|
||||
table would go stale the day an owner fixed a gap, and the skill forbids
|
||||
exactly that second copy. It also showed that a follow-up is keyed to its
|
||||
campaign, so the next campaign's recipe could not see the gaps at all
|
||||
(`gap-substrate-followups-campaign-rooted`).
|
||||
|
||||
In the same run, Imagination's cut pass found that incidents must live in their
|
||||
own file rather than in Idunn's `control.cc`. That merged two rows of the model
|
||||
page. The cut-mapping brief allowed Imagination to edit only body facts and
|
||||
rationale, so it handed the stale page to Self. That was the page it had
|
||||
written itself in 0b.
|
||||
|
||||
The operator also stated that stewardship is universal: "there is only one
|
||||
Mind, one steward. Leasing stewardship between agents is a deferred cut".
|
||||
|
||||
What changed:
|
||||
- **`campaign-state.md`:** "Substrate gaps" no longer carries a table. It gives
|
||||
the query for the `gap-*` follow-ups under `idunn-watchdog`, and says where a
|
||||
new gap is admitted and how a recurring one is recorded.
|
||||
- **`SKILL.md`:** the two references to that table now point at the mind.
|
||||
- **Self's checklist:** the first campaign no longer admits the gap list. Every
|
||||
campaign instead runs the substrate-gaps query. The checklist also records
|
||||
that stewardship is universal and that the per-repo record only satisfies
|
||||
admission.
|
||||
- **The cut-mapping brief:** Imagination edits the model page whenever a probe
|
||||
changes a row. The faculty table and the same-day sweep line now name the
|
||||
model page.
|
||||
|
||||
## 2026-09-22: the hand-written mutation harness is retired, with no fallback
|
||||
|
||||
The operator said: "The manual mutation testing turned out to be a terrible
|
||||
|
|
|
|||
Loading…
Reference in a new issue