Repository navigation
docs: default record page remedies name the other package's page, not the whole package - #23831
Conversation
…pPlugin.bundle names its readers The save door's refusal, PageSchema.isDefault's TSDoc and the error-code ledger comment now say what the registry's remedy says: compose the deployment without the other package's page, not without the whole package. The save door's pin moves with its text. AppPlugin's private bundle field names the three structural readers outside the class. Claude-Session: https://claude.ai/code/session_01CN3bgHivgMGBHWTNUbYCDp Co-authored-by: Claude <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CN3bgHivgMGBHWTNUbYCDp Co-authored-by: Claude <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CN3bgHivgMGBHWTNUbYCDp Co-authored-by: Claude <noreply@anthropic.com>
📓 Docs Drift CheckThis PR changes 3 package(s): 14 hand-written doc(s) NAME something this change touched and may need an implementation-accuracy re-verification:
⛔ 5 release-owned page(s) also name something this change touched. These are read-only:
What this run could not see
Coarse fallback — 147 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 7d71f988bf1b0511bf975eebf8ced081652336db && git checkout 7d71f988bf1b0511bf975eebf8ced081652336db
# afterwards, rebuild it from the two parents, which stay fetchable
git fetch origin 43567a8fcbed46b05056b65a45e3f90147f806d4 be4b60867960ccccd38bf27ae717069e15312609 && git checkout -B drift-repro 43567a8fcbed46b05056b65a45e3f90147f806d4 && git merge --no-ff be4b60867960ccccd38bf27ae717069e15312609
node scripts/docs-audit/affected-docs.mjs --json 43567a8fcbed46b05056b65a45e3f90147f806d4
|
席位核对 · ACCEPT · PR #23831 @
|
Contract reviewPost-merge audit of the merged head, rendered 2026-10-16T11:33Z. PR #23831 (card #23553) merged out of the queue as merge commit ee0e115 without the contract review its file list owed: two non-test files under packages/spec/src are the published-schema face, so the review is served at CONTRACT_REVIEW_TIER. The reviewed head below IS the merged content (the Landed comment on the card reports every blob at ee0e115 equal to this head). This record is the compensating control; it is not a second landing decision. Served-tier: Inputs: the card's body and all five comments (triage, claim, dev report, ACCEPT, Landed), the PR body and file list, the net diff against merge base 1ecb08a (three commits, six files, +32/-5), and the 43 check-runs on this head: 37 success, 6 skipped (opt-in and matrix placeholders), 0 failure, both Governed Surface Queue Guard runs success. The dispatch order and the dispatching seat's ACCEPT were not inputs. ① Derived judgments
② Semver levelThe changeset declares ③ Boundary flags
Implemented-by: VERDICT: PASS |
Fixes #23553
Clause-②: no
What changed
The package registry's
DEFAULT_RECORD_PAGE_CONFLICTremedy already says "compose the deployment without the other package's page". Three sibling texts still told the author (or an AI) to drop the whole package. They now say the same thing as the registry, with no option name, package name or tracker number:packages/metadata-protocol/src/protocol.ts: the save door's refusal (remedy clause only)packages/spec/src/ui/page.zod.ts:PageSchema.isDefaultTSDocpackages/spec/src/api/error-code-ledger.zod.ts: source commentThe save door's pin (
packages/objectql/src/default-record-page-save-door.test.ts) moves to the new text in the same commit. It is changed, not deleted.The coupling.
AppPlugin'sprivate bundle: anygets a doc comment naming its readers outside the class. I chose this over a public readonly accessor because it is smaller and adds no public surface. Measuring the readers turned up three of them, not the one the card names:stackDeclaresOrganizationRecordPage(@objectstack/core), the translations check in@objectstack/cli'sserve.ts, andgraft-runtime-hooks.ts. The comment names all three.Changeset: one file,
patchfor@objectstack/spec(it shipssrc/**/*.zod.ts),@objectstack/metadata-protocol(the refusal string is indist/index.js) and@objectstack/runtime. For runtime I measured the builtdist/index.d.tsanddist/index.d.cts: both carry the new comment, so the shipped text changes.Verification (head
be4b60867)turbo run buildfor spec, metadata-protocol and runtime plus their closure: 31/31 tasks,VERDICT command-exit 0.pnpm --filter @objectstack/objectql exec vitest run --maxWorkers=2 src/default-record-page-save-door.test.ts: 34/34 passed, run against the rebuiltmetadata-protocoldist. The old remedy text occurs 0 times indist/index.js, so the moved pin is reading the new string.@objectstack/objectql,@objectstack/metadata-protocoland@objectstack/runtime: exit 0.pnpm --filter @objectstack/spec check:generated: all 14 generated artifacts are up to date,check:docsincluded.dispatch-gates --commands): 93 families. 92 exit 0.check:dual-build-cjs-loadsexited 3 (PREREQUISITE NOT MET: it needs a fullpnpm build), so it was NOT MEASURED locally and CI runs it.check-engine-split-ratioandcheck-plugin-teardown-shape --self-testfirst refused on the shallow clone; after deepening, both exit 0.--ranreconciliation: 92 run, 1 NOT-MEASURED, 0 UNRUN.Acceptance notes
18.page-default-record-page-one-per-object-refused.tsalready says "compose the deployment without that package's page", which matches the new wording, so it is left as is.code,status,objectandholdersare the same, and no.describe()changed.🤖 Generated with Claude Code
https://claude.ai/code/session_01CN3bgHivgMGBHWTNUbYCDp
Generated by Claude Code