Repository navigation
docs(spec): name only the OpenAPI document where the retired /docs viewer page was named - #25162
Conversation
…wer was named Claude-Session: https://claude.ai/code/session_01B2EeooonSXrANpkpgUSfFZ Co-authored-by: Claude <noreply@anthropic.com>
…angeset Claude-Session: https://claude.ai/code/session_01B2EeooonSXrANpkpgUSfFZ Co-authored-by: Claude <noreply@anthropic.com>
📓 Docs Drift CheckThis PR changes 1 package(s): ⛔ 1 release-owned page(s) name something this change touched. These are read-only:
What this run could not see
Coarse fallback — 144 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 c59414d9a56719bcd050a2679df8340e6d70dd09 && git checkout c59414d9a56719bcd050a2679df8340e6d70dd09
# afterwards, rebuild it from the two parents, which stay fetchable
git fetch origin 6b44efa7b4a429994dc6d92c3de96392d4e03f3f 32bfe10cda2f5fdec1be6233b6f45e013ab256f6 && git checkout -B drift-repro 6b44efa7b4a429994dc6d92c3de96392d4e03f3f && git merge --no-ff 32bfe10cda2f5fdec1be6233b6f45e013ab256f6
node scripts/docs-audit/affected-docs.mjs --json 6b44efa7b4a429994dc6d92c3de96392d4e03f3f
|
Contract reviewServed-tier: Face: published schema ( ① Derived judgments
② Semver level
Clause-②: no — matches the diff. ③ Boundary flags
Implemented-by: VERDICT: PASS Generated by Claude Code |
CI note:
|
席位核对ACCEPT ·
Generated by Claude Code |
Requested by Bill · project thread
Fixes #25121
Clause-②: no
Metadata-protocol: none
What changed
mainno longer serves the OpenAPI document's HTML viewer page (GET {basePath}/docs, retired by PR #25124,1b3b65e64).registerRoutesgatesregisterOpenApiEndpointsonapi.enableOpenApi, and that registrar now mounts one route,GET {basePath}/openapi.json(packages/rest/src/discovery-routes.ts, read atorigin/main23540582f). The spec text that still named the viewer now names the OpenAPI document only:rest-server.zod.ts,enableOpenApiTSDocopenapi.jsonplus "GET {basePath}/docsfor a zero-dep Scalar-rendered HTML viewer"GET {basePath}/openapi.jsonrest-server.zod.ts,enableOpenApidescribeGET BASEPATH/openapi.json)"rest-server.zod.ts,documentation.enabledtombstone prescription/openapi.jsondocument and its/docsviewer unmounted."/openapi.jsondocument unmounted."liveness/rest_api.json,enableOpenApievidence/openapi.jsonand the/docsviewer"/openapi.json, the OpenAPI document";verifiedAtrestamped 2026-10-22 (call graph re-closed againstorigin/main)scripts/lib/openapi-self-consistency.ts, rule 1 comment and the dangling-ref refusalGET /api/v1/openapi.jsonand client generatorsmigrations/entries/semantic/18.rest-api-config-dead-keys-retired.ts,replacementandacceptanceCriteriaGET /openapi.jsonandGET /docsunmounted"GET /openapi.jsonunmounted"Regenerated:
gen:schema(no tracked change),gen:docs→content/docs/references/api/rest-server.mdx(the two describe rows and the prescription row). Onepatchchangeset for@objectstack/spec:.changeset/25121-spec-openapi-viewer-prose.md.The
documentation.enabledrefusal is an accept-set no-op: same key refused, same issue path, same opening sentence; only its last clause changed. The two pins that read the prescription (packages/spec/src/api/rest-api-config-dead-keys-retirement.test.tsDOCS_ENABLED_PRESCRIPTIONandpackages/rest/src/rest-api-config-dead-keys-refused.test.ts) match up to "api.enableOpenApi: falseis the switch", which the new text keeps, so neither needed a flip. Both are green below.Tests (at
32bfe10cd, the final head)pnpm --filter @objectstack/spec test(lock VERDICT command-exit 0): Test Files 706 passed (706), Tests 21462 passed, 1 todo.pnpm --filter @objectstack/spec typecheck(lock VERDICT command-exit 0).pnpm --filter @objectstack/rest exec vitest run --maxWorkers=2 src/rest-api-config-dead-keys-refused.test.ts src/rest-docs-viewer-retired.pin.test.ts(lock VERDICT command-exit 0): Test Files 2 passed, Tests 17 passed.pnpm --filter @objectstack/spec check:generated: exit 0, all 14 artifacts up to date (it was red oncheck:docsbeforegen:docs).Gates
node scripts/pm/dispatch-gates.mjs --commands --repo objectstack-ai/objectstackat32bfe10cdderived 111 commands; each was run with its exit code recorded before any pipe.--ranreconciliation: "111 derived famil(ies) accounted for — 110 run, 1 NOT-MEASURED (1 DERIVED from a recorded exit 3)".check:exported-any/check:generatedhad read a spec dist while a concurrent turbo build was rewriting it). They were re-run green after the builds.pnpm check:dual-build-cjs-loads, exit 3. It needs every workspace package built, and this worktree built only the spec, lint, formula, objectql and client-react closures.Lint & Repo Gatesruns it in CI.check:skill-frame-freshnessexit 0.check:dev-prereqsexit 1, NOT MEASURED: it reports "the workspace is not built" (33 of 70 packages have no dist) and names no stale spec dist. That is the box's state, not a finding.Acceptance notes
ApiTestingUiConfigSchema(ApiDocumentationConfigSchema.ui,documentation.zod.ts, viewer enum including'scalar') andOpenApiGenerationConfigSchema.uiPath(plugin-rest-api.zod.ts, default/api/docs, echoed byREST_API_PLUGIN.md). Measured atorigin/main23540582f,git grep -woutsidepackages/spec, the generated references and the changelogs finds no reader of either.ApiDocumentationConfigappears once, in a comment atpackages/runtime/src/http-dispatcher.ts:3061.uiPathappears once, as an unrelated local variable atpackages/rest/src/ui-routes.ts:79.RestApiPluginConfiginpackages/restis its own interface (rest-api-plugin.ts:94), not the spec schema. The seat files these as their own card..changeset/25077-rest-docs-viewer-attr-escape.md(already onmain) describes a viewer fix to a page that has since been retired. It is release-owned input, so it is not touched here.Generated by Claude Code