Card 01 of the deployment-section restructure (maintainer ruling, 2026-08-15). Two pages come out of content/docs/deployment/. They are one card, not two — both edit content/docs/deployment/meta.json and apps/docs/redirects.mjs, so splitting them only serialises the same two files across two PRs.
Rulings (settled — do not re-litigate)
- 「
https://objectstack.ai/docs/deployment/vercel 已经不需要了。平台通常用 docker 发布。」 → delete vercel.mdx, redirect to self-hosting.
- 「
migration-from-objectql 作废」 → delete migration-from-objectql.mdx.
Why these two, measured
vercel.mdx (195 lines) documents a path no CI covers — vercel does not appear anywhere in .github/workflows. (The "Vercel Preview Comments" check on PRs is the docs site's own hosting, unrelated to deploying a user app.) Meanwhile Docker is the real shipping path: docker/Dockerfile plus .github/workflows/docker-publish.yml. The page is also already visibly decaying — it carries a Removed in 11 callout for the MSW mode and the Next.js adapter.
migration-from-objectql.mdx (179 lines) documents a one-time @objectql/core → @objectstack/objectql port. It belongs to neither the platform-runtime nor the metadata-app lifecycle the section is being restructured around, and every published page is a standing maintenance obligation.
⚠️ The trap: both pages are already redirect TARGETS
apps/docs/redirects.mjs currently ends two older URLs at these very pages:
['/docs/guides/deployment-vercel', '/docs/deployment/vercel'], // line 95
['/docs/guides/objectql-migration', '/docs/deployment/migration-from-objectql'], // line 101
Deleting the destinations without touching these leaves two live URLs redirecting into a 404. Next.js serves one redirect hop — it does not follow chains — so adding a second entry does not rescue them. Both existing entries must be re-pointed at the final destination, not merely supplemented.
Prose links that must be fixed in the same PR
content/docs/deployment/self-hosting.mdx links to the Vercel page twice:
- line 11 —
[Vercel guide](/docs/deployment/vercel) and assumes you have read …
- line 424 —
- [Deploy to Vercel](/docs/deployment/vercel) — the serverless alternative
Line 424 is a Related-links entry (delete it). Line 11 is mid-sentence and needs the sentence rewritten, not just the link stripped. migration-from-objectql has no prose inbound links — only meta.json and the redirect above.
The Check Documentation Links gate (lint.yml) will catch a missed one, but do not use it as the search: find them first, then let the gate confirm.
Scope
- Delete
content/docs/deployment/vercel.mdx and content/docs/deployment/migration-from-objectql.mdx.
- Drop both entries from
content/docs/deployment/meta.json.
- In
apps/docs/redirects.mjs: re-point the two existing entries, and add /docs/deployment/vercel → /docs/deployment/self-hosting. Choose the migration-from-objectql destination and argue it in the PR — /docs/deployment is the neutral default; there is no successor page.
- Respect the file's own documented ordering rule: "Exact entries come first; wildcard catch-alls for retired sections must stay last (first match wins)."
Docs-only, skip-changeset. Do not touch any other deployment page — the restructure that moves them is a later card.
Verify
git grep -rn "deployment/vercel\|migration-from-objectql" -- content/ apps/ # expect: only redirects.mjs
pnpm check:docs-audit-scope && pnpm check:release-notes && pnpm check:role-word
Then confirm both retired URLs and both older /docs/guides/* URLs each resolve in one hop to a page that exists.
Context
Full IA proposal and the other four cards: this is card 01 of 5, sequenced first because it is the cheapest irreversible move and nothing else depends on it. Cards 02–05 (new Upgrading page, publish-and-preview rewrite, Docker promotion in self-hosting, index rewrite) follow separately.
Card 01 of the deployment-section restructure (maintainer ruling, 2026-08-15). Two pages come out of
content/docs/deployment/. They are one card, not two — both editcontent/docs/deployment/meta.jsonandapps/docs/redirects.mjs, so splitting them only serialises the same two files across two PRs.Rulings (settled — do not re-litigate)
https://objectstack.ai/docs/deployment/vercel已经不需要了。平台通常用 docker 发布。」 → deletevercel.mdx, redirect toself-hosting.migration-from-objectql作废」 → deletemigration-from-objectql.mdx.Why these two, measured
vercel.mdx(195 lines) documents a path no CI covers —verceldoes not appear anywhere in.github/workflows. (The "Vercel Preview Comments" check on PRs is the docs site's own hosting, unrelated to deploying a user app.) Meanwhile Docker is the real shipping path:docker/Dockerfileplus.github/workflows/docker-publish.yml. The page is also already visibly decaying — it carries aRemoved in 11callout for the MSW mode and the Next.js adapter.migration-from-objectql.mdx(179 lines) documents a one-time@objectql/core→@objectstack/objectqlport. It belongs to neither the platform-runtime nor the metadata-app lifecycle the section is being restructured around, and every published page is a standing maintenance obligation.apps/docs/redirects.mjscurrently ends two older URLs at these very pages:Deleting the destinations without touching these leaves two live URLs redirecting into a 404. Next.js serves one redirect hop — it does not follow chains — so adding a second entry does not rescue them. Both existing entries must be re-pointed at the final destination, not merely supplemented.
Prose links that must be fixed in the same PR
content/docs/deployment/self-hosting.mdxlinks to the Vercel page twice:[Vercel guide](/docs/deployment/vercel) and assumes you have read …- [Deploy to Vercel](/docs/deployment/vercel) — the serverless alternativeLine 424 is a Related-links entry (delete it). Line 11 is mid-sentence and needs the sentence rewritten, not just the link stripped.
migration-from-objectqlhas no prose inbound links — onlymeta.jsonand the redirect above.The Check Documentation Links gate (
lint.yml) will catch a missed one, but do not use it as the search: find them first, then let the gate confirm.Scope
content/docs/deployment/vercel.mdxandcontent/docs/deployment/migration-from-objectql.mdx.content/docs/deployment/meta.json.apps/docs/redirects.mjs: re-point the two existing entries, and add/docs/deployment/vercel→/docs/deployment/self-hosting. Choose themigration-from-objectqldestination and argue it in the PR —/docs/deploymentis the neutral default; there is no successor page.Docs-only,
skip-changeset. Do not touch any other deployment page — the restructure that moves them is a later card.Verify
Then confirm both retired URLs and both older
/docs/guides/*URLs each resolve in one hop to a page that exists.Context
Full IA proposal and the other four cards: this is card 01 of 5, sequenced first because it is the cheapest irreversible move and nothing else depends on it. Cards 02–05 (new Upgrading page,
publish-and-previewrewrite, Docker promotion inself-hosting, index rewrite) follow separately.