Repository navigation
docs(qa): 18.0 sweep anchor round 20 — the area fixture recipes name the own-port boot by its port and file DB - #25043
Conversation
Eleven strings in five area-level `fixtures` recipes (attachments-storage,
automation, records-forms, search) still called the dogfood section-0 boot
"an isolated boot" and its DB "the isolated file DB", the spelling a runner
read as the `isolated` tenancy posture. They now read "a boot on its own
port and file DB" and "the run's own file DB", the voice the items already
use. qa-flow-status-doors.requires[2] now points at RUNNER.md's connector
entry by words its title carries ("own-port/OS_PORT connector standing
fact") instead of "isolated-boot".
Recipes carry no revision or history of their own, so only the strings
change. Edited by a script that re-parses each file and asserts that only
the named strings moved and every byte outside them is identical.
Claude-Session: https://claude.ai/code/session_01FM29ZqLTrnPNXxijioZwMp
Co-authored-by: Claude <noreply@anthropic.com>
Seat reviewACCEPT ·
This seat readies the PR and queues it with auto-merge. With it, the ledger's own-port-boot respelling begun in round 12 is complete across items, recipes and Generated by Claude Code |
Refs #24579
Clause-②: no
Round 20 of the 18.0 sweep's wave anchor (claim
6307282355, PM loop round 35). It applies round 19's carried finding, PR #25027's out-of-scope finding as its ACCEPT6306169987and landing record6306857223carry it.Only checklist text changes: 11 strings in the area-level
fixturesrecipes of four area files, five recipes in all. No item changes, no top-level key other than those recipe strings moves, and there is no product code, test, pin, changeset text orRUNNER.mdedit.d68aab6fde(origin/mainwhen the branch was cut).origin/mainhas since moved one commit todfe60e3a0c, which touches onlypackages/coreand a changeset, none of it cited by the ledger.60fccd21ef, one commit.The recording rule, as read
docs/qa/platform-checklist/README.mdgives a recipe no revision or history of its own. The recipe shape ("Half 1 — the recipe") lists$comment,title,why,provenance,app,requires,sequence,teardownandknownGaps.revisionandhistoryare item fields: the Lifecycle section's "Change" rule ("edit the fields, bumprevision, append ahistoryentry") is about items. The validator's own comment says the same ("recipes carry norevision/historyof their own",scripts/check-platform-checklist.mjs), and none of the five recipes on disk carries either key. So only the strings are edited here. No revision field is added, and no item'srevisionorhistorymoves.What changed
The respelling uses the voice rounds 17–19 landed: "an isolated boot (own port + file DB, …)" becomes "a boot on its own port and file DB (…)", matching
access-security's round-17 rows. "discard the isolated file DB … an isolated boot makes free" becomes "discard the run's own file DB … a boot on its own port and DB makes free", matchingplatform-core.manifest-install-contractsteps[9], round 17. Each parenthetical keeps the dogfood section-0 pointer as its file spelled it ("dogfood skill §0" or "dogfood §0"). Only the fragments below change; the rest of each string is byte-identical.attachments-storage.jsonqa-scratch-authzrequires[2]an isolated boot (own port + file DB, dogfood skill §0)→a boot on its own port and file DB (dogfood skill §0)attachments-storage.jsonqa-scratch-authzteardowndiscard the isolated file DB, … the one an isolated boot makes free→discard the run's own file DB, … the one a boot on its own port and DB makes freeattachments-storage.jsonqa-media-constraintsrequires[1]an isolated boot (own port + file DB, dogfood skill §0)→a boot on its own port and file DB (dogfood skill §0)attachments-storage.jsonqa-media-constraintsteardowndiscard the isolated file DB, the cheaper path an isolated boot makes free→discard the run's own file DB, the cheaper path a boot on its own port and DB makes freeautomation.jsonqa-flow-status-doorsrequires[1]an isolated boot (own port + file DB, dogfood §0)→a boot on its own port and file DB (dogfood §0)automation.jsonqa-flow-status-doorsrequires[2](RUNNER.md, the isolated-boot/OS_PORT standing fact)→(RUNNER.md, the own-port/OS_PORT connector standing fact)automation.jsonqa-flow-status-doorsteardowndiscard the isolated file DB, the cheaper path an isolated boot makes free→discard the run's own file DB, the cheaper path a boot on its own port and DB makes freerecords-forms.jsonqa-feeds-disabledrequires[1]an isolated boot (own port + file DB, dogfood skill §0)→a boot on its own port and file DB (dogfood skill §0)records-forms.jsonqa-feeds-disabledteardowndiscard the isolated file DB, … the one an isolated boot makes free→discard the run's own file DB, … the one a boot on its own port and DB makes freesearch.jsonqa-contributor-bound-memberrequires[2]an isolated boot (own port + file DB, dogfood §0)→a boot on its own port and file DB (dogfood §0)search.jsonqa-contributor-bound-memberteardowndiscard the isolated file DB — the cheaper path an isolated boot makes free→discard the run's own file DB — the cheaper path a boot on its own port and DB makes freegit diff --stat: 4 files, 11 insertions, 11 deletions.The re-pointed pointer (
qa-flow-status-doors.requires[2]). RUNNER.md's connector entry is now titled "A boot on its own non-3000 port breaks the showcase's self-pinging connectors unless you exportOS_PORT…". The new pointer names it by words that title carries: own, port,OS_PORTand connector. "standing fact" is kept, because it is the section's own word: the entry sits under "Environment facts the runner should not re-derive", whose intro calls them "Standing facts about the stock showcase environment". The sibling item textautomation.jsonalready uses the same form ("RUNNER.md's connector self-URL standing fact").isolatedleft in the four files' recipesRead over every string under each file's top-level
fixturesblock, the$commentannotations included, at the head:isolatedrecords-forms.jsonqa-feeds-disabled·sequence[1].expectNo posture text was in any of the five recipes, so none was touched.
Items citing a changed recipe string verbatim: none. Every area file's items were searched for each old fragment. Three history rows carry the same phrasing:
access-security.rls-both-sidesandaccess-security.record-share-grant-revokehistory[6], andplatform-core.manifest-install-contracthistory[5]. Each quotes its OWN item's old step text, not a recipe string, so nothing is reported under that rule. Outsideareas/,git grepfinds no file quoting any old fragment.How the edits were made and checked
A one-off script (sha256
52f33dacca5c…, kept out of the tree) tokenizes each file to the byte span of every string value by JSON path. It edits only the 11 named spans and re-encodes each new value in the file's own style. It never re-serialises a file. Its assertions, all run in a dry run and again on the bytes re-read from disk after--write:isolat;itemsequal, every other top-level key equal, every other recipe equal, and every other field of an edited recipe equal;isolatcount drops by exactly the named strings' hits (6, 4, 3, 3).The assertions were shown to fire first: three faults injected into the in-memory result (an item title edit, a whitespace-only change outside the spans, an edit to an unnamed recipe field) were each caught by the intended assertion. A separate per-file count against the base agrees: each old fragment goes from N to 0 and each new one from 0 to N, in the same files.
Gates
node scripts/pm/dispatch-gates.mjs --commands --repo objectstack-ai/objectstackderives 13 commands on the 4 paths, against merge based68aab6fdoforigin/main. At head60fccd21efeach was run with its exit code captured before any pipe, and each exited 0:node scripts/check-ci-filter-parity.mjs·node scripts/check-closing-keyword-parity.mjs·node scripts/check-closing-keyword-parity.mjs --self-test·node scripts/check-comment-mask-corpus.mjs·pnpm --filter @objectstack/lint run check:doc-formula-expressions·pnpm check:cross-package-test-inputs·pnpm check:doc-authoring·pnpm check:driver-memory-census·pnpm check:gitlink-declared·pnpm check:nul-bytes·pnpm check:platform-checklist·pnpm check:refd-timer-probe·pnpm check:watch-hint-literalThe first run of
check:doc-formula-expressionsrefused with exit 3, a prerequisite:@objectstack/formulaand@objectstack/lintwere not built in this worktree. Both were built under the shared verify lock (VERDICT command-exit 0, a full turbo cache replay, held 1 s, waited 0 s), and the rerun exited 0.--ran, with an exit code on every line, reads "13 derived, 13 run, 0 NOT-MEASURED, 0 UNRUN", a derived zero.No per-PR CI job runs
pnpm check:platform-checklist, so this local reading is its evidence. The base column was taken in this worktree at the base, before any edit:d68aab6fde60fccd21efNo anchor, citation or recipe key is added or removed.
main's one later commit touches no file the ledger cites.git merge-tree --write-treeexited 0 against each of:origin/maindfe60e3a0c;356172a1f9(its onlydocs/qa/file isFOLLOW-UPS.md).None of these paths is routed to the
os-regenmerge driver (merge: unspecified).There is no ablation, because no tested behaviour changed.
skip-changesetwas re-measured. Nofiles[]entry of the 73 non-private manifests (86 trackedpackage.jsonfiles) reaches outside its own package or namesdocs/qa, and the repo root is private. The twodocs/qamentions underpackages/(service-settingsconfig-change-audit.ts, andpackages/lint's gate script) are comments, not copies. A grep of the built dists on disk for the edited recipe keys finds none, with a positive control hit inpackages/spec/dist.Acceptance notes
automation.flow-error-handlingfixtures.requires[0](an item, not on this round's surface) saysapi.example.comis "unroutable from the isolated env, so the failure is deterministic". Thatisolatedmeans the network-isolated (no-egress) environment. It is a third sense: neither the own-port boot nor the tenancy posture. Noted, not filed; no carrier.qa-contributor-bound-member.requires[2]'s pointer "(RUNNER.md's connector self-URL fact)" is left as it was. "connector" is a word of the entry's title and "self-URL" names its resolver, and the ruling named onlyqa-flow-status-doors's pointer for re-pointing.Generated by Claude Code