Skip to content

Commit fae8703

Browse files
docs(gates): delete the spec-docblock gate's stale "symbol is ZERO" reason (#19786)
Fixes #17242 Clause-②: no Round 6: one file, `scripts/check-spec-docblock-symbol-anchors.mjs`, comments only. ## What was stale The header section headed "`counts.symbol` is ZERO on this corpus", the case-4 note and one sentence of the case-5 note said the spec tree holds exactly one symbol-anchor-shaped span and that it does not resolve. They gave that as the reason the live-corpus self-test does not assert `symbol > 0`. ## Re-derived Instrument: this gate's `CORPUS` and `scripts/symbol-anchors.mjs` at `4b23e4fab5`, swept over a checkout of each tree. | tree | anchors | symbol (declaration) | declined | symbol-anchor-shaped spans | the `websocket.zod.ts` span | |:--|--:|--:|--:|--:|:--| | `08e38c6377` (census) | 2639 | 0 (0) | 183 | 1 | present, unresolved | | `fa29803417` (re-census) | 3437 | 6 (6) | 467 | 7 | present, unresolved | | `4b23e4fab5` (base) | 3448 | 6 (6) | 502 | 7 | present, unresolved, pinned | Controls: each older tree's own instrument gives the same counts. The gate at `fa29803417` prints 3437 / 6 (6) / 467. `08e38c6377` has no gate, so its own `symbol-anchors.mjs` was run with the same corpus spec and read 0 / 2639 / 183. The six resolving spans are 2 in `data/analytics.zod.ts`, 3 in `kernel/functional-completeness.ts` and 1 in `ui/action-params.zod.ts`. ⇒ The text was true at the census tree and false at `fa29803417` and at base. ## Change: deleted only - The header section, from its heading to its last paragraph. The `websocket.zod.ts` part was still true, and its `CENSUS_RESIDUAL` row still carries the doc, the citation and the repair. - The case-4 note. - The case-5 sentence that called that loop the positive control for "the ONE symbol-shaped span". No reason replaces them. Claim audit: 0 sentences added or changed in the file. The self-test still asserts `fileLevel` and does not assert `symbol > 0`. The ratchet recommendation recorded by #19733 is unchanged and not restated here. ## Verification, at `d23edb4eef` - Gate, `--list-unresolvable` and `--self-test`: exit 0 at base and head, stdout byte-identical (`cmp` 0; sha256 `44a6a984…`, `af5d0039…`, `1dcc0b91…`), stderr empty. - Comment-only: the TypeScript printer's output with comments removed is identical at base and head (sha256 `8865ec39…`). Lit control: a one-character code mutation makes it differ. The self-test floor stays 124. - `check-scripts-symbol-anchors` (sweeps this file): exit 0. Anchors 3694 → 3691 and file-level 3642 → 3639; symbol 52 and declined 14 unchanged. The −3 are the three code spans in the deleted text. Its self-test exits 0. - `dispatch-gates`: 31 derived, 31 run, all exit 0; `--ran` reads 0 NOT-MEASURED, 0 UNRUN. Outside that total: the 2 workflow-valued families and the Test Core steps run in CI only. The 14 changeset-pending families do not apply (no changeset: a repo-root script in the private root package). - ESLint on the file: 0 errors, 0 warnings. Repo-wide lint is left to CI. - 0 control bytes and 0 model identifiers in the file and the commit message. Lit control: a planted control byte and a planted model identifier are both found. ## Acceptance notes - No `symbol > 0` live control is proposed. Case 1 already asserts `declaration >= 1` and `literal >= 1` through the same `CORPUS` on its fixture. A live floor would add a constraint on authors and no new detection. Noted, not filed; carrier: none. --- _Generated by [Claude Code](https://claude.ai/code/session_01UDXER3sdqfeVYpEWZs5mZx)_ Co-authored-by: Claude <noreply@anthropic.com>
1 parent 2cf9db7 commit fae8703

1 file changed

Lines changed: 1 addition & 26 deletions

File tree

‎scripts/check-spec-docblock-symbol-anchors.mjs‎

Lines changed: 1 addition & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -96,24 +96,6 @@
9696
* site in the file it names, and a file-level anchor with a `#fragment` must
9797
* name a file the tree really has.
9898
*
99-
* ## ⚠️ `counts.symbol` is ZERO on this corpus, and that is a census result
100-
*
101-
* The whole of `packages/spec/src` contains exactly ONE span written in symbol
102-
* anchor form, and it does not resolve: `packages/spec/src/api/websocket.zod.ts`
103-
* anchors `RealtimeSubscriptionOptions` to a PACKAGE-RELATIVE spelling of the
104-
* contracts file, so no tracked file is at that path -- the symbol itself is
105-
* real and lives in `packages/spec/src/contracts/realtime-service.ts`. The
106-
* citation as written is pinned in `CENSUS_RESIDUAL` below, and ⛔ it is NOT
107-
* requoted in anchor form here: this header is itself swept by the `scripts/**`
108-
* corpus, so quoting a broken anchor verbatim makes THIS file a finding.
109-
*
110-
* So the live-corpus self-test here asserts `fileLevel`, ⛔ never `symbol > 0`
111-
* the way `scripts/**` can: a corpus the convention has not reached yet cannot
112-
* prove the extractor works by finding a resolved symbol in it. What stands in
113-
* for that positive control is the residual's exactness loop -- the one
114-
* symbol-shaped span in the tree must still be SEEN, every run, or its row goes
115-
* stale and this gate reds.
116-
*
11799
* ## The exit contract, and why it is a pinned residual rather than reporting
118100
*
119101
* `#17065` left the exit contract to the census, and the census forces this
@@ -1003,12 +985,6 @@ export function selfTest() {
1003985
// 4. ⭐ The live corpus is not empty, and the projection really is wired.
1004986
// This is the ONLY thing separating a clean tree from an extractor that
1005987
// silently matches nothing.
1006-
// ⚠️ `symbol > 0` is NOT assertable here and that is a census result, not
1007-
// an oversight: the whole tree holds exactly ONE symbol-anchor-shaped span
1008-
// and it does not resolve (see the header, and the `websocket.zod.ts`
1009-
// residual row). The file-level population is what proves the extractor
1010-
// ran; the residual's exactness loop below is what proves it still SEES
1011-
// that one symbol-shaped span.
1012988
const live = sweepCorpus(CORPUS);
1013989
check(live.counts.anchors > 1000, `the live spec corpus must yield its anchors, got ${live.counts.anchors}`);
1014990
check(live.counts.fileLevel > 1000, `the live corpus must resolve its file-level anchors, got ${live.counts.fileLevel}`);
@@ -1020,8 +996,7 @@ export function selfTest() {
1020996
// 5. ⛔ Every residual row is EXACT IN BOTH DIRECTIONS against the LIVE tree.
1021997
// A row whose citation is repaired has done its job and must be DELETED;
1022998
// leaving it is how a dated residual becomes a permanent exemption nobody
1023-
// re-reads. This loop is also the positive control for the ONE
1024-
// symbol-shaped span in the corpus (case 4's note).
999+
// re-reads.
10251000
const liveTriage = triage(live.findings);
10261001
check(liveTriage.stale.length === 0,
10271002
'every CENSUS_RESIDUAL row must still match a LIVE finding — a stale row is a repaired citation whose row was '

0 commit comments

Comments
 (0)