Repository navigation
fix(spec): the two-master controlled_by_parent refusal names its release - #23448
Conversation
Co-Authored-By: Claude <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01D6F9axfoPzR7t8G1J7Ytzz
…o-master-names-release
📓 Docs Drift Check1 anchor(s) derived from 1 changed package(s); no hand-written page names any of them, so this run has nothing to list — not a clean bill of health. This check sees only pages that NAME a derived anchor: one that documents this change in prose, or enumerates it in an authoring dialect, names none and stays invisible to it on every run. What this run could not see
Coarse fallback — 142 page(s) merely mention a changed package (the pre-#9192 predicate, kept for the deliberately-wide backstop): Which tree this was computed onThis run read A worktree cut from an older # while this PR is open — GitHub drops the merge commit once it closes
git fetch origin 3c237e292386a1d5bd2c270cf383e72d2dad525e && git checkout 3c237e292386a1d5bd2c270cf383e72d2dad525e
# afterwards, rebuild it from the two parents, which stay fetchable
git fetch origin 2659901c5ea8a174de4129264cb857e203d42b88 ccffa6a42111b242698806fea45059a1fd3141fa && git checkout -B drift-repro 2659901c5ea8a174de4129264cb857e203d42b88 && git merge --no-ff ccffa6a42111b242698806fea45059a1fd3141fa
node scripts/docs-audit/affected-docs.mjs --json 2659901c5ea8a174de4129264cb857e203d42b88 |
Contract reviewServed-tier: Inputs read: card #23387 (body + 3 comments: triage ① Derived judgments
② Semver level
③ Boundary flags
Implemented-by: VERDICT: PASS Adopted by Generated by Claude Code |
Fixes #23387
Clause-②: no
The two-required-masters refusal of a
controlled_by_parentobject (controlledByParentMasterRefusal,several-required-masters) now reads "ADR-0055 §1: since @objectstack/spec 18, a controlled-by-parent object derives its master from exactly one requiredmaster_detailfield, ...", the wording its no-master sibling already carries.@objectstack/spec17.7.0 accepts both shapes, so both refusals now date themselves for 17 to 18 upgraders.What changed
packages/spec/src/data/controlled-by-parent-master.ts: message text of the two-master branch only. Refused shapes, issue paths and the prescribed fix are unchanged.packages/spec/src/data/object.test.ts: the existing both-branches test now asserts that the two-master and the no-master message each contain "since @objectstack/spec 18, a controlled-by-parent object derives" (the pin that both branches carry it)..changeset/23387-two-master-names-release.md:patchfor@objectstack/spec(text only, no accept-set change).Pin sweep
Grepped the repo for the message text (
does not say which master,a controlled-by-parent object derives,several-required-masters,controlledByParentMasterRefusal): the only other asserters areobject.test.tsprefix matchers that stop atADR-0055 §1:(still green);packages/lint/src/rule-explanations.tscarries its own prose, not this message. No consumer pin asserts the old text, and the plugin-security test named as a lead does not assert it. File surface matched the claim.Verification
@objectstack/spec:vitest run src/data src/conversions140 files / 4568 tests pass;test:repo59 files / 1011 tests pass;typecheckgreen.dispatch-gates --commands: all 85 derived families run (the build-dependent ones exited 3 before@objectstack/specwas built and 0 or green after), reconciled with--ran: 85 derived, 85 run, 0 UNRUN.Dedupe/ruling: no maintainer ruling; triage
6161187727forbids any change to which shapes are refused.🤖 Generated with Claude Code
https://claude.ai/code/session_01D6F9axfoPzR7t8G1J7Ytzz