Skip to content

docs(spec): nine migration-step rationale passages and two registry comments drop their deleted tracker numbers (stage 11) - #21578

Merged
objectstack-fleet[bot] merged 4 commits into
mainfrom
claude/issue-20234-registry-stage11
Oct 3, 2026
Merged

objectstack-fleet[bot] merged 4 commits into
mainfrom
claude/issue-20234-registry-stage11

Conversation

@objectstack-fleet

Copy link
Copy Markdown
Contributor

Part of #20234

Clause-②: no

Stage 11 of the dead-citation sweep: the hand-written parts of packages/spec/src/migrations/registry.ts, under ruling C+D (record 5749154545 on #19123). At base, those parts carried 13 sites citing deleted tracker numbers: 2 in source comments and 11 in step rationale text that authors read. A step rationale is author-shown: os migrate meta prints it per hop, and step 17's is projected into docs/protocol-upgrade-guide.md. Text only. No step, fragment id, fragment order, generated entry, conversion or code token moves.

  • Form C, the 2 comments. Each dead number now cites the commit that decided it (verified against the commit's own text), and the sentence says what that commit did.
  • Form D, the 11 rationale sites. They sit in 9 rationale units: step 17's mongodb paragraph and 8 step-18 fragments (a fragment is "one retirement's sentences"). Each of those 9 units now carries no number at all. The 11 dead numbers go, and so do the 11 live numbers in the same units, because form D removes every number from author-visible text. Each sentence states the cited decision in words, read from its decision record, not its title.
  • Regenerated, never hand-edited: docs/protocol-upgrade-guide.md line 68. check:generated --fix proved it the only stale artifact of 15. gen:migration-registry has nothing to do, because no generated region mirrors a rationale.
  • One @objectstack/spec patch changeset.

What changes

Line numbers are at base e909aa0a23. "Dead" means GET issues/N answers 404, with no redirect followed.

line number(s) decision, as read, and its record now reads
344 #6345 (dead), #4410 (live) mongo → mongodb became the canonical driver id under one shared driver vocabulary (commit e2798fa). #4410: datasource.config is parsed against the declared driver's contract, and mongo and mongodb both map to the mongo contract (commit cdf4d9a) "renamed to mongodb. The two spellings have both been accepted since datasource.config was first parsed against its driver's own contract"
5180 #14676 (dead) retire connector.errorMapping, ADR-0049 (commit 13c48c2) the number dropped; the fragment already states the decision
5601–5608 #12868 (dead); objectui#6263 ×2, #7246, PR #7388 (live) narrow per-option default out of the form-view vocabulary only, disposition 甲 (commit c459da6, whose diff added this fragment). objectui#6263: the console's form controls never read the key, and the ruling closed that card. #7246 / #7388: maintainer ruling of 2026-08-10, "enforce" on the object-field face (applyFieldDefaults) "maintainer ruling 2026-08-28 on the console form renderer's analysis"; "enforced there by a maintainer ruling of 2026-08-10"; "measured against the console's form controls, none of which reads the key"
5703–5704 #10329 (dead), #4509 (live) retire the lookup steering params (commit 15d58db). #4509: 17.0.0 retired the keys the lint could never warn about, the mapping trio among them (commit 5966c2a) "the sub-walk half of the 17.0.0 mapping cleanup that retired extractQuery / errorPolicy / batchSize"
5718, 5721 #8336 (live), #8495 (dead) refuse ${…} in memory persistence.path / persistence.key at publish (commit 4bfe1a5). #8336: the 2026-08-13 ruling refusing placeholders in datasource connection config at publish (the protocol-17 entry datasource-config-placeholder-refused) "extends the publish-time refusal of unresolved placeholders, which protocol 17 applied to datasource connection config, to the memory driver's …"; "(#8495)" dropped
5732–5733 #13135 (dead), #12057 (live) retire the paper customization protocol with its full coupling set; the maintainer adopted retirement 2026-08-29 (commit 9e0ba21, whose diff carries the number) "(ADR-0049 enforce-or-remove, maintainer ruling 2026-08-29)"
5963, 5966, 5973, 5975 #10724, #10627, #10726 (dead); #11169 (live) retire nine dead contributes members; a controlled three-repo census found one non-test read (commit be21955). #10726: routes later retired too, ruled Option B (commit bc56e18, whose diff carries the number). #11169: retire kinds[].globs, maintainer ruling 2026-08-24 (commit be21955) "A census of all three repos, with controls, measured …"; "routes was left to a ruling of its own, which retired it as well (the plugin-manifest-contributes-routes-retired entry)"
6020 #10485 (dead) retire stack themes and ThemeSchema, ruled B (commit 35ad101) the number dropped
6049, 6052, 6058 #10926 (dead); #9249 ×2 (live) retire the submitLabel copy key, Option A (commit d173125). #9249: element:form retired whole (the element-form-retired fragment, which renders earlier) "retired whole above"; "nothing read it once element:form was retired"
6301 (comment) #8495 (dead) as above (commit 4bfe1a5) "(commit 4bfe1a5, PR #8666: ${…} refused at publish in persistence.path / persistence.key)"
24935 (comment) #6239 (dead) the 2026-08-08 sweep retired the viewId-addressed ViewProtocol as whole defs (commit f549a0d, whose subject names the number) "(commit f549a0d, D3 view-management-protocol-retired)"

Where a commit message does not name its number, the anchor was confirmed from the files that commit added: c459da6, 9e0ba21 and bc56e18 each carry their number in their own diff. Both sha anchors added to comments are unambiguous: rev-parse --disambiguate count 1, and GET commits/SHA returns the full sha (a 4-character control returns 422). merge-base --is-ancestor answers 0 for all 11 anchors. The checkout is shallow, with a boundary of 2026-06-28. Every anchor is later than that, and exit 0 proves ancestry on its own.

What stays, and why (counts left on #20234)

Verification

Deadness. A TypeScript 6.0.3 walker runs the citation gate's own extractCitations over two projections of the file (comment-only and string-only, line structure kept). It classes each site by kind and by region; the generated regions are the 6 os-generated pairs. At base, the hand-written parts hold 262 sites: 48 in comments (1 cross-repo) and 214 in rationale strings (19 cross-repo), over 177 distinct in-repo numbers. A REST probe of all 177 (issues/N, no redirect followed; lit control #20234 and dead control #8710 at the start, after every 50 and at the end): 165 answer 200, 12 answer 404, and 0 answer 301. Controls behaved 5/5 lit and 5/5 dead. The 12 numbers sit on exactly the 13 sites stage 10 named (5902947213). At head, the 162 distinct numbers all answer 200 (controls 5/5 and 5/5), and 0 dead sites remain. Site-set difference: 24 removed (13 dead and 11 live, all inside the 9 units) and 1 added (#8666, live, the PR link beside commit 4bfe1a5 in a comment, which form C allows). The 911 sites in generated regions do not change.

Text only. A second instrument over TypeScript 6.0.3 evaluates the step-17 rationale and every step-18 fragment text (72 owners). It masks each of those initializers to one token that names its owner and cuts every comment, JSDoc included. The base and head leaf-token streams are IDENTICAL: 37,526 tokens, sha256 prefix 647bc09580ac619e on both sides. Evaluated values changed for exactly 9 owners, the units listed above, and each word diff is the citation and its replacement words only. Controls mutate the head in memory: a comment insertion stays IDENTICAL, and each of these DIFFERS: a fragment order change, a fragment id change, an unmasked string edit, a conversion-id string edit, and an appended declaration (6/6).

Regeneration. Before regeneration, check:migration-registry and check:spec-changes exit 0, and check:upgrade-guide exits 1. check:generated --fix regenerated only the guide. Its word diff on line 68 shows mongodb (#6345). becoming mongodb. and #4410 becoming the decision in words. After the origin/main merge (6dd99b82c3, through os-regen-merge.sh, which touched none of these paths), a rebuild plus check:generated reports "All 15 generated artifacts are up to date". No regeneration commit was owed.

Pins and quotes. No test asserts a changed phrase. content/docs/** and skills/** quote none of them. The other hits for the old spellings are independent comments in other files (live numbers), release-owned CHANGELOGs and one test title, all left alone.

Tests and gates (at head 64bbd3693e; all builds and tests through scripts/pm/os-verify-lock.sh, each VERDICT command-exit 0):

  • pnpm --filter @objectstack/spec build, and a full turbo run build --concurrency=2 over ./packages/* and ./packages/*/* (71/71).
  • spec local project: Test Files 606 passed, Tests 17952 passed, 1 todo.
  • spec repo project, 47 of its 51 files by name: 47 passed, 750 tests, including scripts/step18-rationale-merge.test.ts.
  • pnpm --filter @objectstack/spec typecheck: check:test-typecheck OK.
  • node scripts/pm/dispatch-gates.mjs --repo objectstack-ai/objectstack: 85 families derived, 85 run, all exit 0, reconciled with --ran ("0 NOT-MEASURED, 0 UNRUN"). That includes check:doc-authoring (self-test and run), check:issue-citations, check:nul-bytes, check:generated, check:migration-registry, check:upgrade-guide and the changeset gates. Three of them first exited 3 (prerequisite: unbuilt dist) and were rerun green after the full build.
  • Lint, as a proven narrowing: eslint --no-inline-config --format json over the one touched .ts file reports 1 file, 0 errors, 0 warnings, and isPathIgnored is false. eslint.config.mjs:327-328 states that type-aware linting is never enabled, so a text edit cannot move an untouched file's verdict. The repo-wide pnpm lint is CI's run.
  • NOT MEASURED, declared to CI as in stages 8 to 10: scripts/build-schemas-check-mode.test.ts (it overran the foreground cap on its own in stage 10; it parses this file's source, whose code tokens the text-only proof shows unchanged), plus def-key-collisions and the two publish-smoke-* files (temp-tree rebuild or server boot).

Changeset. packages/spec files[] ships dist. In the built dist, the new phrases appear in 2 files (dist/migrations/index.js, .mjs), the old spellings in 0, and an unchanged control phrase in the same 2. Hence patch.

Acceptance notes


Generated by Claude Code

claude added 4 commits October 3, 2026 09:40
… numbers (stage 11)

Ruling C+D on the hand-written parts of packages/spec/src/migrations/registry.ts.

Form C, two comments: the dead #8495 now cites commit 4bfe1a5 (PR #8666)
and says what it refused; the dead #6239 cites commit f549a0d, the sweep
that retired the viewId-addressed view CRUD.

Form D, nine author-shown rationale units (step 17's mongodb paragraph and
eight step-18 fragments) that carried the eleven dead numbers. Each unit now
takes no number: the dead ones go, the live ones in the same unit go with
them, and the sentence states the cited decision in words.

Text only: no step, fragment id, order, entry or code token moves.

Claude-Session: https://claude.ai/code/session_01YDt3PzwfrkuFzUBF89WPmM
Co-authored-by: Claude <noreply@anthropic.com>
…stage 11)

`pnpm --filter @objectstack/spec check:generated --fix`, which proved only
docs/protocol-upgrade-guide.md stale and regenerated only it: line 68, the
projection of step 17's mongodb paragraph, drops its two numbers.

Claude-Session: https://claude.ai/code/session_01YDt3PzwfrkuFzUBF89WPmM
Co-authored-by: Claude <noreply@anthropic.com>
The step rationales ship in @objectstack/spec's dist (dist/migrations/index.js
and .mjs carry the new phrases, the old ones in 0 files, an unchanged control
phrase in the same 2), so the release takes a patch note. Clause-②: no.

Claude-Session: https://claude.ai/code/session_01YDt3PzwfrkuFzUBF89WPmM
Co-authored-by: Claude <noreply@anthropic.com>
@github-actions github-actions Bot added size/s documentation Improvements or additions to documentation tooling labels Oct 3, 2026
@github-actions

github-actions Bot commented Oct 3, 2026

Copy link
Copy Markdown
Contributor

📓 Docs Drift Check

This PR changes 1 package(s): @objectstack/spec, touching 1 documentable anchor(s).

1 hand-written doc(s) NAME something this change touched and may need an implementation-accuracy re-verification:

  • content/docs/kernel/cluster.mdx (via RETIRED_DEFS_BY_MAJOR (symbol, a top-level const object))

⛔ 1 release-owned page(s) also name something this change touched. These are read-only:

  • content/docs/releases/v17/17-6.mdx (via RETIRED_DEFS_BY_MAJOR (symbol, a top-level const object))

content/docs/releases/ is RELEASE-OWNED (AGENTS.md "Documentation Guardrails"): release
notes are written centrally at release time, and a code PR that edits them is the exact PR
that guardrail exists to stop. They are still audited — read-only. If one of them is actually
wrong, file an issue or open a dedicated docs-only PR; do not edit it here.

What this run could not see

Coarse fallback — 138 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 6dd99b82c38cd68b51c86241d53c5b7dda670a08 → packageMentionDocs.

Which tree this was computed on

This run read content/docs from 7d24d78f7cfbbe3f53afd64fb4eca19a8c32c9bb — the merge of head 64bbd3693ef2f926e4f3d61920fbac5f2ee65913 into base 6dd99b82c38cd68b51c86241d53c5b7dda670a08, which is what actions/checkout gives a pull_request run. Not the PR head.

A worktree cut from an older main holds a different content/docs, so re-deriving there can legitimately return a different list — that is a different tree, not a wrong row. To answer on the same tree:

# while this PR is open — GitHub drops the merge commit once it closes
git fetch origin 7d24d78f7cfbbe3f53afd64fb4eca19a8c32c9bb && git checkout 7d24d78f7cfbbe3f53afd64fb4eca19a8c32c9bb
# afterwards, rebuild it from the two parents, which stay fetchable
git fetch origin 6dd99b82c38cd68b51c86241d53c5b7dda670a08 64bbd3693ef2f926e4f3d61920fbac5f2ee65913 && git checkout -B drift-repro 6dd99b82c38cd68b51c86241d53c5b7dda670a08 && git merge --no-ff 64bbd3693ef2f926e4f3d61920fbac5f2ee65913

node scripts/docs-audit/affected-docs.mjs --json 6dd99b82c38cd68b51c86241d53c5b7dda670a08

⚠️ That checkout carried uncommitted changes, so the commit above does not fully identify what was read.

Advisory only, and a precision-first one (#9192): a page is listed because it names a
symbol, wire route or SDK method this diff touched — not because it mentions a changed
package. Each row says which anchor put it there, so a wrong row is reportable rather than
merely annoying. To re-verify, run the docs-accuracy-audit workflow scoped to these files:
node scripts/docs-audit/affected-docs.mjs 6dd99b82c38cd68b51c86241d53c5b7dda670a08 → pass the list as
args.docs, on the commit named under Which tree this was computed on.

@objectstack-fleet

Copy link
Copy Markdown
Contributor Author

Contract review

Served-tier: CONTRACT_REVIEW_TIER
Head-sha: 64bbd3693ef2f926e4f3d61920fbac5f2ee65913
Local-runs: none

PR #21578 (Part of #20234, stage 11) at the head above, read against the card body and every comment on it, claim 5967611924, dev report 5968433298, ruling 5749154545 on #19123, the stage-10 landing 5903202064, the net diff against main (3 files, +58/−30) and the head's check-runs. Read-only: no worktree, build, test or gate run. The cited commits and cards were read over git show in the checkout and REST.

Scope against the claim and the ruling. The claim names 2 form-C comments and 11 form-D rationale sites in the hand-written parts of packages/spec/src/migrations/registry.ts, "plus the tracker numbers in the explanatory paragraphs near them", then gen:upgrade-guide, one @objectstack/spec patch changeset, no gate touched, and it excludes the six census-pointer numbers (5923089344). The diff is exactly that: the 13 dead sites are gone (12 numbers; this review's own REST probe answers 404 for all 12, with the lit control #20234 at 200 and the dead control #8710 at 404), the 11 live numbers inside the same 9 rationale units are gone with them (form D: an author-shown passage carries no number), the 192 live author-visible numbers outside those units are left and counted, the six census-pointer numbers are untouched, the guide is regenerated, one patch changeset is added, and no script or gate changes. The scope reading is right.

① Derived judgments

Text only — right. All 11 hunks in registry.ts sit on string-literal lines (elements of the step17.rationale array, which is joined, and the STEP18_RATIONALE[].text concatenations) or on * / // comment lines. No id:, order:, entry, conversion id, export or code token appears on any added or removed line; the only structural change is two long string elements split across more lines inside the same initializer. Every hunk lies outside the six os-generated spans at head (1155–4974, 6341–20561, 20709–20934, 20944–24843, 24959–25089, 25100–26997): the rationale hunks fall at 341–6064, the docblock hunk at 6306–6314, the // hunk at 24941–24947. The dev's masked leaf-token proof (37,526 identical tokens, 6/6 controls) agrees with what the diff shows and is not needed to reach this reading.

Form C, the 2 comments — right. Both anchors are commits in this repository, rev-parse --disambiguate count 1 each, ancestors of origin/main, and each one's own subject names the number it replaces and the decision:

Live numbers in the two edited comment paragraphs stay (#8336, #5295, #6414, #6486, all 200): form C reaches dead citations. #8336 moved onto an added line in the re-wrap and resolves.

Form D, the 9 rationale units — each states its cited decision truly. Checked against each commit's subject or body (for c459da6, 9e0ba21 and bc56e18, whose subjects omit the number, against the number inside the commit's own diff: 8, 80 and 30 occurrences) and against the live cards read over REST:

  1. Step 17 mongodb paragraph (#6345, #4410): e2798fa is "one driver vocabulary … mongo→mongodb (cli/runtime: explicit driver(--database-driver / OS_DATABASE_DRIVER)在 CLI 与 standalone stack 之间仍有三处分叉(#6265 后续) #6345)". cdf4d9a (datasource.config 至今无人校验:驱动 configSchema 是声明但完全惰性的(ADR-0049 enforce-or-remove,#4001 收尾发现) #4410) first parsed datasource.config against the declared driver's contract, and its own table maps both mongo and mongodb to MongoConfigSchema, so "both accepted since datasource.config was first parsed against its driver's own contract" is true in substance and in sequence (2026-08-01, before the 2026-08-09 rename). The regenerated guide :68 carries the same words.
  2. connector-error-mapping-retired (#14676): 13c48c2 "retire connector.errorMapping … (integration/ErrorMappingConfig + ErrorMappingRule are 11 authorable keys with zero consumers — and one of them is named userMessage, colliding with the live #9934 channel #14676, ADR-0049)". Number dropped; the fragment already states the decision.
  3. form-view-option-default-removed (#12868; objectui#6263 ×2, [finding] SelectOption.default is an authorable key that nothing on the insert path ever reads — the select idiom is inert #7246, PR feat(objectql): enforce the select idiom — the option marked default: true is the field default (#7246) #7388): c459da6 narrows per-option default out of the form-view vocabulary with the object-field face kept enforced; objectui#6263 records the maintainer ruling of 2026-08-28, option 甲, on the metadata-admin form renderer's analysis, with the rider that the console needs no second default contract. "Enforced there by a maintainer ruling of 2026-08-10" is PR feat(objectql): enforce the select idiom — the option marked default: true is the field default (#7246) #7388's own body executing the ruling on [finding] SelectOption.default is an authorable key that nothing on the insert path ever reads — the select idiom is inert #7246 ("enforce"). "The console's form controls, none of which reads the key" is objectui#6263's finding. True.
  4. mapping-lookup-params-retired (#10329, #4509): 15d58db retires the lookup steering params (spec(data): mapping lookup transform params (object / fromField / toField / autoCreate) are authorable and read by nothing #10329, ADR-0049); 5966c2a (#4488 审计发现的四个"授权门断连":email_template / job / validation 的元数据条目到不了执行点,action 导航项点不动 #4509) at 17.0.0 retired mapping.extractQuery, errorPolicy and batchSize. True.
  5. memory-persistence-placeholder-refused (#8336, #8495): ${...} placeholders in authored metadata resolve to nothing and reach the consumer verbatim — the masked-failure escape #8078 measured, now load-bearing for two refusal messages #8336 is the placeholder card whose refuse-at-publish direction landed as the protocol-17 entry datasource-config-placeholder-refused (connection-material driver config keys; at head :2235), and 4bfe1a5 extends it to the memory driver's persistence.path / persistence.key. True.
  6. metadata-customization-protocol-retired (#13135, #12057): 9e0ba21 (2026-08-29) "Retire the paper metadata-customization protocol with its full coupling set"; [finding] spec ships a three-layer metadata-customization protocol (MetadataOverlaySchema, field-level change tracking) with zero consumers — published reference docs describe an unimplemented customization architecture #12057 is the finding it re-chartered, closed not_planned the same day. The kept words "ADR-0049 enforce-or-remove, maintainer ruling 2026-08-29" were already in the fragment. True.
  7. plugin-manifest-contributes-dead-members-retired (#10724, #10627, #10726, #11169): be21955's body says Plugin-manifest contributes.themes declares a theme-contribution channel nothing reads — same declared-but-unenforced shape as the retired stack themes carrier #10627 measured, over three repos and controlled, exactly one non-test read of manifest.contributes, and that kinds[].globs went under the maintainer ruling of 2026-08-24; bc56e18 later retired routes (ruled Option B) with the D3 entry plugin-manifest-contributes-routes-retired, present at head. "routes was left to a ruling of its own, which retired it as well" replaces a clause that was no longer true at head ("untouched pending its own fork"); the new clause is. True.
  8. stack-themes-carrier-retired (#10485): 35ad101 "Ruled B (退役授权面, 2026-08-21)". Number dropped; the fragment states the decision.
  9. translation-component-submit-label-retired (#10926, #9249 ×2): d173125 "Option A per the maintainer ruling on i18n: component-translation submitLabel copy key lost its only declared carrier when element:form retired (#9249) — decide retire vs re-anchor #10926 (2026-08-22)"; ADR-0049 candidate: element:form declares a full form contract with no renderer registration found in objectstack/objectui #9249 is the element:form no-renderer card, and the element-form-retired fragment renders at order 8, before this one at order 14, so "retired whole above" holds. True.

Regenerated artifact — right. docs/protocol-upgrade-guide.md:68 changes by exactly the step-17 words above and nothing else in the guide moves. spec-changes.json projects no step rationale, so it rightly does not move. No test, content/docs/** page or skill quotes a changed phrase; the old spellings that remain are live-number comments in other files, release-owned pages and test titles, all outside this stage.

Numbers added: one, #8666, a live PR beside its commit in a comment. No dead number is added, and no number is added to author-visible text.

Check-runs on the head, read at 2026-10-03T10:59Z: 33 runs, 26 success, 3 skipped (Build Docs, Console Pin Gate, Packed-tarball smoke), 4 in progress (Test Core 1/6, 2/6 and 4/6, Type Check · workspace), 0 failure. Check Changeset, Lint & Repo Gates, Spec property liveness, Build Core and the other three Type Check runs are success. The four in-progress runs are read as not concluded, not as passes; landing waits on them under the seat's pre-landing protocol. Nothing the diff touches (text inside strings and comments, one generated guide line) is a plausible cause for any of them to turn.

② Semver level

patch — right. packages/spec ships dist; the step rationales compile into dist/migrations/* and print to authors through os migrate meta, so the published text changes, while the two comments do not ship. No schema, export, accept set, migration step, entry, retired key or def, conversion or runtime behaviour moves, so neither minor nor major is in reach, and skip-changeset would under-declare a published text change. The changeset names '@objectstack/spec': patch and carries Clause-②: no; the PR body's Clause-②: no is right, since no accept set moves, and the ruling itself set Clause-②: no for these rewrites. Check Changeset: success.

③ Boundary flags

Dev flags (the deviations), each answered:

  1. Scope reading — removing the 11 live numbers inside the 9 units is inside the claim's "numbers in the explanatory paragraphs near them" and inside form D; leaving the 192 outside is right (not claimed, not dead). Accepted.
  2. Two clauses changed beyond deleting a number (routes; the ${...} placeholders in authored metadata resolve to nothing and reach the consumer verbatim — the masked-failure escape #8078 measured, now load-bearing for two refusal messages #8336 refusal) — both verified true above; each writes the decision in words where the number alone had carried it. Accepted.
  3. Live comment numbers stay — form C reaches dead citations; the four live ones resolve. Accepted.
  4. Three derived gates first exited 3 for unbuilt dist and then 0 — reported, not hidden; CI's Lint & Repo Gates is success. Accepted.
  5. Attribution — the three branch commits carry Claude-Session plus the model-free Co-authored-by trailer, read off git log, as AGENTS.md requires. Accepted.
  6. Merge of origin/main 6dd99b8 through os-regen-merge.sh with no regeneration commit owed — consistent with the diff (the guide moves by one line) and with check:generated passing inside Lint & Repo Gates. Accepted.
    7–9. No labels written; three pushes plus one empty probe and no force-push; worktree cleanup after the report — procedural, nothing to re-judge.

Open question (one): which card carries the 192 live author-visible numbers left in registry.ts step rationales — A, a next stage of #20234 split at the step boundary; B, #20749 lifts its "not this stage" exclusion; C, leave them.

Out-of-scope findings (two), both carrier none: the citation gate reads comment prose only, and check:doc-authoring's spec leg does not read step rationales, so the 11 dead sites were never in a census. A coverage boundary recorded the same way at stage 9; new gates default to no. Accepted as noted, not filed.

Docs-drift advisory on the PR (5968405965): it lists content/docs/kernel/cluster.mdx and one release-owned page through the RETIRED_DEFS_BY_MAJOR symbol. The only change near that symbol is one comment line, so no doc re-verification is owed and the release-owned page is rightly untouched.

Implemented-by: claude/issue-20234-registry-stage11
Reviewed-by: session_01YDt3PzwfrkuFzUBF89WPmM

VERDICT: PASS


Generated by Claude Code

@objectstack-fleet

Copy link
Copy Markdown
Contributor Author

ACCEPT — PR #21578 @ 64bbd369 (stage 11 of #20234)

domain:spec seat 2 (session_01YDt3PzwfrkuFzUBF89WPmM), holder of the stage-11 claim 5967611924 · 2026-10-03T11:14Z

After this lands, on this card: the six dead numbers from the census pointer 5923089344, serial with #21464 on ui/component.zod.ts.

Next: ready, auto-merge, the queue.


Generated by Claude Code

@objectstack-fleet
objectstack-fleet Bot marked this pull request as ready for review October 3, 2026 11:15
@objectstack-fleet
objectstack-fleet Bot enabled auto-merge October 3, 2026 11:15
@objectstack-fleet
objectstack-fleet Bot added this pull request to the merge queue Oct 3, 2026
Merged via the queue into main with commit 0bddffd Oct 3, 2026
37 checks passed
@objectstack-fleet
objectstack-fleet Bot deleted the claude/issue-20234-registry-stage11 branch October 3, 2026 11:38
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentation Improvements or additions to documentation size/s tooling

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants