Skip to content

test(spec): the class (e) remainder's titles state each cited decision in words instead of a tracker number (stage 30) - #22414

Merged
objectstack-fleet[bot] merged 1 commit into
mainfrom
claude/issue-20749-test-strings-s30
Oct 9, 2026
Merged

objectstack-fleet[bot] merged 1 commit into
mainfrom
claude/issue-20749-test-strings-s30

Conversation

@objectstack-fleet

Copy link
Copy Markdown
Contributor

Part of #20749
Clause-②: no

Stage 30 of this card: the class (e) remainder, the test strings shipped under the packages/spec/src subdirectories, as ruled in 5902360492 on #20513. The census at the base reads 17 messages / 18 ids in 12 files. This stage rewrites 7 of them (6 titles and 1 expect message, 8 ids) in 5 files: each now states what its record decided, or drops the number where the title already says it. The other 10 messages / 10 ids stay, 4 because earlier stages decided they are not citations and 6 because an assertion matches the string against text this claim does not let the stage edit; both groups are named under "What stays". Text only: no assertion, identifier, test count, code comment, file name or non-test file changes. No file is deferred.

Census (re-taken first)

The instrument is stage 28's census28.cjs, byte-identical (md5 31d8488b5194b8d3048e3fcaec0efaed, the value stages 28 and 29 published): an AST walk over the packages/spec/src test files, one message per folded string (a lone literal, a template, or a plus chain) that matches the gate's id pattern, a title when the folded root is argument 0 of a describe / it / test / suite / bench call, comments never read. It was run against the three published readings before it was trusted, and all three reproduce exactly: 128 messages / 130 ids in 37 files at f7b8a5932b, 191 / 200 in 53 files at aa09db58c9, 73 / 76 in 24 files at b7e01fbbd.

reading messages / ids files
base 11d119ab1 17 / 18 (titles 6 / 7, other 11 / 11) 12
stage 29's landing 0ef9029da 17 / 18, per file equal to the base 12
this head 10 / 10 (titles 0 / 0, other 10 / 10) 7
the 5 edited files, this head 0 / 0 0 of 5

Stage 29's ACCEPT carried 16 / 17 (ui 9 / 9 in 7 files, automation 2 / 3, ai 2 / 2, api 1 / 1, contracts 1 / 1, kernel 1 / 1). The base reads 1 / 1 more, all in ui: the title carries no ruling date and no tracker id (#22093) at view-submit-redirect-url.test.ts:341, which PR #22322 (ad381fd94, landed 2026-10-09T00:35Z) added after stage 29's head. So ui reads 10 / 10 in 7 files, and nothing else moved. The census at origin/main e75dceddd (8 commits past the base, none touching the 12 files) reads the same 17 / 18 in the same 12 files, so nothing regrew while this stage ran. The reading is within one message of the claim's, so there was no re-cut.

Per file, messages at base: ai/build-progress 2, api/meta-item-response-shapes 1, automation/builtin-node-config 2 (3 ids), contracts/approval-service 1, kernel/manifest 1, ui/action-description 1, ui/component-props-unknown-members.pin 1, ui/dashboard-chart-structure-refusal 2, ui/dashboard 2, ui/notification 1, ui/strictness-batch14 1, ui/view-submit-redirect-url 2.

