Repository navigation
docs(governed): ADR-0087, AGENTS.md and the retirement playbook describe the D4 projections and the migration registry as main builds them - #22796
Conversation
…as main builds them ADR-0087's D4 progress note records #22483 (PR #22556) and #22485 (PR #22638) as landed and its other not-yet-landed sentences move to the past tense; the ruling quotation is untouched. AGENTS.md re-counts the checked-in generated artifacts (six) and the ADR-0087 row of the regenerate table says there is nothing to commit. The retirement playbook sends step edits to registry.ts.template and drops the gen:spec-changes / gen:upgrade-guide laps. Co-authored-by: Claude <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011u73oxZ5X95qrARPTeoU6v
…try's among them check:generated classifies gen:migration-registry as an ungated generator since the registry left git, so the "Touched packages/spec" section's two-generator sentence now names all three and says why the registry's output needs no gate. Co-authored-by: Claude <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011u73oxZ5X95qrARPTeoU6v
Contract reviewServed-tier: Reviewed by the skills seat 2 in seat ( ① Derived judgments
② Semver levelNo published package is touched; ③ Boundary flags
Implemented-by: VERDICT: PASS Generated by Claude Code |
维护者速读(终稿)· PR #22796 · #22667席位 2( 改了什么:三份给 agent 读的受管文本里,12 处把 为什么改:旧句子把下一个改 spec 迁移的 agent 送进一圈已不存在的重生成;本周三个 dev 已经重生成后又回退。旧 playbook 还会让人把 step-18 说明手改进一个生成文件,下一次构建静默丢失。 风险与代价(含回滚):零发布面、零门禁改动;ADR-0087 里你的裁决逐字引文没动;ADR-0120 的历史记录没动。代价:playbook 删掉一条已失效的陷阱说明(3 行压 1 行)来抵付新增模板说明,行数棘轮 337/337 不动;AGENTS.md 1108→1109(上限 1116)。回滚 = revert 本 PR。 席位意见:ACCEPT。每句都对着树核过(三个落地 commit 是 你要做的:同意即给一个 APPROVED review;落地由席位走队列。 Generated by Claude Code |
Fixes #22667
Clause-②: no
Three governed texts still described
packages/spec/spec-changes.json, the protocol upgrade guide andpackages/spec/src/migrations/registry.tsas committed files with a regeneration lap. Onmainnone of the three is committed. This PR restates 12 sites asmainnow builds them (11 at the first head, site 12 in patch round 1 below). No code, gate, script or published file changes.Dispatched by
/pm-dispatch skillsseat 2 (PM sessionsession_011u73oxZ5X95qrARPTeoU6v, claim6106319581), executed in the same session. Tree read:origin/maina2e94c2a05. The diff is measured from that base, and every gate below ran on headbd6337b8b.What
maindoes (measured before editing)a2e94c2a05git ls-files packages/spec/spec-changes.json packages/spec/protocol-upgrade-guide.md content/docs/protocol-upgradeprints nothing..gitignorelists all three paths.merge=os-regenroutegrep -n os-regen .gitattributesshows 16 routed paths, and neither projection is one of them.514bf3c101(PR #22556) deletesdocs/protocol-upgrade-guide.md merge=os-regenand reduces that file to a pointer stub.spec-changes.json's copy and route went at #2248546064dfa03(PR #22638) deletes the file andpackages/spec/spec-changes.json merge=os-regen.registry.tsis generated and not committed.gitignorelists it.registry.ts.templateis tracked (ed1de8c2db, PR #22706) and holdsSTEP18_RATIONALE,const step18and the earlier steps'conversionIds/rationale.gen:migration-registryexists;check:migration-registrydoes notpackages/spec/package.jsonscripts.check-generated.tsfilesgen:migration-registryunderUNGATED_GENERATORS, and its gate was retired with the committed copy.check:spec-changes/check:upgrade-guiderun--check: they generate in memory, read nothing on disk, and exit 1 only when generation fails (lib/projection-cli.ts).All five commits named above pass
git merge-base --is-ancestoragainst HEAD with exit 0. A positive answer needs no control leg.The 11 sites (location, then before and after)
:3Status:207-:208(2026-08-06 note)spec-changes.jsonis deliberately unsharded":258-:273(D4 note)514bf3c101(PR #22556), #22485 as46064dfa03(PR #22638). No committed copy remains, and a registry entry's PR regenerates neither projection.:283-:284:431-:432(P2 bullet):438-:442(P2 amendment):706:717(regenerate table)gen:spec-changes,gen:upgrade-guidegen:migration-registry(install, build and test run it too) writes the gitignoredregistry.ts.:213-:216(D3 step)packages/spec/src/migrations/registry.ts"packages/spec/src/migrations/registry.ts.template(registry.ts由gen:migration-registry从它与entries/整文件生成并被 git 忽略,在registry.ts里手改不会进提交)", which is the wording proposed in6100582202:260gen:spec-changes、gen:upgrade-guide、gen:api-surface、gen:docs。"gen:api-surface、gen:docs;新条目跑gen:migration-registry;D4 投影不提交,本地不重生成。":335-:337summary也会过期 … 所以纯散文改动也要gen:spec-changes+gen:upgrade-guide"summary不欠重生成。它逐字进两条 D4 投影,都不提交;PR 渲染其 diff。"The card lists sites 2, 3, 4 and 6 to 11, with site 9 coming from
6100582202. The dispatch's same-class sweep of ADR-0087 found sites 1 and 5, which describe unlanded work in the same way. The verbatim ruling quotation at ADR-0087:219-:220is unchanged, and so is ADR-0120:459-:460, which triage ruled to be history. The PR contains nothing beyond these 11 sites:git diff --stat a2e94c2a05 HEADshows 3 files, +37 / -31.How site 7's count was measured: the table's "Gate that fails" column names eight gates, and six of them still guard tracked artifacts.
check:docs:content/docs/references/(225 tracked files)check:api-surface:packages/spec/api-surface/(19)check:authorable-surface:packages/spec/authorable-surface/(14), plusjson-schema.manifest/(14)check:skill-docs:skills/README.md,content/docs/ai/skills-reference.mdxcheck:skill-refs:skills/*/references/_index.md(9)check:react-blocks:skills/objectstack-ui/references/react-blocks.mdcheck:spec-changesandcheck:upgrade-guideare the other two, and their projections have 0 tracked files.Site 8 differs from the card. The card proposed
check:migration-registry, but PR #22706 (ed1de8c2db) removed that gate after the card was filed. The row therefore names the two gates that do exist and states that there is nothing to commit.Site 11 differs from the card too. No committed artifact carries a conversion's
summaryany more. It is read only by the two in-memory projections (spec-changes.tsto,build-upgrade-guide.tstable rows) and by their rendered PR diff. A summary-only edit therefore owes no regeneration.Line budget
AGENTS.md: 1108 lines before and 1108 after, with net 0 on the two edited lines. Ratchet line:✓ check-skill-line-ratchet: AGENTS.md is 1108 lines (ceiling 1116; headroom 8).The widest table row is 768 bytes (pin 768)..claude/skills/spec-property-retirement/SKILL.md: 337 lines before and 337 after. Ratchet line:✓ check-skill-line-ratchet: .claude/skills/spec-property-retirement/SKILL.md is 337 lines (ceiling 337; headroom 0).Site 9 adds +2 lines for its new parenthetical. Site 11 pays for them with -2 lines by deleting the false regenerate instruction. That is a content deletion, not a re-wrap. Site 10 swaps one line for one line. Every new line is at most 120 bytes (largest 119). Breaks fall only where the ratchet's ownbreakLegalallows one.Gates
The gate list came from
node scripts/pm/dispatch-gates.mjs --commands --repo objectstack-ai/objectstackwith no paths: 31 commands derived from the merge basea2e94c2a0. All 31 exited 0 on headbd6337b8b.dispatch-gates --ranreports:✓ dispatch-gates --ran: 31 derived famil(ies) accounted for — 31 run, 0 NOT-MEASURED (a DERIVED zero — all 31 recorded an exit code and none of them is 3).The first run of
pnpm --filter @objectstack/lint run check:doc-formula-expressionsrefused with exit 3 (PREREQUISITE NOT MET:@objectstack/formulaand@objectstack/lintwere unbuilt). I built both under the verify lock (VERDICT command-exit 0) and re-ran it: exit 0.Gates the dispatch named, with their verdict lines:
check-adr-0087-registration --base origin/main: "this PR adds no declared-breaking changeset". Its--self-testpasses 463 assertions.check:adr-anchors: OK (64 anchored files, 43489 citations resolve).check-adr-links: 725 relative link destinations resolve.check-adr-symbol-anchors: 2309 anchors across 142 records resolve.check:pm-governed-prose: 2 surfaces name all 6 governed surfaces.check:pm-governed-merges: passes.check:pm-skill-ratchet: the two lines above.check:skill-frame-sync: coherent.check:pm-prior-rulings: 155 cases pass.check:future-spec-major: passes.check:docs-audit-scope: in sync.check:doc-authoring: clean.check:pm-skill-id-lint: 34 files clean.check:nul-bytes: OK (10817 files, no raw control bytes).check-ci-filter-parity: OK.The diff touches no package, so no package build or test is owed. CI runs the rest.
Changeset: none. The diff touches only
docs/adr/**,.claude/**and the private root'sAGENTS.md, and no package'sfiles[]ships any of them. The PR therefore takesskip-changeset.Acceptance notes
packages/spec?" still says "Two generators have no gate at all —gen:openapiandgen:sbom".check:generated --reconcile-onlyon this tree prints "3 ungated generators", becausegen:migration-registryjoined the list at PR build(spec): the migration registry is generated at build and leaves git #22706. It is the same family as this card, but it lies outside the AGENTS.md lines this claim declared, so it is not edited here and goes back to the seat.TypeScript Type Check… runs its gates sequentially" predates this card. Five of the six gates run inType Check · source gates, andcheck:api-surfaceruns inType Check · consumer gates. Both lanes sit behind the requiredTypeScript Type Checkaggregate. Noted only.:459-:460and:560record what that PR ran, and stay untouched as history.Patch round 1 (written by the PM seat from the diff on
originand the dev's report; head6cb0d8ecd):761–:762, the same "Touchedpackages/spec?" section. Before: "Two generators have no gate at all —gen:openapiandgen:sbom. Nothing verifies their output is current; the wrapper reports that each run rather than staying silent." After: "Three generators have no gate at all. Nothing verifiesgen:openapiandgen:sbomare current, andgen:migration-registrywrites gitignored output that install, build and test regenerate; the wrapper reports all three each run rather than staying silent." Evidence:packages/spec/scripts/check-generated.tslistsgen:migration-registryunderUNGATED_GENERATORSsince PR build(spec): the migration registry is generated at build and leaves git #22706 (ed1de8c2db), andpnpm --filter @objectstack/spec check:generated --reconcile-onlyprints "3 ungated generators". The claim's AGENTS.md surface was widened to the whole section on the card (comment 6106593221) before the edit.bd6337b8b..6cb0d8ecd:AGENTS.md+3/−2, nothing else. Whole PR against basea2e94c2a05: 3 files, +40/−33.AGENTS.md1109 lines (ceiling 1116; headroom 7), +1 for the sentence's third line; the playbook and ADR-0087 are unchanged from the first head.维护者速读(草稿)
改了什么:三份给 agent 读的受管文本是 ADR-0087 的 D4 进度注、AGENTS.md「改了
packages/spec要重生成什么」一节和属性退役 playbook。里面还有句子把spec-changes.json、升级指南和迁移注册表registry.ts当作提交在仓里的文件来写。本 PR 把这 12 处改成 main 现在的样子:两条投影只在发布或文档构建时生成,PR 上只在内存里生成并展示 diff;registry.ts在安装和构建时由模板加条目文件生成,不提交。改动只有文字,不碰代码、门禁和发布内容。为什么改:旧句子会让下一个改 spec 迁移的 agent 去跑一圈已经不存在的重生成。本周已有三个 dev 重生成后又回退。旧句子还会让人把 step-18 的说明手改进一个不会被提交的生成文件,改动在下一次构建时静默丢失。
风险与代价(含回滚):不发布任何包,不改任何门禁或脚本。ADR-0087 里维护者裁决的逐字引文没有动。回滚就是 revert 这一个 PR。代价是 playbook 删掉了一条已失效的陷阱说明(3 行压成 1 行),用来抵付新增的模板说明,行数棘轮不变。
席位意见:
你要做的:看一遍上面的 11 项清单和补丁轮 1 的第 12 项。同意就给一个 APPROVED review,落地由席位来做。
Generated by Claude Code