Repository navigation
docs(spec): metadata.endpoints.item names the package-qualified by-name read it already gates - #33312
Conversation
…me read it already gates The item switch's describe() enumerates its mount radius; the mount-table pin in @objectstack/rest removes fourteen routes, the describe named thirteen. Add GET /meta/:type/:ns/:name (ADR-0150 D5), fix the liveness row note's count, and regenerate the reference docs row. Claude-Session: https://claude.ai/code/session_01FEkQ5oCewffujRRbsX1TaR Co-Authored-By: Claude <noreply@anthropic.com>
📓 Docs Drift CheckThis PR changes 1 package(s): 8 hand-written doc(s) NAME something this change touched and may need an implementation-accuracy re-verification:
⛔ 4 release-owned page(s) also name something this change touched. These are read-only:
What this run could not see
Coarse fallback — 172 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 dffbaadf5978bf1b09bf71b73aebad62b03042cc && git checkout dffbaadf5978bf1b09bf71b73aebad62b03042cc
# afterwards, rebuild it from the two parents, which stay fetchable
git fetch origin 6a28a271e86a556b8757c031c959bf6e992a0c83 cc5adeb43b99478ca8c015e0d8d6456573e1c9bb && git checkout -B drift-repro 6a28a271e86a556b8757c031c959bf6e992a0c83 && git merge --no-ff cc5adeb43b99478ca8c015e0d8d6456573e1c9bb
node scripts/docs-audit/affected-docs.mjs --json 6a28a271e86a556b8757c031c959bf6e992a0c83
|
|
domain:spec#1 · os-project-manager · session_01FEkQ5mswnWm181XgYcCUag Contract reviewServed-tier: PR #33312 for card #33085. Inputs read: the card body and its four comments (6850771234, 6880054551, 6880069048, 6880624366), the PR body and file list, the net diff against ① Derived judgments
Gate verdicts on the head, read at 2026-11-14T16:28Z: 45 check-runs, 14 ② Semver level
Clause-②: no — carried on both the PR body and the changeset, and correct: the diff neither widens nor narrows what the schema accepts, and it is not a ③ Boundary flags
④ Design judgment
Findings:
No must-fix and no should-fix. Nits alone end the round; neither is on a prose face, so fixing either here would move the head past this record. The rest of the diff (the changeset prose and the regenerated mdx row) is the lane seat's ACCEPT at Implemented-by: VERDICT: PASS |
|
domain:spec#1 · os-project-manager · session_01FEkQ5mswnWm181XgYcCUag ACCEPT · PR #33312 (#33085) · head
|
Requested by Leehom · project thread
Fixes #33085
Clause-②: no
Metadata-protocol: none
维护者速读
RestServerConfig.metadata.endpoints.item的 describe 补上它已经在关的第 14 条路由GET /meta/:type/:ns/:name(ADR-0150 D5 的按包限定读取);liveness 台账同一行的说明把「十三条」改成「十四条」;参考文档那一行重新生成。@objectstack/rest的挂载表测试实测是 14 条,文案只列了 13 条,运维读文档会以为限定读取不受它控制。packages/spec/src/api/rest-server.zod.ts里item的 describe;其次packages/spec/liveness/metadata_endpoints.json的endpoints.item行。pnpm --filter @objectstack/rest exec vitest run src/rest-config-mount-table.pin.test.ts,预期 24/24 通过,其中metadata.endpoints.item行列出的 14 条与新 describe 一一对应。What changes
packages/spec/src/api/rest-server.zod.ts: themetadata.endpoints.itemdescribe()now names the package-qualified by-name readGET /meta/:type/:ns/:name(ADR-0150 D5), which answers through the item read's own handler. The string now names all fourteen routes the mount-table pin lists for this switch:GET/PUT/DELETE /meta/:type/:name,/references,/layers, the six history routes, the qualified read, the book tree and the app metadata bundle.packages/spec/liveness/metadata_endpoints.json: theendpoints.itemrow note said "thirteen mounts since Seam: one request opens a record — a record-page payload (record + related counts and first rows + field access + lock) and an app-scoped metadata bundle, so a record open is 2–3 requests instead of 23–45 serialized in three stages #27627"; it now says fourteen and names both additions (Seam: one request opens a record — a record-page payload (record + related counts and first rows + field access + lock) and an app-scoped metadata bundle, so a record open is 2–3 requests instead of 23–45 serialized in three stages #27627's bundle, ADR-0150 D5's qualified read). Folded under the bounded same-class fix; the seat amended the claim's file surface (comment 6880069048).content/docs/references/api/rest-server.mdx: the generated row, regenerated bypnpm --filter @objectstack/spec check:generated --fix(it proved onlycheck:docsstale)..changeset/33085-item-describe-qualified-read.md:@objectstack/specpatch. The describe ships indist, andliveness/is in specfiles[].Why
The JSDoc above
endpointssays each switch'sdescribe()enumerates every mount it takes. The pinpackages/rest/src/rest-config-mount-table.pin.test.tsonorigin/mainfd7b378clists fourteen routes undermetadata.endpoints.item, and the describe listed thirteen. No other route in that row moved since the card was filed (/referencesand/layerswere already named). The describe follows the pin;packages/rest/**is untouched.Tests
pnpm --filter @objectstack/spec typecheckexit 0;pnpm --filter @objectstack/spec exec vitest run --maxWorkers=2 src/api/rest-server: Test Files 1 passed (1), Tests 53 passed (53).pnpm --filter @objectstack/rest exec vitest run --maxWorkers=2 src/rest-config-mount-table.pin.test.ts(read-only, as the measurement): Test Files 1 passed (1), Tests 24 passed (24).Acceptance notes
The same count drift sits in files outside this card's surface, so they are listed here and in the report for the seat to file:
packages/rest/src/rest-server.ts(theregisterPerItemRoutedocblock inregisterMetadataEndpointsInner) says the per-item face is "thirteen mounts" and leaves out the qualified read.packages/rest/src/rest-server.ts(theendpointsmember docblock of the normalized config) listsmaintenanceas/diagnostics,/_drafts,POST /_migrate-storedand leaves outPOST /_migrate-record-currency-codes, which the pin lists as the fourth.docs/qa/platform-checklist/areas/api-backend.json(api-backend.rest-metadata-config-contract) saysitemtakes thirteen mounts in three places and does not name the qualified read.Verification
On
cc5adeb4:node scripts/pm/dispatch-gates.mjs --commands --repo objectstack-ai/objectstackderived 101 commands. 100 ran with exit 0.pnpm check:dual-build-cjs-loadsexited 3 (PREREQUISITE NOT MET: it needs every package'sdist, and only the spec, lint, objectql and client closures were built), so it is NOT MEASURED here and left to CI.--ranreconciliation: "101 derived famil(ies) accounted for — 100 run, 1 NOT-MEASURED".node scripts/check-nul-bytes.mjsexit 0.🤖 Generated with Claude Code
https://claude.ai/code/session_01FEkQ5oCewffujRRbsX1TaR