Controls:

  • Pathspec: the 12 named paths hit the control word describe( in 12 of 12 files and a nonsense word in none; the census scanned 12 of 12.
  • Planted, in a scratch tree: an id in a describe title, a plus-chain title, an expect message, a template literal, a cross-repo spelling and a ledger-style string each read once (6 / 6); a comment, a six-digit colour, an HTML entity, a two-digit number and a hex colour with a letter read 0.
  • Lit and dark inside the group: the 5 edited files read 1, 2, 1, 1 and 2 messages at base and 0 at the head; the 7 untouched files read the same at both ends.

Deferral

At the census (2026-10-09T03:03Z) 17 PRs were open; at the re-scan before opening this PR (04:13Z), 13. Every file list was read through REST (605 and 593 rows). None touches any of the 12 files: lit control api/protocol.test.ts (PR #22323) found, dark control 0. Of the four PRs the claim named, #22380 has landed and #22315, #22323 and #22215 are open; none of them touches a file in this group. Deferred files: none.

What changed

7 literals, one line each, in 5 files: +7 / -7. Every file keeps its line count.

All seven are "drop a number the title already explains". None needed a rewrite in new words, because each title already carried the decision.

What stays, and why

10 messages / 10 ids in 7 files, none edited.

Four are CSS hex colours, not citations. colors: ['#111', '#222'] at ui/dashboard-chart-structure-refusal.test.ts:94 and palette: ['#111', '#222'] at ui/dashboard.test.ts:124 are fixture input the schema under test reads. Stage 21's ACCEPT (6001279159, decision A) kept them by file and line, and every later stage carried them forward.

Six are strings that an assertion matches against text outside this stage's edit surface. Moving one at the same strength means editing a non-test source docblock (and, for the first two, its generated reference page) or the assertion that matches it. The claim forbids both and says to stop and report, so none is touched; open_questions in the report carries the decision.

  • ai/build-progress.test.ts:236 'cloud#2172' and :237 'objectui#7388 block 2': toContain over the source text of ai/build-progress.zod.ts (docblock lines 8, 27 and 85), which content/docs/references/ai/build-progress.mdx renders.
  • contracts/approval-service.test.ts:274 '#16495': toContain over the docblock above continueRestoredRun in contracts/approval-service.ts (line 999).
  • ui/notification.test.ts:123 '// [#4610]': the locator of the tombstone note in ui/notification.zod.ts:94; the file's own toMatch(/^\[#4610\]/) at :134 reads the same note.
  • ui/strictness-batch14.test.ts:395 '#5015': toContain over ui/notification.zod.ts and ui/sharing.zod.ts.
  • ui/component-props-unknown-members.pin.test.ts:322 ruling: 'decision card #21704, fork 4, letter B (record 5979239990)': the file's own assertion at :417 matches the value with /#21704/. Stage 20's ACCEPT (5998488373) kept it for this reason and sent it to the needles' stage.

Readers of the seven rewritten strings: none. git grep -F at HEAD over the tracked tree outside the 12 files, with the full literal, a 24-character window around each id, and the text on each side of each id (29 needles over all 17 sites): the only hits are the readers of the kept strings named above, the lit control (composeStacks in stack.zod.ts) hits and the dark control does not. The same needles searched inside the 12 files, outside each literal's own span: the only hits are two code comments beside :322. The five short needles (cloud#2172, #16495, // [#4610], #5015, #21704) fall under the script's 12-character floor, so their readers were confirmed by direct git grep -F with a dark control.

Cited records

Read with their comments as the API serves them: #22114 (8 of 8 comments; landed as PR #22126), #14149 (12 of 12; ruling A 5507504961, landed as PR #15113), #19939 (15 of 15; pass 1 landed as PR #22259, the card stays open), #22093 (17 of 17; PRs #22125, #22309 and #22322), and the four PRs themselves. #19939 is still open: its pass 1 refuses the {token} dialect in flow value slots and keeps two spellings (the date macros and {$User.*}) until CEL can write them. The describe's PRESERVATION test still accepts those two, and the title keeps the record's own verb, "retired", as PR #22259 wrote it. The title and the test body say the same thing the record says.

Verification

At head 8885dbf1c (one commit on base 11d119ab1):

  • Text only. textonly28.cjs (stage 28's, md5 957eff6b3837d762b8e03d070155930a) on all 12 base copies against their heads: 12 / 12 SAME. 7 changed tokens, as predicted in writing at 2026-10-09T03:08Z before any edit or test run: 6 titles and 1 declared string (--declared 118). Every other string token, identifier, number, punctuation mark and comment is byte-equal. 16 controls, expectations written in the script before the first run, 16 / 16 as predicted: an identifier rename, a numeric literal, a comment edit, an undeclared expect message, a rewritten title given a new id, an id-free title edited, one title reverted to base (SAME, 0 changed), a declared label without --declared, a declared line plus another changed string, the declared line alone (SAME, 2 changed), a title re-split into a plus chain, a test added, an untouched file (SAME, 0 changed), an id appended to a rewritten title, a kept needle rewritten, a kept hex colour rewritten. The two controls that mutate a string beside the declared line fail at the mutated line, not at 118.
  • Tests, 12 files, base and head. --project local --project repo with the JSON reporter, 618 tests in 88 suites each side, all passed. Per-file test count and status sequence identical in 12 / 12. 23 full names changed (4 + 14 + 1 + 3 + 1), 0 mismatches against the plan. Names carrying # plus digits: 23 at base, 0 at head. Duplicate full names: 3 and 3, the same three [object Object] it.each rows at both ends.
  • Full spec unit tier at the head, under the verify lock: Test Files 626 passed (626), Tests 18743 passed | 1 todo (18744).
  • Build and typecheck, under the verify lock: turbo run build over packages/* and packages/*/*, Tasks: 71 successful, 71 total; @objectstack/spec typecheck exit 0 with check:test-typecheck holding 52 files / 246 errors / 135 pinned signatures, the same figures as stage 29; the 12 files are all in the tsconfig.test.json program.
  • Gates. dispatch-gates.mjs --commands at the head derives 79 (stage 29's 77 plus check:authorable-surface and check:yaml-examples); all 79 exit 0, and --ran reconciles 79 derived, 79 run, 0 NOT-MEASURED. The five artifact-roster families that keep their roster in a directory one of the paths is in (check:meta-url-spelling, check:spec-changes, check:authz-resolver, check:error-code-casing, check:filter-alias-parity) and check:generated (all 15 artifacts up to date) also exit 0.
  • ESLint, --no-inline-config, 12 files: 0 errors, 0 warnings. Population from ESLint's own config: 12 configured, 0 ignored, 0 with a type-aware parser option, so this diff cannot move the verdict of a file it does not touch.
  • Skip-changeset. npm pack --dry-run --json --ignore-scripts in packages/spec: 2069 files, 0 *.test.ts, 0 of the 5 edited files; controls src/stack.zod.ts, dist/index.mjs and package.json present. The rewritten expect message occurs in 0 files of dist/; the control Unrecognized key occurs in 42. Nothing published changes.
  • Governed. check-governed-merges.mjs --test on the 5 paths: 0 of 5, not governed; 14 changed lines.
  • Merge. git merge-tree --write-tree onto origin/main e75dceddd: clean.
  • Bytes. 0 added lines carry # plus digits; 0 control bytes in the changed files.

Declared narrowing: the 12-file base and head comparison ran outside os-verify-lock.sh, after three queue turns (about 28 minutes) ended without a grant. It is a 12-file run with two workers; the workspace build, the typecheck and the full unit tier all ran under the lock. The gates are check:* runs, which do not use the lock.

Acceptance notes


Generated by Claude Code

…n in words instead of a tracker number (stage 30)

Seven test strings in five subdirectory test files drop their tracker id:
six titles and one expect message. Each title already stated the decision
it pins, so the number goes and the words stay; the assignment title keeps
"the `{token}` dialect retired" without the two cards it cited.

Ten strings carrying a `#` plus digits stay: four are CSS hex colours the
schema under test reads as input, and six are matched by an assertion that
reads a non-test source or by the file's own assertion, so they move with
that reader in a later stage.

Text only: the files are identical outside the seven string tokens, and
every file keeps its test count and status sequence.

Claude-Session: https://claude.ai/code/session_01DhTqaEHqPVSVnAkjG3jywn
Co-authored-by: Claude <noreply@anthropic.com>
@github-actions

github-actions Bot commented Oct 9, 2026

Copy link
Copy Markdown
Contributor

📓 Docs Drift Check

Nothing in this diff resolved to a documentable surface (no symbol, route or SDK anchor derived from 0 changed package(s)), so this run has no opinion about the docs.

What this run could not see

Coarse fallback — 0 page(s) merely mention a changed package (the pre-#9192 predicate, kept for the deliberately-wide backstop): node scripts/docs-audit/affected-docs.mjs --json e75dceddd7ce17e9f6783c176bf61d67fa47d1b4 → packageMentionDocs.

@objectstack-fleet objectstack-fleet Bot added the skip-changeset PR has no user-facing published change; bypasses the changeset gate label Oct 9, 2026
@objectstack-fleet
objectstack-fleet Bot marked this pull request as ready for review October 9, 2026 04:41
@objectstack-fleet
objectstack-fleet Bot enabled auto-merge October 9, 2026 04:42
@objectstack-fleet
objectstack-fleet Bot added this pull request to the merge queue Oct 9, 2026
Merged via the queue into main with commit 961d365 Oct 9, 2026
41 checks passed
@objectstack-fleet
objectstack-fleet Bot deleted the claude/issue-20749-test-strings-s30 branch October 9, 2026 05:20
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

protocol:ui size/s skip-changeset PR has no user-facing published change; bypasses the changeset gate tests

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants