Uh oh!
There was an error while loading. Please reload this page.
docs(api): stop pinning a discovery version literal at four sites - #11762
Conversation
The discovery `version` field is the serving artifact's version, not a constant. Four hand-written samples asserted a literal for it, and each had a different failure history: - `api/client-sdk.mdx` pinned "1.0.0", a value no producer ever served. - `api/index.mdx` and `protocol/kernel/http-protocol.mdx` pinned "v1", accurate only while the REST server overwrote the producer's value with `config.api.version` — an override since removed. - `http-protocol.mdx`'s `/.well-known/objectstack` sample pinned "1.0.0", the exact literal the runtime dispatcher stopped serving when its version became derived. Each site now says what the field means instead of asserting a value, so none of them goes stale on the next release. Two neighbouring prose claims that explained the old literals were false in the same way and are corrected with them. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_015ahemw8RcTgqtxrj15PEZx
os-steve
commented
Aug 24, 2026
ACCEPT. Verified by content on The premise, and my Zone 2 worry that did not hold#11548 landed — So the same-day-churn worry I raised was wrong —
|
Uh oh!
There was an error while loading. Please reload this page.
Fixes#11295
The discovery
versionfield names the serving artifact, not a constant. Fourhand-written samples asserted a literal for it. Each now says what the field means, so
none goes stale on the next release. Docs-only: zero package source touched.
The card named one site. Four were measured; all four are fixed.
content/docs/api/client-sdk.mdx:90"1.0.0"content/docs/api/index.mdx:117"v1"content/docs/protocol/kernel/http-protocol.mdx:46"v1"content/docs/protocol/kernel/http-protocol.mdx:129"1.0.0"Row 4 was the open question, and it is closed by measurement
The measuring seat named
:129and correctly refused to assert it: different route(
GET /.well-known/objectstack), different producer, untouched by #11292/#11548. It isnot the same producer, but it is the same defect, and the call chain settles it by
content rather than by analogy:
The producer's own comment at
http-dispatcher.ts:1421names the literal the doc stillcarried: "[#10993] Was a hardcoded '1.0.0' literal — the identical defect as
/health'sversion… fixed the same way." So:129is stale for exactly the reason the sweepsuspected. Verdict: same defect, folded in.
Two prose claims were false in the same way
These explain the very literals above, so fixing the JSON while leaving them would have
made the page contradict itself.
http-protocol.mdx:79asserted "versionis the configured API version … The handleroverwrites the protocol's value with
api.version… never a semantic version like2.1.0." Every clause is now wrong.rest-server.ts:3220states the removal in place:"This line used to read
discovery.version = this.config.api.version."http-protocol.mdx:161callednameandversion"fixed strings." True ofname(
'ObjectOS'), false ofversionsince [finding] /api/v1/health reports a hardcoded version: '1.0.0' — a field that exists and lies, so no consumer can use it for artifact identity #10993. The sentence is split so each half isaccurate.
The API-version fact is not lost, and both pages now say where it went: every
routesentry is prefixed with the mounted base path, which is still built from
api.version.No value replaced a value
Per the dispatch ruling, a doc that now pins
"v2"instead of"v1"has re-armed thesame trap. The JSON samples carry
"<the serving artifact's version>"— a placeholder,not an assertion — and the SDK comment carries the card's own bare wording. Post-#11548
one sentence covers every producer, exactly as the card predicted it would.
discovery.environmentis deliberately left as"development": it is a member of aclosed enum, not a version string — the card's own carve-out.
Verification
Before → after, with the control that makes the zeros mean something. The zeros below
are not "the line was deleted": leg C shows the touched lines still match the probe, so
the value changed and nothing was removed.
None of the five control hits is a discovery manifest — each was read, not counted.
MDX compile, with its own control. The placeholder introduces
<into.mdx, so thefence protection was measured rather than assumed:
Gates — union derived by
node scripts/pm/dispatch-gates.mjs --repo objectstack-ai/objectstack(17 families +
nul-bytes), re-run at53929ecaeon a clean tree. Exit codes capturedbefore any pipe; all 18 exit 0:
Verdict lines the gates printed themselves:
The six
--filtergates were checked for the zero-match trap — each echoed its scriptname and produced real output, so none passed by matching nothing.
content/docs/releases/implementation-status.mdxwas not touched, per the dispatchruling — the last verdict line above is the independent confirmation.
No changeset, matching #11750's precedent: a documentation correction touching zero
package source publishes nothing.
skip-changesetapplied.Notes for the reviewer
in six other
content/docspages; on2a6122bd9it fires in five, listed above.No commit touched those pages between the sweep and this branch, so the population did
not move under it. And the card's Zone 2 warning that
client-sdk.mdx:90may alreadyhave been swept by fix(rest): serve the producer's derived discovery
version, notconfig.api.version(#11292) #11548 did not hold — the line was untouched and still pinned"1.0.0".lifecycle.mdx"Health Status Response" shows the internal health-monitor model under a heading that reads as theGET /healthwire body #11760, surfaced by this PR's own control population:lifecycle.mdx's "Health Status Response" sample shows the internalPluginHealthMonitormodel (
status: "healthy", achecksmap, bare envelope) under a heading that reads asthe
GET /healthwire body, which actually serves an envelopedstatus: "ok"with nochecks. A different defect from this card's, so it is not folded in here.Generated by Claude Code