Development record
The iss-35 brief-surface crosscheck does not converge on a clean run. Three
The iss-35 brief-surface crosscheck does not converge on a clean run. Three armings against this repository, each at full tier over the pinned 37 checkers:
| Round | Findings | After |
|---|---|---|
| 1 | 246 | the prose rewrite |
| 2 | 137 | 134 fixed across 39 files |
| 3 | 109 | this record |
Round 3 ran against a tree in which round 2's findings had been fixed and verified, so the 109 are very largely claims no previous round reported. The detector is sampling a large prose corpus, not enumerating a fixed defect list, and each honest run draws a different sample.
Fixing rounds are not monotonic
Round 3 found a false claim that round 2 introduced. Round 2's finding 8 said
that disembark review "takes and reads a source repo" and that no test
fingerprints it. The first half is false: ReviewLifeboat gates the source as a
real directory and takes filepath.Base for the attestation, and its own header
says the content is never read
(internal/core/lifeboat/synthesis_review.go:11-14, :90-100), which
commands/disembark.md:211-213 states too. The round-2 fix corrected the
evidence half and carried the false half into the record. It is repaired in the
same change that files this record.
That is the load-bearing observation. A round of fixes closes most of what it touches and opens a little, so the tail is not simply long: it is fed.
What this is not
Not a defect in the detector. Its findings verify: across rounds 2 and 3 the confirmed rate was above 95 per cent, with three refutations in 137 and every refutation caught by adversarial triage rather than by the detector recanting.
Not a gate that fails to gate, either. iss-122 pinned scope and depth and
deliberately left the pass threshold out: receipt_gate refuses a manifest
mismatch, an insufficient tier, and a finding with no disposition, and routes
confirmed findings to the maintainer, whose PROMOTE with recorded dispositions is
the gate. Three releases have shipped that way. The design is sound and the
release path is not blocked by this record.
What is actually owed
A systematic pass over the design record rather than another sampling round. The brief's surface chapters were largely written ahead of the code and have been corrected reactively ever since, which is why a fresh sample keeps finding material. Candidate shapes, in rising order of cost:
- Grind the corpus chapter by chapter with the binary open, one chapter to a session, until a chapter's claims are all checked rather than all sampled.
- Move the checkable claims out of prose into generated tables, so a verb list, a flag list or a count cannot drift by being retyped.
- Mark, per chapter, the date its claims were last verified end to end, so a reader can tell a checked chapter from an unchecked one.
Acceptance
- Given the design record after the pass, when the crosscheck runs at full tier, then the finding count is stable across two consecutive armings against an unchanged tree, rather than drawing a fresh sample each time.
- Given a chapter that has had the pass, when a reader opens it, then they can tell when its claims were last checked against the binary.
Deferral 2026-09-29
Deferred past v0.11.1: the 16 deferred findings are paid (lane drainBrief); owed: two stable full-tier crosscheck armings, run by the orchestrator with the person's opt-in
Deferred findings paid 2026-09-29
The v0.10.0 gate's receipt
(.abcd/work/reviews/64ea8f62201970b9b242b59d0b7e7aab4c3d5baa/iss35-brief-surface-crosscheck.json)
does not mark which findings its classification deferred here, so lane drainBrief
(autonomous run A) reconstructed the set by that classification's own test: a
false-claim or stale-count about the existence, name or set of a flag or
sub-verb, in 01-product, 02-constraints, 05-internals or the glossary. Exactly
sixteen findings meet it. Each was checked against the code at ad2b3f0d4; the
fixes are c6199530e, and the file:line cites the tree after it.
| Finding | Claim | Disposition |
|---|---|---|
| x-120 | disembark <source-repo> to <dest> |
Already fixed before the base: every cited site reads disembark pack <source-repo> <dest>, the shape internal/surface/cli/cli.go:968 registers |
| x-121 | a launch dry-run sub-verb |
Fixed: 01-product/01-press-release.md:41, 05-internals/09-provenance-substrate.md:83 name the --dry-run flag (cli.go:380-388; the preview exits 0, cli.go:425) |
| x-122 | bare launch shows status and help; a dry-run sub-verb |
Fixed: 01-product/02-context.md:10 (bare launch refuses, cli.go:388) |
| x-123 | embark scan sub-verb |
Fixed: 01-product/02-context.md:9 (embark registers from and probe, cli.go:1218, cli.go:1236) |
| x-124 | the seven-command "ships" list, intent grill, no hold/unhold |
Fixed: 01-product/02-context.md:5 points at the generated CLI reference, :11 and :15 (hold and unhold at cli.go:2464, cli.go:2491) |
| x-125 | press release: intent consistency, grill, refine, shape shipped |
True at the base: 01-product/01-press-release.md:26 marks grill and shape designed and not built, and consistency is registered (internal/surface/cli/intent_consistency.go:26) and files one capture per finding (:16-21) |
| x-127 | embark from --archive, embark scan --deep |
Fixed: 02-constraints/01-platform.md:23, :28-29 (from takes no flags of its own, cli.go:1236-1237); the embark voyage record in the same paragraph was false too, and is marked a design target with them |
| x-128 | memory ingest --reingest |
Fixed: 05-internals/09-provenance-substrate.md:48 (the flags are --keep-original and --pages-json, cli.go:5526-5530) |
| x-129 | a bundle is planned by intent plan itd-A itd-B --bundle <name> |
True at the base: cli.go:2259-2263, internal/core/intent/bundle.go:88; the stale "itd-34, planned" markers beside it are fixed at glossary/core/bundle.md:18 and glossary/core/record-families.md:25 |
| x-130 | the family table names intent reclassify, abcd build and drain; the step entry names abcd build and implement step |
True at the base: cli.go:2588, internal/surface/cli/build.go:83, internal/surface/cli/drain.go:27, build.go:304, and the family table no longer names them; glossary/core/step.md:18 said the build lands steps, which the loop does not yet carry (internal/core/implement/loop/loop.go:134-138), fixed |
| x-136 | intent grill under the "ships" heading |
Fixed: 01-product/02-context.md:15 marks it designed and not built |
| x-137 | press release: consistency and shape |
True at the base, as x-125 |
| x-138 | disembark ... to <dest>; a dry-run sub-verb |
Fixed: 01-product/02-context.md:8 names plan (cli.go:943); the same claim in glossary/core/disembark.md:33, fixed |
| x-139 | bare embark shows status and help; scan |
Fixed: 01-product/02-context.md:9 |
| x-140 | bare launch; /abcd:launch dry-run in an acceptance criterion |
Fixed: 01-product/02-context.md:10, 01-product/01-press-release.md:41 |
| x-141 | intent's shipped sub-verbs omit hold and unhold |
Fixed: 01-product/02-context.md:11 |
Found beside them and fixed: glossary/core/voyage.md:71 named a file list, an
oracle backend and a verdict on each voyage line (ef1c8fee9; the line is
internal/core/lifeboat/voyage.go:31-41), and glossary/distribution/release.md
named a launch ship --force that the command does not have (c80832f97).
Seen and not paid here, each outside the sixteen: the intent grill usage
examples in glossary/core/intent.md:37-38 and glossary/core/persona.md:37;
"11 adapters" in 01-product/04-scope.md; bare /abcd:ahoy "shows status+help"
and launch ship "update the marketplace entry" in 01-product/02-context.md;
and the other forty-two v0.10.0 findings in these four directories, among them
x-083 to x-100 in 02-constraints/04-naming.md and
05-internals/03-configuration.md, which other branches were editing at the
time. The two stable armings the acceptance asks for are not run: they fan out
the pinned checkers and are the orchestrator's to arm, with the person's opt-in.
Evidence 2026-10-08
The v0.13.3 full-tier crosscheck (46 checkers over 41 brief documents and 5 surfaces) recorded 74 minor brief discrepancies, all deferred here: 50 false claims, 11 fictional layouts, 10 stale counts, 2 undocumented surfaces and 1 criterion violation. Each is listed with its location in the committed receipt .abcd/work/reviews/ecef2bf2a46f5f95fbc55ba88b09eff1907a16c6/iss35-brief-surface-crosscheck.json (failing[]). Two examples from the verb-tree checker: 05-internals/08-skills.md says five verbs have no command page where statusline makes six, and 02-constraints/04-naming.md says two verbs refuse when run bare where launch, decide and build make three.
Frontmatter
| id | iss-2609091956001547 |
|---|---|
| type | issue |
| lifecycle | open |
| severity | major |
.abcd/work/issues/open/iss-2609091956001547-the-brief-surface-crosscheck-returns-a.md
open on GitHub ↗ · commit history ↗
mentions11
- dcn-26092400000000032026-09-24 — Release v0.10.0 is cut by autonomous run A, and the run's agenda line is: approve the publish step. Under ruling A2 of the product thinker's run A interview (2026-09-23 07:52Z, "approve the publish step": the product thinker authorises the run to approve the release environment itself once every gate is green), the run approves the `release` environment's deployment of v0.10.0 only after the merge queue, the verify job and every other gate on the tagged commit report green, and stops with a handover instead if any does not. The cut: v0.10.0, impact breaking, 43 records since v0.9.0 (nine shipped intents, thirty-four resolved or declined issues, four of them breaking), content commit 64ea8f62, the composer's payload accepted on the first ingest and recomposed once for two docs-currency findings. Both semantic gates ran at tier full: docs-currency-reviewer (Fable 5.1) with three findings, two fixed and one deferred because the load check's intent stays planned pending the product thinker's ruling on the stray definition (iss-2609231947544298); the brief-surface cross-check (40 pinned checkers, Opus 5.5, four at a time under the run's ceiling) with 154 findings, all deferred to their records: four user-facing ones captured as iss-2609240519413467, iss-2609240519418856, iss-2609240519471816 and iss-2609240519427388, one inside an appendix chapter captured as iss-2609240519422232, which records itd-147's ac-6 as not met, and the design-record drift to the systematic brief pass iss-2609091956001547.
- dcn-26092600000000012026-09-26 — Release v0.11.0 is cut by autonomous run A, and the run's agenda line is: approve the publish step. Under ruling A2 of the product thinker's run A interview (2026-09-23 07:52Z: the run approves the release environment itself once every gate is green) and the product thinker's releases ruling of 2026-09-25T08:04:52Z ("cut additional releases if that makes sense, but bundle multiple intents for it"), the run approves the `release` environment's deployment of v0.11.0 only after the merge queue, the verify job and every other gate on the tagged commit report green, and stops with a handover instead if any does not. The cut: v0.11.0, impact breaking (decided by itd-2609212130136102, the verb consolidation, whose five surface removals the guard names), 193 records since v0.10.0: eleven shipped intents (ten additive, one breaking) and 182 resolved or declined issues (108 fixes, three additive, 71 internal and outside the changelog); two major findings pass on their recorded deferrals (iss-2609250834251447, iss-2609251824244354). Content commit 9ef24744, on top of ae116575, which the docs-currency gate's findings required. Both semantic gates ran at tier full. docs-currency-reviewer (Fable 5.1) read the first roll and found four: the install one-liners ended on the retired `abcd version`, which v0.11.0 refuses with exit 2 (major; fixed in ae116575), a CONTRIBUTING wording (fixed there too), and two changelog lines recomposed by the composer; the guard gap behind one of them is captured as iss-2609260543090196. The brief-surface cross-check (40 pinned checkers, Opus 5.5, at most four alive) found 130, all real at the content commit by an independent classification (Fable 5.1): the eight user-facing and four behaviour findings are captured as nine minor records (iss-2609260552249742, iss-2609260552247395, iss-2609260552246303, iss-2609260552247252, iss-2609260552256523, iss-2609260552256401, iss-2609260552250826, iss-2609260552254288, iss-2609260552251398), and the design-record drift goes to the systematic brief pass iss-2609091956001547. Landed before the cut on the cutting session's ruling: #717 (the shell guard cluster) and #718 (the race lane's declared timeout, after #717 was ejected from the merge queue by the default ten-minute package timeout).
- dcn-26092800000000022026-09-28 — Release v0.11.1 is cut by autonomous run A, and the run's agenda line is: approve the publish step. Under ruling A2 of the product thinker's run A interview (2026-09-23 07:52Z: the run approves the release environment itself once every gate is green) and the product thinker's releases ruling of 2026-09-25T08:04:52Z ("cut additional releases if that makes sense, but bundle multiple intents for it"), the run approves the `release` environment's deployment of v0.11.1 only after the merge queue, the verify job and every other gate on the tagged commit report green, and stops with a handover instead if any does not. The cut: v0.11.1, impact additive (no breaking record since v0.11.0; the run had been calling it v0.12.0 until `launch ship` derived the version), 354 records since v0.11.0: eighteen shipped intents, all additive, and 336 resolved or declined issues (228 fixes, eighteen additive, 90 internal and outside the changelog); the release guard and the findings guard passed with no waiver. Content commit 8a6c83d5, on top of 9ead1d1bf, which the docs-currency gate's findings required. Both semantic gates ran at tier full. The docs-currency-reviewer (Fable 5.1) read the first roll 7c7f5525 and found four minor findings (two stale terminology rows, a README sample status line no state renders, and the root command sentence missing three dispatched record families), all fixed in 9ead1d1bf. The brief-surface cross-check (44 pinned checkers, Opus 5.5, at most four alive) found 127; an independent classification (Fable 5.1) found 126 real at the content commit: the two user-facing and three behaviour findings are captured as four records (iss-2609282105240689, iss-2609282105242542, iss-2609282105241960, iss-2609282105240081), the one major among them, the guard registry passing a bare `rm -rf /` (iss-2609282105242542), deferred out loud past v0.11.0 because it already shipped in v0.11.0 and a registry change needs its own tests and review, all four to be fixed in the first lane after the tag; the design-record drift goes to the systematic brief pass iss-2609091956001547. Landed before the cut on the cutting session's ruling: #736 (integration branch 11); integration branches 12, 13 and 14, reviewed and ready, hold until the tag and fall into the next release.
- dcn-26093000000000282026-09-30 — Release v0.12.0 is cut by autonomous run A, and the run's agenda line is: approve the publish step. Under ruling A2 of the product thinker's run A interview (2026-09-23 07:52Z: the run approves the release environment itself once every gate is green) and the product thinker's releases ruling of 2026-09-25T08:04:52Z ("cut additional releases if that makes sense, but bundle multiple intents for it"), the run approves the `release` environment's deployment of v0.12.0 only after the merge queue, the verify job and every other gate on the tagged commit report green, and stops with a handover instead if any does not. The cut: v0.12.0, impact breaking (three breaking records, iss-2609251324599468, iss-2609291313276243 and iss-2609292359485570, and five removed command spellings the release guard found and the records declare), 281 records since v0.11.1: eleven shipped intents, all additive, and 270 resolved or declined issues (171 fixes, nineteen additive, three breaking, 77 internal and outside the changelog); the release guard passed, and the findings guard passed with the one major carried past v0.11.1 on its recorded deferral (iss-2609281134544802). Content commit fecdbed5, on top of 4b8ff2afa, e8d5d006, 4d634c4f and c8ddb042, which the gates' findings required. Both semantic gates ran at tier full over the first roll b89784c4, which differs from the content commit only by those four commits and the re-cut CHANGELOG. The docs-currency-reviewer (Fable 5.1) found 24, four major (a schema version the CHANGELOG and the upgrade guide gave as 4 where the binary writes 8, a build page's key shape, and a timeout the CHANGELOG gave to three hook entries where only UserPromptSubmit declares it), all four fixed; eleven in all are fixed in 4b8ff2afa and the re-cut CHANGELOG, and the thirteen remaining minors and nitpicks are captured as one documentation record (iss-2609302306281487). The brief-surface cross-check (45 pinned checkers, Opus 5.5, at most eight alive) found 129, all valid at b89784c4 on an independent classification (Fable 5.1): 39 cycle, 87 standing, three user-facing and four behaviour. The three user-facing findings are fixed in 4b8ff2afa, and every finding on the guard chapter 17-guard.md in e8d5d006, 4d634c4f and c8ddb042, after three docs-review holds; the docs review of c8ddb042 is PROMOTE. One brief sentence (17-guard.md:426) was applied from the reviewer's draft and is flagged for the product thinker's review in .abcd/work/brief-review-flags.json. Captured as four records, all minor and all to be fixed in the first lane after the tag: a capture refusal that leaves .iss-alloc.lock behind (iss-2609302305500526, x-025), the appendix generator labelling /abcd:version host-delegated (iss-2609302306003610, x-039 and x-118), the guard's trailing-dot fold that its comment promises and `rm -rf ../.` does not make (iss-2609302306019245), and `docs fidelity` record and --apply disagreeing on a verdict's chapter shape (iss-2609302306153318). The behaviour finding x-001 is not a defect: bare `ahoy remote` listing its sub-verbs and exiting 0 is the stated behaviour of v0.12.0's breaking change, so the stale side is the shipped intent's criterion; it and the rest of the design-record drift go to the systematic brief pass iss-2609091956001547. Integration branch 24d, reviewed and ready, holds until the tag and falls into the next release.
- dcn-26100500000000012026-10-05 — Release v0.13.0 is cut by the coordinating session abcd-d7 while the product thinker is away, and the run's agenda line is: approve the publish step. Under the product thinker's rulings of 2026-10-04 (~10:05Z, verbatim: "Yes, that order", to cut v0.13.0 now with the home rename #815 inside it and rename the folder on their return; "Yes, approve it", for the coordinating session to approve the GitHub publish deployment itself once every check has passed, then verify the downloads and the site; ~13:35, leaving overnight: "keep going autonomously so we can have a new release tomorrow morning"), the session approves the `release` environment's deployment of v0.13.0 only after the merge queue, the verify job and every other gate on the tagged commit report green, and stops with a handover instead if any does not. The cut: v0.13.0, impact breaking (decided by itd-2610030720038073, the home folder renamed to `~/.abcd.noindex` with every abcd entry point stopping until the person renames it; itd-2610030814013772, AGENTS.md the one conventions file; and iss-2610020723185314, only a personal route hands a role to a command-line runner), 55 records since v0.12.0: five shipped intents (two breaking, three additive: itd-201, itd-2610030810350727, itd-2610030821294016) and 50 resolved issues (41 fixes, one additive, one breaking, seven internal and outside the changelog); the release guard and the findings guard passed. The noindex intent's scan receipt (D6) was taken on a `.noindex` probe folder before the rename, with consent, and adr-2610030720195401 accepted with brief invariant 21 (6538ab4a). Brief fidelity: three tier-full reviews and their holds brought 25 brief sentences current before the close (9d57917c, 9e6e0aa0), and the guide's own review found one false sentence, corrected to say the rename is done in a plain Terminal (cde071b9, 405cf34d). Content commit c6441dc0, on top of 3a092b89, which the cross-check's one fix-before-tag finding required; both semantic gates ran at tier full over the first roll 317cd0cc, which differs from the content commit only by that commit and the re-cut CHANGELOG. The docs-currency-reviewer (Fable 5.1) found 2: dc-1 accepted as written (while only `~/.abcd` stands the plugin root holds no binary, so the hook refuses the rename too and the pages describe what the person meets), dc-2 a nitpick deferred to the next release notes. The brief-surface cross-check (45 pinned checkers, Opus 5.5, at most eight alive) found 144 (31 major, 94 minor, 19 nitpick), 143 valid and one invalid (x-036) on an independent classification (Fable 5.1); of the three user-facing findings x-065 (`abcd build --help` said the sub-agent ceiling is not counted, where it binds through `implement step` since ruling DR6) is fixed in 3a092b89, and x-010 and x-042 are minor and deferred; the 140 design-record findings go to the systematic brief pass iss-2609091956001547. Deferred out loud, to be captured after the tag as two records: `launch ship` reads the records at HEAD, so a spec close left uncommitted was silently missing from the cut rather than refused (the close was committed as 44a73e6f before the ingest), and `docs fidelity --apply` flags the drafted replacement while the landed sentence was hand-tidied, so .abcd/work/brief-review-flags.json carries the drafted wording for 10-docs, 15-prepare-this-repo, 22-site, 23-reading and 27-implement. Reason for deferring: neither changes what v0.13.0 ships, and the person's ruling was a release by morning.
- iss-35brief-vs-shipped-surface reconciliation: 05-internals/08-skills.md claims abcd ships zero user-facing skills and six top-level commands while 04-surfaces/README.md itself tables nine and /abcd:consult and /abcd:ingest are shipped; the shipped skills violate the brief criterion that any artefact mutation is a command, not a skill; the skills/ layout described (abcd-ahoy, commit-attribution, secrets-and-pii) is fictional vs the real consult/ and ingest/; the implemented, user-reachable abcd docs lint and abcd history verbs have no home in 04-surfaces at all; the operator-internal paragraph contradicts the commands/ directory that exists. Detector (per spec-moves-with-the-surface): a record-lint cross-check that every entry under commands/ and skills/ resolves to a brief surface row, and every brief surface row resolves to a shipped or explicitly staged surface. Acceptance corpus: each falsified claim above — the check fails on all of them today. Fix amends the criterion or the surface in one change, never silently.
- iss-122The iss35 crosscheck's scope and depth are unpinned, so the gate is not reproducible: v0.3.0's receipt records zero findings four days ago while a full-depth run (17 brief docs, both directions, 22 checkers) returns 102 discrepancies, and the receipt's own promptHash field is the literal 'no-pinned-prompt' admission. The maintainer choosing briefDocs per run means two honest runs of the same gate can disagree by two orders of magnitude; the gate needs a pinned input manifest and depth so a PROMOTE means the same thing every release.
- iss-2610142025108700Release review receipts accepted any free-text disposition and let any number of deferred findings name one shared catch-all record: 1,090 of the 2,178 findings in committed receipts name iss-2609091956001547, and dispositions came in about twelve free-text shapes, including 'accepted: knowingly shipped unfixed', which defers without saying so. Nothing checked that a deferred finding had a record of its own.
- itd-34Intents Promote In Three Flavours — Standalone, Bundle-Member, Discipline
- itd-147The brief's surface chapters are a generated reflection of the shipped surface, so a shape claim cannot drift
- itd-2610141956319695A deferred finding is its own captured record