Skills carry the records they cite, and the map records what nothing checks - #197
Merged
Merged
Conversation
…checks Four skills vendor the records they cite as 31 byte-identical mirrors under <skill>/references/, so a skill directory resolves every citation it makes with no Trellis repo present: judge-composition takes 13, complexity-convocation 9, loop-orchestrator 5, self-play 4. Each folder's README.md is the manifest — canonical source path, bytes and SHA-256 per file, taken at 65fdb1f. Provenance sits in the manifest rather than in file headers, because byte-identity to the source is what makes the hashes verifiable and a header written into the file is the first thing to break it. No sync check is installed: these are portability snapshots, and the authority ordering decides every divergence — the record wins and a stale mirror is replaced from source, never edited. The mirrors carry relative links authored for their old home, so markdownLinks.excludePrefixes gains one prefix per mirror folder. All 173 broken links were confined to those folders and none sat elsewhere, so link checking stays live on every SKILL.md and skill README.md. density-chain C7 and C13 are densified to match. C7 carries the copy layer now sitting under the nine skills' DERIVED standing; C13 takes the exclusion array as a fresh instance of the exists-implies-named gap it already names. The HTML render is brought level in four places. Both sections grew — C7 +233 chars, C13 +338 — after two compression passes, because closing the remainder meant deleting recorded receipts. .claude/skills/README.md claimed ~/.claude/skills/ holds byte-identical mirrors; it holds symlinks into this directory. Corrected, with loop-orchestrator noted as in-repo only and harness-traps and spark-probe as user-level. fixtures/doubts_workspace/earth_figure_factbase.md is left unmirrored on purpose: self-play frames it as illustration kept short-lived, and a copy that travels is an example that anchors. Verified: npm test 119 files / 1424 tests green; check:repo-surface PASS (0 issues); wiki:check --verify PASS (751 paths routed, roster agrees three ways); the 31 mirrors re-hashed against source, that check watched red on a planted one-byte break and green on restore; each skill directory copied outside the repo with every citation and local link resolving.
OpenCnid
added a commit
that referenced
this pull request
Jul 30, 2026
One conflict, in C7: #197 rewrote that section to add the vendored record mirrors while this branch had rewritten it from the code. Resolved by keeping this branch's verified corrections and folding in the mirrors fact. The corrections kept, each re-checked against master's tree: `judge_panel.ts` cited at :38 and :464 rather than bare; the two user gates carry their real and differing flag names (`--confirm` and `--confirm-extraction`); the affirmation self-play's 8/8 attributed to its third round only, with its positive control recorded silent; the status ledger on the six declared labels. The mirrors fact folded in, recounted rather than carried: #197 added 31 mirrors to four skills, and spark-steering already held 2, so current state is 33 mirrors of 18 distinct records across five skills. T2 was densified back from 99 words to 92 to make room at the held budget.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What changed
Four skills vendor the records they cite as 31 byte-identical mirrors under
<skill>/references/, so a skill directory resolves every citation it makeswith no Trellis repo present.
judge-compositioncomplexity-convocationloop-orchestratorself-playThe gap was load-bearing, not cosmetic:
complexity-convocationcitesJUDGE_COMPOSITION_GAME.md §6rules by number and deliberately never restatesthem, so outside the repo "rule 4", "rule 12" and "rule 20" resolved to
nothing.
FOUR_JUDGE_BASIC_MODEL.mdsupplies the registries and YAML judgeschema the composer draws from.
Each folder's
README.mdis the manifest — canonical source path, bytes andSHA-256 per file, taken at
65fdb1f. Provenance sits there rather than in fileheaders, because byte-identity to the source is what makes the hashes
verifiable and a header written into the file is the first thing to break it.
No sync check is installed, by decision: these are portability snapshots.
The authority ordering in
.claude/skills/README.mddecides every divergence —the record wins and a stale mirror is replaced from source, never edited.
Contract narrowing
The mirrors carry relative links authored for their old home, so
markdownLinks.excludePrefixesgains one prefix per mirror folder. All 173broken links were confined to those folders and none sat elsewhere, so link
checking stays live on every
SKILL.mdand skillREADME.md.Records updated
density-chainC7 and C13 are densified in the commit that falsifies them(rule 22). C7 carries the copy layer now sitting under the nine skills' DERIVED
standing; C13 takes the exclusion array as a fresh instance of the
exists-implies-named gap it already names. The HTML render is brought level
in four places.
Nine further branch classes are stale against earlier commits
(
11335e7,5b1d0e5,65fdb1f) and are deliberately untouched here — rule 22puts each repair in the commit that falsified it, and rule 12 gives this change
one branch.
.claude/skills/README.mdclaimed~/.claude/skills/holds byte-identicalmirrors; it holds symlinks into this directory. Corrected.
Where this fell short
Both densified sections grew — C7 +233 chars, C13 +338 — after two
compression passes. Densify, never append asks for fixed length; closing the
remainder meant deleting recorded receipts, which is the wrong trade in a
document whose contract reads every number here is as recorded. Flagging it
rather than reporting a budget that was held.
DENSITY-CHAIN.mdcarries nomaxBytesin the root contract, so no ceiling was crossed.fixtures/doubts_workspace/earth_figure_factbase.mdis left unmirrored onpurpose:
self-playframes it as illustration kept short-lived, and a copy thattravels is an example that anchors.
Verification
npm test— 119 files / 1424 tests greennpm run check:repo-surface— PASS (0 issues); its link arm watched redat 173 issues before the exemption and green after
wiki:check --verify— PASS (751 paths routed, roster agrees three ways,render compiles)
one-byte break and green on restore (19(c))
link resolving — all 9 self-contained