Record Cut 2 and the two spec defects it exposed

Cut 2 landed at gamecult-ops 6aba281: the library test step now runs in
the deploy script, is documented in the runbook, and is asserted by the
wiring test. Without it a deploy would run 50 tests and skip the 420
kernel tests that moved to the library crate.

Two defects in this map's own spec, reported by Hands rather than worked
around:
- the assertion it specified was vacuous, because require_text is a
  substring match and the given string is a substring of the
  persona-projection line;
- the acceptance test path lives in a variable the spec did not list,
  pinned by the wiring test and repeated in the runbook prose.

Changing the acceptance binding means sealed acceptance witnesses from
before this commit will miss and regenerate.

Soul has not passed on Cut 2 yet.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Meta Vens 2026-09-16 02:35:06 +02:00
commit 1b409b3121

View file

@ -42,6 +42,21 @@ Soul found six defects. Triage:
`controller_work.v3` against code at `consumer.v4` and
`controller_work.v15`. Outside L0; it changes no behavior here.
Cut 2 landed at gamecult-ops `6aba281` (text only; nothing live was run).
The library test step is in the runbook, the deploy script, and the wiring
test, ordered as `recipe.toml` orders it. Two spec defects Hands reported
rather than redesigned: the assertion this map specified was vacuous
(`require_text` is `grep -Fq`, and the string given is a substring of the
persona-projection line, so it passed with the library step deleted), so
Hands used the file's existing exact-line helper and proved it fails under
deletion; and the acceptance test path lives in `acceptance_test=` at
`scripts/deploy-ghostlight-yggdrasil.sh:34`, a fourth site this map did not
list, pinned by the wiring test and repeated in the runbook prose. Operator
consequence: changing `acceptance_test` changes the acceptance binding, so
sealed witnesses under `/srv/ghostlight/acceptance/<binding-sha>/` from
before this commit will miss and regenerate. Soul has not passed on Cut 2
yet.
Open: **Q1-9 what sealing means.** A: restate invariant 1 as unforgeable
*admission* — external code may hold a syntactically valid ID or opportunity,
and the kernel must reject any it did not issue — and prove it with rejection