Found while implementing #10832 (the /graphql endpoint contract in content/docs/api/).
Filed rather than fixed: the source of truth is skills/**, which is governed /
human-merge-only, so patching the consumer doc page alone would only make it disagree with
the skill it catalogs.
The residue
/graphql is not mounted — packages/runtime/src/http-dispatcher.ts:2026 is
// /graphql removed — GraphQL is not in the product plan (#2462 follow-on), there is no
createGraphQLDomain among the fifteen domains at http-dispatcher.ts:556-574 (0 hits
repo-wide in packages/*/src), and no handleGraphQL in the runtime. Five sites in the
shipped skills still describe it as live:
| Site | Text | Why it is wrong |
|---|
skills/objectstack-api/SKILL.md:19 | tags: rest, graphql, endpoint, auth, realtime, server | The skill's own description one line above lists REST endpoints, auth providers, realtime channels, error envelopes, batch/versioning contracts — no GraphQL. The tag contradicts the body. |
skills/objectstack-data/SKILL.md:94 | `apiEnabled` | `true` | Expose via automatic REST / GraphQL APIs | There is no automatic GraphQL API. apiEnabled exposes REST (and MCP). |
skills/objectstack-platform/SKILL.md:395 | Mount explicit routes for auth, GraphQL, storage, discovery | /graphql is not mounted at all. (/storage in the same line is also stale — per http-dispatcher.ts:556-574's comment the two-route storage bridge was retired in #4087 and service-storage mounts its own surface.) |
skills/objectstack-formula/SKILL.md:428 | | `GraphQL.ComputedField` | `expression` | cel | | Listed as a CEL expression host. No such surface exists. |
skills/objectstack-formula/SKILL.md:479 | | `api/graphql` | cache key | | Same — names a api/graphql coordinate that has no module. |
The mirror
content/docs/ai/skills-reference.mdx:156 reproduces the first row verbatim
(**Tags:** rest, graphql, endpoint, auth, realtime, server``). That page is
hand-written and is a catalog of the skills, so it should be corrected in the same change
as skills/objectstack-api/SKILL.md:19 — not before it, or the catalog and the skill drift
apart in the other direction.
Why this is worth a card
These files are the ones AI assistants load to learn the platform. A tag and a property table
that name a surface the runtime removed is exactly the input that generates client code
against a route which 404s — the same failure mode #10710 and #10832 fixed on the human-facing
docs, but aimed at the generated-code path instead of the reader.
Note skills/** is scanned by check:role-word (its own output reports skills 36 files), so
the corpus is already in a gate's population — it is reachable, just not checked for this.
Not in scope: skills/objectstack-formula/SKILL.md rows that name GraphQL as a general
industry concept, if any reviewer finds them; the five above all assert an ObjectStack surface.
Back-links: #10832, #10710, #10583, #10835
Generated by Claude Code
Found while implementing #10832 (the
/graphqlendpoint contract incontent/docs/api/).Filed rather than fixed: the source of truth is
skills/**, which is governed /human-merge-only, so patching the consumer doc page alone would only make it disagree with
the skill it catalogs.
The residue
/graphqlis not mounted —packages/runtime/src/http-dispatcher.ts:2026is// /graphql removed — GraphQL is not in the product plan (#2462 follow-on), there is nocreateGraphQLDomainamong the fifteen domains athttp-dispatcher.ts:556-574(0 hitsrepo-wide in
packages/*/src), and nohandleGraphQLin the runtime. Five sites in theshipped skills still describe it as live:
skills/objectstack-api/SKILL.md:19tags: rest, graphql, endpoint, auth, realtime, serverREST endpoints, auth providers, realtime channels, error envelopes, batch/versioning contracts— no GraphQL. The tag contradicts the body.skills/objectstack-data/SKILL.md:94`apiEnabled` | `true` | Expose via automatic REST / GraphQL APIsapiEnabledexposes REST (and MCP).skills/objectstack-platform/SKILL.md:395Mount explicit routes for auth, GraphQL, storage, discovery/graphqlis not mounted at all. (/storagein the same line is also stale — perhttp-dispatcher.ts:556-574's comment the two-route storage bridge was retired in #4087 and service-storage mounts its own surface.)skills/objectstack-formula/SKILL.md:428| `GraphQL.ComputedField` | `expression` | cel |skills/objectstack-formula/SKILL.md:479| `api/graphql` | cache key |api/graphqlcoordinate that has no module.The mirror
content/docs/ai/skills-reference.mdx:156reproduces the first row verbatim(
**Tags:**rest,graphql,endpoint,auth,realtime,server``). That page ishand-written and is a catalog of the skills, so it should be corrected in the same change
as
skills/objectstack-api/SKILL.md:19— not before it, or the catalog and the skill driftapart in the other direction.
Why this is worth a card
These files are the ones AI assistants load to learn the platform. A tag and a property table
that name a surface the runtime removed is exactly the input that generates client code
against a route which 404s — the same failure mode #10710 and #10832 fixed on the human-facing
docs, but aimed at the generated-code path instead of the reader.
Note
skills/**is scanned bycheck:role-word(its own output reportsskills 36files), sothe corpus is already in a gate's population — it is reachable, just not checked for this.
Not in scope:
skills/objectstack-formula/SKILL.mdrows that name GraphQL as a generalindustry concept, if any reviewer finds them; the five above all assert an ObjectStack surface.
Back-links: #10832, #10710, #10583, #10835
Generated by Claude Code