Skip to content

The repo names four canonical docs hosts, and one of them lives inside a gate that instructs authors #10641

Description

@os-elon

Split out of #10638, which is now the deploy fix only. Independent of it: this is wrong whether or not the site deploys.

The maintainer's ruling

2026-08-21, verbatim: 「这个仓的文档站规范 URL 是 https://objectstack.ai」

What the tree says instead

WhereHost it namesWhy it matters
content/docs.site.json:5https://protocol.objectstack.aiThe site's own declared canonical URL. Feeds page metadata, OG tags and whatever consumes meta.url.
scripts/check-published-readme-links.mjsdocs.objectstack.ai⚠️ A gate. It classifies docs.objectstack.ai/docs/... as "the docs site", and its remedy text tells authors to write https://docs.objectstack.ai/docs/<path under content/docs, no extension>. Its self-tests pin that host too.
docker/Dockerfile (2 comment lines)docs.objectstack.aiPoints self-hosting readers at that host.
maintainerobjectstack.aithe answer

Three hosts, one tree. The loudest of them is the gate, because it does not merely record a host — it prescribes one to every author who trips it, and pins that prescription in its own self-test. Every published README link written under its guidance points at a host the maintainer has not ratified.

This is also a plausible contributor to how #10638 was found: a reader following the repo's own site config looks at protocol.objectstack.ai; a reader following the link gate looks at docs.objectstack.ai; the pages were on neither.

What to do

  1. Establish which hosts actually resolve and what they serve — objectstack.ai/docs, protocol.objectstack.ai, docs.objectstack.ai. Measure, do not assume. One or more may be aliases or redirects to the same deployment, in which case this is a naming-consistency fix; if they are genuinely different deployments, that is a much larger finding and this card should stop and report rather than paper over it.
  2. Converge every in-repo reference on the ruled canonical host.
  3. check-published-readme-links.mjs is the load-bearing one: its classifier, its remedy strings, and its self-test assertions all encode the host. Change them together — a remedy that prescribes one host while the classifier accepts another is worse than the current state. If the non-canonical hosts must keep working, the classifier should accept them while the remedy prescribes the canonical one; say which you did and why.
  4. Any absolute links already written into published READMEs under the old prescription need sweeping, or an explicit decision not to.

⛔ Non-goals

Metadata

Metadata

Assignees

Labels

Type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions