Uh oh!
There was an error while loading. Please reload this page.
docs(spec): redirect the contributes.routes recommendation to the imperative http.server mount - #11327
Conversation
…p.server mount (#10726) `contributes.routes` has zero readers monorepo-wide, so an author following the shipped guidance gets a clean parse and serves nothing. Per the maintainer ruling (2026-08-22, Option B), the four author-facing materials that recommended it are corrected now, ahead of and independent of the key's removal (#10724): - skills/objectstack-api/SKILL.md — the `apis:` decision table's second row - packages/spec/src/api/dispatcher.zod.ts — the HttpDispatcher protocol doc - docs/adr/0088-metadata-kind-admission-and-retirement.md — the `router` row - packages/spec/src/ui/app.zod.ts — the `App.apis` removal message The two content/docs/references/** pages are the regenerated projection of the two .zod.ts edits (pnpm --filter @objectstack/spec gen:docs), not hand edits. The replacement was verified live before it was written: `http.server` is registered by plugin-hono-server and mounted by real in-tree consumers, so this is not a redirect to a second dead form. No schema key is added, removed or re-typed. The tombstone itself is #10724's. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01RadETjNRLALFLhFA3xehZP
📓 Docs Drift CheckThis PR changes 1 package(s): 1 hand-written doc(s) NAME something this change touched and may need an implementation-accuracy re-verification:
⛔ 2 release-owned page(s) also name something this change touched. These are read-only:
What this run could not see
Coarse fallback — 126 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 e664598ab462cc45eff5de7db70a70047410cb37 && git checkout e664598ab462cc45eff5de7db70a70047410cb37
# afterwards, rebuild it from the two parents, which stay fetchable
git fetch origin 8113ba37ae066c1eb6dd82d47742983b44ac60ea cb9aa12dddd5d6dc8144556c0ff9e82aa526932a && git checkout -B drift-repro 8113ba37ae066c1eb6dd82d47742983b44ac60ea && git merge --no-ff cb9aa12dddd5d6dc8144556c0ff9e82aa526932a
node scripts/docs-audit/affected-docs.mjs --json 8113ba37ae066c1eb6dd82d47742983b44ac60ea
|
Uh oh!
There was an error while loading. Please reload this page.
Part of #10726
This lands the doc-correction half only, per the ruling's own sequencing. The
contributes.routesschema tombstone is #10724's, which ispm:blockedon the #10812cloud census — no schema key is added, removed or re-typed here, and no plugin-manifest
zod file is touched. #10726 stays open until that tombstone lands.
Ruling being executed
Maintainer ruling 2026-08-22 (decision-inbox batch, verbatim 「接受所有」), Option B:
Why the correction is needed
contributes.routeshas zero readers monorepo-wide: the only non-test read ofmanifest.contributesanywhere readskinds, notroutes(
packages/objectql/src/engine.ts:4499). An author — human or AI — following the shippedskill writes a
contributes.routesentry, gets a clean parse, and serves nothing.The replacement was verified live before it was written
A redirect to a second dead form would be the same defect again, so
http.serverwasconfirmed on today's
mainfirst:packages/plugins/plugin-hono-server/src/hono-plugin.ts:271(
ctx.registerService('http.server', this.server)), declared at:228(
providesServices = ['http.server', 'http-server']).serving a code-handler endpoint:
examples/app-showcase/src/system/server/recalc-endpoint.ts:52resolves the service andmounts
POST /api/v1/showcase/recalconkernel:ready.plugin-approvals,plugin-sharing,cloud-connection(
runtime-config-plugin.ts,marketplace-*),packages/metadata/src/plugin.ts, and theCLI's
serveall resolve the same service.The four sites
mainobjectstack-apiskill's decision tableskills/objectstack-api/SKILL.md:159-164packages/spec/src/api/dispatcher.zod.ts:16docs/adr/0088-metadata-kind-admission-and-retirement.md:40app.mdx:83packages/spec/src/ui/app.zod.ts:1462Two of the ruling's leads named generated artifacts.
content/docs/references/api/dispatcher.mdxand
content/docs/references/ui/app.mdxboth carry{/* ⚠️ AUTO-GENERATED — DO NOT EDIT. Run build-docs.ts to regenerate. */}; their realsources are the two
.zod.tsfiles above. Editing the.mdxwould have been reverted bythe next regeneration and would have failed
check:docs. The two.mdxfiles in this diffare the regenerated projection of the two
.zod.tsedits(
pnpm --filter @objectstack/spec gen:docs), not hand edits —check:docsconfirms:✅ 229 generated files in sync with packages/spec. The regeneration touched exactly thosetwo files and nothing else, so no unrelated drift rode along.
The ruling also pointed at
content/docs/protocol/**for site 2; the protocol doc actuallylives in the spec source and its generated page under
content/docs/references/api/.ADR-0088: one dangling antecedent fixed
The
routerrow's delivered-form cell no longer creditscontributes.routes. The existing#4936, 2026-08-04correction is kept verbatim except for one phrase: it said "itsdelivered forms are the two above, both code contributions", an antecedent that no
longer resolves once one of the two is struck. The new correction is appended after it,
chronologically, and names the surviving forms. The ADR is otherwise unrestructured.
Published-skill budget
The dispatch budget was ≤ +5 net lines for the whole
skills/touch. Delivered at0 net lines — file and package both 610 → 610; the published-skills bundle 10506 →
10506 lines.
Tokens are the binding constraint, and
skills/objectstack-api/SKILL.mdhad zeroheadroom (6346 tokens against a 6348 ceiling; the ratchet is shrink-only and loosening it
is marked ⛔ MAINTAINER-ONLY). A first draft came in +44 tokens over and was rejected by
check-skills-token-ratchet; the correction was tightened to fit rather than the ceilingloosened. Final: 6348 / 6348, bundle total 117922 / 117949 (-27).
Gates
Derived from the actual diff with
node scripts/pm/dispatch-gates.mjs --repo objectstack-ai/objectstack(re-derived after the changeset was added). Verified at
cb9aa12dd; the ratchet familieswere re-run after the final commit.
Green:
check:skills-token-ratchet·check:skill-compatibility·check:skill-frame-sync·check:doc-authoring·check:role-word·check:adr-anchors·check:doc-anchors·check-adr-links·check:pm-governed-merges·check:docs-redirects·check:docs-audit-scope·check-doc-frontmatter·check-section-landing-index·check:quick-reference-counts·check:published-readme-links·check:doc-formula-expressions·check:doc-security-posture·check:merge-driver·check:published-files·check:spec-parsed-alias·check:slot-lookup·check:test-source-alias·check:type-source-resolution·check:cross-package-test-inputs·check-ci-filter-parity·check-plugin-teardown-shape·check-affected-docs·check:empty-state·check:liveness·check:strictness-ledger·check:variant-docs·check:changeset-gate-self-tests·check:objectui-changeset·check-adr-0087-registration·check-changeset-no-major·check-empty-changeset·check:nul-bytes·check:docs.pnpm --filter @objectstack/spec typecheckgreen (incl.check:scripts-typecheckandcheck:test-typecheck).pnpm --filter @objectstack/spec testgreen — 418 test files,11128 tests passed.
check:doc-formula-expressionsandcheck:doc-security-posturewere initially red withERR_MODULE_NOT_FOUNDonpackages/lint/dist/— an unbuilt dependency closure, not thisdiff. Both green after
pnpm --filter '@objectstack/lint^...' --filter @objectstack/lint build.check-dev-prereqsis red and it is not this diff: it reports "The workspace is notbuilt — 1 unmet precondition", naming 63 of 67 packages (
@objectstack/cli,@objectstack/client, …) whosedist/entry points are absent in this worktree. None istouched here and this diff changes no entry point or
package.json. CI builds theworkspace.
Declared narrowing — repo-wide
pnpm lintwas not run locally (it is CI-owned); thetargeted run is a measurement, not a skip:
--format jsonreported 2 files linted, 0 errors, 0 warnings — the two changed.tsfiles.eslint.config.mjs:327-329states this repo "runs oneeslint.config.mjs, which never enables type-aware linting (noparserOptions.project,no typed
@typescript-eslintrules) for ANY file", so this diff cannot move the verdicton any file it does not contain.
Landing note
Touches governed faces (
docs/adr/**,skills/**) — stays draft for human merge.Generated by Claude Code