Why this epic exists
The docs site at https://objectstack.ai is, as of 2026-08-25, technically un-indexable in the ways that matter: there is no sitemap and no robots.txt (both paths answer 200 with the homepage HTML), no canonical link on any page, and no metadataBase. 403 doc pages exist with nothing pointing a crawler at them. On top of that the on-page keyword signal is thin — half the pages ship two <h1>s, page titles have a median length of 14 characters, and half the meta descriptions are too short to be used as snippets.
The order matters: the P0 lane is the precondition. Rewriting 403 titles while /sitemap.xml returns HTML buys nothing.
Lane / territory (epic PM declaration)
- Epic PM session:
f9f0958b-ab68-46cc-801c-216aa7ee2107 - Declared file territory:
apps/docs/** — app routes, proxy.ts, lib/, components/, public/content/docs/** — frontmatter title / description, body headingsscripts/check-*.mjs + the Lint & Repo Gates step list — only for the new doc-shape gates two sub-issues ask for
- Not in territory:
packages/**, anything under docs/adr/**, .claude/**.
Sub-issues
P0 — indexability (do these first; #12234 unblocks #12235)
P1 — keyword shape (maintainer-voice; PRs stay open for review)
P2 — structured data, crawl hygiene, weight
Shared facts every sub-issue inherits
Definition of done for the epic
Source
Filed from an SEO review of apps/docs on 2026-08-25 — every claim above was measured against the local dev server and against production, with the commands recorded in the individual sub-issues.
Why this epic exists
The docs site at
https://objectstack.aiis, as of 2026-08-25, technically un-indexable in the ways that matter: there is no sitemap and no robots.txt (both paths answer 200 with the homepage HTML), no canonical link on any page, and nometadataBase. 403 doc pages exist with nothing pointing a crawler at them. On top of that the on-page keyword signal is thin — half the pages ship two<h1>s, page titles have a median length of 14 characters, and half the meta descriptions are too short to be used as snippets.The order matters: the P0 lane is the precondition. Rewriting 403 titles while
/sitemap.xmlreturns HTML buys nothing.Lane / territory (epic PM declaration)
f9f0958b-ab68-46cc-801c-216aa7ee2107apps/docs/**— app routes,proxy.ts,lib/,components/,public/content/docs/**— frontmattertitle/description, body headingsscripts/check-*.mjs+ theLint & Repo Gatesstep list — only for the new doc-shape gates two sub-issues ask forpackages/**, anything underdocs/adr/**,.claude/**.Sub-issues
P0 — indexability (do these first; #12234 unblocks #12235)
/robots.txtand/sitemap.xmldo not exist — both answer 200 with the homepage HTML #12232 —/robots.txtand/sitemap.xmldo not exist; both answer 200 with the homepagemetadataBaseand no canonical link on any page #12234 — nometadataBase, no canonical link on any pageP1 — keyword shape (maintainer-voice; PRs stay open for review)
<h1>— 129 of them the same text twice #12236 — 205 pages render two<h1>, 129 the same text twice<title>and description are not keyword-shaped (description is 615 characters) #12239 — homepage title/description not keyword-shaped (615-char description)P2 — structured data, crawl hygiene, weight
/docs/**.mdxserves an indexable parallel copy of every page with no robots directive #12241 —/docs/**.mdxserves an indexable parallel copy with no robots directiveShared facts every sub-issue inherits
https://objectstack.ai— maintainer ruling recorded in fix(docs): converge the docs host on the canonical origin, gate included #10659:metadataBase, canonical links and JSON-LD all read. Three sub-issues need it; the first one to land creates it and the rest import it.lib/i18n.tsis English-only (languages: ['en'],hideLocale: 'default-locale'). Nohreflangwork is in scope, and/en/docscorrectly 307s to/docstoday — do not break that.llms.txt/llms-full.txt/.mdxendpoints are a deliberate feature for agent readers. ⛔ Do not remove or gate them; the only change any sub-issue may make is a robots directive.Definition of done for the epic
curl -sI https://objectstack.ai/robots.txt→200 text/plain, naming the sitemap/sitemap.xmlis XML and lists every doc page<h1>Lint & Repo GatesSource
Filed from an SEO review of
apps/docson 2026-08-25 — every claim above was measured against the local dev server and against production, with the commands recorded in the individual sub-issues.