Repository navigation
test(spec): the first root-level test file group's titles state each cited decision in words instead of a tracker number (stage 28) - #22342
Conversation
…cited decision in words instead of a tracker number (stage 28) Stage 28 of the runtime-strings burn-down, class (e): 18 of the 20 test files directly in packages/spec/src from assembled-package-body.test.ts through inline-grid-column-carriers.test.ts carried 61 tracker ids in test titles. Each title now states what its record decided, in words, or drops the number where the title already says it. Text only: no assertion, identifier, test count or code comment changes. Claude-Session: https://claude.ai/code/session_01DhTqaEHqPVSVnAkjG3jywn Co-authored-by: Claude <noreply@anthropic.com>
📓 Docs Drift CheckNothing 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): |
Re-run of CI for stage 28: the Temporal Conformance job timed out on the previous head before any test body ran. Claude-Session: https://claude.ai/code/session_01DhTqaEHqPVSVnAkjG3jywn Co-authored-by: Claude <noreply@anthropic.com>
⛔ merge queue 构建失败 — 先分诊,再决定要不要重排队列构建 37839445948 红了。队列跑的是全量套件(PR 侧 CI 只跑 affected 子集), 分类: 失败的 job(日志抽取,best effort):
跨 PR 相同签名(24h,按失败测试文件聚合):
历史信号:
分诊清单:
Generated by Claude Code · merge-queue-triage workflow (#4859) |
|
Queue ejection, triaged: not this PR's failure; one re-queue ·
Generated by Claude Code |
Part of #20749
Clause-②: no
Stage 28 of this card: the next area of class (e), the test strings shipped under
packages/spec/src, as ruled in5902360492on #20513. This stage takes the first name-ordered group of the test files directly inpackages/spec/src/: 20 files,assembled-package-body.test.tsthroughinline-grid-column-carriers.test.ts. 18 of them carried 61 tracker ids in test titles. All 61 now either state what their record decided, in words (form D), or drop the number where the title already says it. No declared string or expect message in the group carries an id, so no needle is in play. Text only: no assertion, identifier, test count, code comment, file name or non-test file changes. The card stays open for the second group.Census (re-taken first)
The census instruments of stages 10-27 are not on disk in this container, so
census28.cjs(md531d8488b5194b8d3048e3fcaec0efaed) was rebuilt from the definition those stage reports give: an AST walk over thepackages/spec/srctest 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 (each, skip, only chains included), comments never read. It was calibrated against two published readings before it was trusted: 128 messages / 130 ids in 37 files at stage 27's landingf7b8a5932b, and 191 / 200 in 53 files (titles 162 / 168, other 29 / 32) ataa09db58c9. Both reproduce exactly.28bff18d028bff18d0src/, base then headThe group reads 61, the claim's figure: no re-cut. The whole class reads 6 messages / 7 ids above stage 27's landing reading (128 / 130) because five new files outside this group landed since, all in subdirectories:
api/meta-item-response-shapes,automation/builtin-node-config(2 / 3),kernel/manifest,ui/action-descriptionandui/view-submit-redirect-url.Controls: lit, outside the group, at base and head:
ai/build-progress.test.ts2 / 2,stack-artifact-crossref.test.ts11 / 12 andstack-inline-action-crossref.test.ts13 / 13. Lit at base and dark at head, inside the group: the three stage-27 controls,assembled-package-body.test.ts4 / 4,compose-key-dispositions-export.pin.test.ts5 / 5 andcompose-stacks-action-collision-shape.test.ts3 / 3 (identical to stage 27's readings of them). Dark: five stage-27 files undersystem/read 0 while their comment lines still carry ids, and the 20 group files read 0 at head while 84 comment lines in them still carry ids (a wider pattern, any#plus digits, reads only the(stack #0)index positions of composeStacks refusal text, unchanged). Planted, in a scratch tree: ids in a describe title, a plus-chain title, an expect message, an it.each row name, a template title and a declared string each read once; a comment, a six-digit number, an HTML entity and a markdown heading read 0.Per file, messages at base: assembled-package-body 4, compose-key-dispositions-export.pin 5, compose-stacks-action-collision-shape 3, compose-stacks-action-echo 4, compose-stacks-action-key-collision 2, compose-stacks-collection-pipe-arm 5, compose-stacks-concat-shape-refusal 1, compose-stacks-i18n-merge 2, compose-stacks-key-loss 8, compose-stacks-manifest-preserve 7, compose-stacks-merge-collection-refusal 1, compose-stacks-objects-shape-refusal 1, compose-stacks-refusal-envelopes 1, cron-typed-positions-retirement 5, define-stack-non-strict-actions-shape-refusal 3, define-stack-non-strict-objects-shape-refusal 1, eager-entry-import 1, inline-grid-column-carriers 7.
compose-stacks.test.tsandcompose-stacks-merge-config-object-refusal.test.tscarry ids only in comments.What changed
61 title literals, one line each, in 18 files: +61 / -61.
pipearm took the authored side" (compose-stacks-collection-pipe-arm 211), "the inbound rate limiting config" (compose-stacks-key-loss 64), and "the export-job family,ScheduleState, the connectorDataSyncConfig" (cron-typed-positions-retirement 347).#N —prefix, a[#N]prefix, or a trailing(#N).Cited records
24 distinct ids. 23 answer 200 and were read with every comment the API serves. #14686 answers 404; its decision was read from its landing commit
279431e7a3and that commit's changeset:defineStackrefuses two actions that resolve to one scope-qualified runtime key. The comments counter of three records exceeds what the comments endpoint and the timeline serve (#5051 serves 2 of 5, #14848 7 of 8, #19150 5 of 6); everything served was read. What each record decided, as the titles now say it: #4910 theserverkey carries the inbound rate limiting config; #5005 the three composition rules (same value passes, a conflict throws a prescriptive error, an undeclared key warns); #5051i18njoins them (option A, no last-wins); #14242 option B, the assembled body gets its own declaration (option C refused); #14512 a multi-package artifact carries its collections once in the package bodies, and keeps the flattened copy where the bodies cannot reproduce it; #14847 a bound standalone action appears once in the composed object; #14848 ruling 4,objectConflict: 'merge'refuses a differing collection; #14877 ruling 1, the compose-key table is a frozen public export; #15219 ruling A,pluginsanddevPluginsare envelope keys; #16075 option 1, the refusal extends to fixed-shape config objects; #16320 the seven cron-typed positions are deleted; #16348 composeStacks conflict refusals carry ADR-0112 envelopes; #17158 ruling A, the export-job family retires whole; #18239 ruling B, a non-arrayobjectsis refused with the envelope; #19150 apipeis read on its authored side; #19784 ruling C, a non-array concat key is refused; #19785 and #19799 the non-strictdefineStackdoor refuses a non-arrayobjectsand a malformedactionswith the envelope; #19816 the collision pass skips a malformedactionsand step 7 refuses it; #19930 every published entry imports first underOS_EAGER_SCHEMAS=1; #20901, #20928 and #21142 each inline grid column carrier referencesInlineGridColumnSchema.Readers
184 needles (each old literal, a 24-character window around each id, and the text left and right of each id) were searched with
git grep -Fover the tracked tree at the base outside the 20 files, with a lit control (a known string, hit) and a dark control (a nonsense string, no hit). 7 needles hit, 24 lines: prose, changelog and code-comment lines elsewhere that share a short phrase, two//comment lines inmigrations/that quote the old #20901 header, and one twin title. No gate, doc table,-tfilter, snapshot,currentTestNameread or self-test reads a rewritten title. The twin:stack-artifact-packages.test.ts:355carries the same old title ascompose-stacks-manifest-preserve.test.ts:308. It belongs to the second name-order group; to keep the pair equal its rewrite should readdoes not warn about an undeclared composition rule.Text-only proof
textonly28.cjs(md5957eff6b3837d762b8e03d070155930a), per file, base text against head text: both texts with every string token masked are byte-equal (code and comments), the string-token counts are equal, and every changed token sits in a describe / it / test title position, carried an id at base and carries no#plus digits at head. 20 / 20 files SAME; 61 changed tokens, all titles, 0 declared; per-file counts exactly as predicted in writing at 2026-10-08T17:34:10Z, before the edit.git diff -U0: 61 plus and 61 minus lines, each the planned line; 0 added lines carry#plus digits; every file keeps its line count.Tests
--project local --project repoand the JSON reporter, at the base (same worktree, before the edit) and at the head437b4778f: 594 / 594 passed in 20 files, 146 suites each side; per-file test count and status sequence identical in 20 / 20; 409 full names changed, 0 mismatches against the plan; 0 duplicate full names either side; names with#plus digits 409 at base, 0 at head.vitest run --project local: 626 files passed, 18720 tests passed | 1 todo, exit 0.typecheck: exit 0 (VERDICT command-exit 0);check:test-typecheck52 files / 246 errors / 135 pinned signatures held, unchanged;tsc --listFilesOnly -p tsconfig.test.jsonholds 20 of 20 group files.Tasks: 71 successful, 71 total. Heavy runs went throughscripts/pm/os-verify-lock.sh(slotdev-20749-s28).Gates
All at
437b4778f. The dispatch list (77 commands, derived atfe98cc63a) equals the list re-derived from the real change set at this head, 18 paths against merge base28bff18d0: nothing added, nothing dropped. All 77 exit 0 anddispatch-gates --ranreads "77 derived, 77 run, 0 NOT-MEASURED, 0 UNRUN". Also run, exit 0: the five roster families that share a directory with the diff (check:meta-url-spelling,check:spec-changes,check:authz-resolver,check:error-code-casing,check:filter-alias-parity) andcheck:generated("All 15 generated artifacts are up to date"). ESLint, narrowed and proven: 20 files linted with--no-inline-config, 0 errors, 0 warnings; the population read from ESLint's own config is 20 configured, 0 ignored; no file hasparserOptions.projectorprojectService, so type-aware linting is not enabled and this diff cannot move the verdict of a file it did not touch.Packaging and landing
skip-changeset.npm pack --dry-run --json --ignore-scriptsinpackages/speclists 2069 files, none of the 18 changed files and no*.test.ts; controlssrc/stack.zod.ts,dist/index.mjsandpackage.jsonare present; an old and a new title phrase read 0 files indist/, the controlUnrecognized keyreads 42.check-governed-merges --teston the 18 paths reads 0 of 18; 122 changed lines.git merge-treeontoorigin/maine36ee5351: clean. None of the 19 open PRs touches any of the 20 files (file lists read; 7 of them touchpackages/spec/src, so the reader sees them).Acceptance notes
root-entry-migrations-split.pin.test.tsthroughstack.test.ts, 12 files, 57 messages / 59 ids at this head, with the one "other" string atstack-cross-reference-envelope.test.tsto be needle-checked there. The five new subdirectory files named above carry 6 messages / 7 ids; the cutting seat decides where they go.Generated by Claude Code