Measurement
The repository has been renamed at least twice, and links to both former names survive in the tree. All three names resolve to the same repository:
gh api repos/objectstack-ai/framework --jq .id → 1136691870
gh api repos/objectstack-ai/spec --jq .id → 1136691870
gh api repos/objectstack-ai/objectstack --jq .id → 1136691870
framework is being fixed at its single producer in #12354 / PR #12364. spec is a separate, unrelated set of spellings, and it is the one this card is about.
Where objectstack-ai/spec still appears
Renders to visitors today:
| file | hits |
|---|
content/blog/protocol-first-development.mdx | 2 |
content/blog/metadata-driven-architecture.mdx | 1 |
Inert config that spells a name nothing else spells — content/docs.site.json:
- line 40 —
themeConfig.socials[].url - line 63 —
page.repoBaseUrl
Both have zero runtime consumers today: the only references to repoBaseUrl anywhere in the repo are gate scripts naming the file as a path-hint fixture. That is precisely why it is worth a card rather than a shrug — inert config carrying a wrong value is what someone wires up later, having reasonably assumed it was maintained.
Also present, and deliberately out of this card's scope unless the maintainer wants them in:CONTRIBUTING.md (3), docs/notes/airtable-dashboard-analysis.mdx, and the link-reference block at the bottom of the root CHANGELOG.md.
Prior art — read this before acting
docs/audits/2026-06-handwritten-docs-accuracy-followups.md:40 already flagged these links and declined to rewrite them. Whoever takes this card should read that entry and either follow its reasoning or say why it no longer applies — ⛔ do not re-litigate it from scratch, and do not silently overturn a recorded decision.
Why it matters
Every one of these costs a 301 today; none is broken. The reason to fix them is that a rename redirect is a signal that decays — GitHub keeps them only while the old name stays unclaimed — and because docs.site.json is a config file whose stale value is invisible until it is used.
Suggested scope
The two blog posts and docs.site.json. CONTRIBUTING.md, docs/notes/** and CHANGELOG.md are a maintainer call: CHANGELOG.md in particular is a historical record, and rewriting URLs inside past entries is not obviously right.
Source
Surfaced by the dev on #12354 while sweeping apps/docs/ for repository-name literals; the sweep was correctly held to apps/docs/ by its dispatch, and these hits are outside it. Every claim above was independently re-measured before filing.
Measurement
The repository has been renamed at least twice, and links to both former names survive in the tree. All three names resolve to the same repository:
frameworkis being fixed at its single producer in #12354 / PR #12364.specis a separate, unrelated set of spellings, and it is the one this card is about.Where
objectstack-ai/specstill appearsRenders to visitors today:
content/blog/protocol-first-development.mdxcontent/blog/metadata-driven-architecture.mdxInert config that spells a name nothing else spells —
content/docs.site.json:themeConfig.socials[].urlpage.repoBaseUrlBoth have zero runtime consumers today: the only references to
repoBaseUrlanywhere in the repo are gate scripts naming the file as a path-hint fixture. That is precisely why it is worth a card rather than a shrug — inert config carrying a wrong value is what someone wires up later, having reasonably assumed it was maintained.Also present, and deliberately out of this card's scope unless the maintainer wants them in:
CONTRIBUTING.md(3),docs/notes/airtable-dashboard-analysis.mdx, and the link-reference block at the bottom of the rootCHANGELOG.md.Prior art — read this before acting
docs/audits/2026-06-handwritten-docs-accuracy-followups.md:40already flagged these links and declined to rewrite them. Whoever takes this card should read that entry and either follow its reasoning or say why it no longer applies — ⛔ do not re-litigate it from scratch, and do not silently overturn a recorded decision.Why it matters
Every one of these costs a 301 today; none is broken. The reason to fix them is that a rename redirect is a signal that decays — GitHub keeps them only while the old name stays unclaimed — and because
docs.site.jsonis a config file whose stale value is invisible until it is used.Suggested scope
The two blog posts and
docs.site.json.CONTRIBUTING.md,docs/notes/**andCHANGELOG.mdare a maintainer call:CHANGELOG.mdin particular is a historical record, and rewriting URLs inside past entries is not obviously right.Source
Surfaced by the dev on #12354 while sweeping
apps/docs/for repository-name literals; the sweep was correctly held toapps/docs/by its dispatch, and these hits are outside it. Every claim above was independently re-measured before filing.