Uh oh!
There was an error while loading. Please reload this page.
docs(quickstart): name the reachable probe URLs and the liveness/readiness split - #95
Merged
Merged
Conversation
…iness split
The "What's running" table pointed a local reader at
http://localhost:3000/health. Under `os start` that path is not mounted:
`os start` spawns `serve`, which registers the dispatcher through
`createDispatcherPlugin()` with the default `/api/v1` prefix, and the
dispatcher plugin mounts the two probe branches only as `${prefix}/health`
and `${prefix}/ready` ("there is no catch-all"). The bare root `/health`
alias is a cloud container entrypoint, not something `os start` serves.
Beyond the URL, the row named liveness alone. A reader who wires only a
liveness probe gets one that stays green through a database outage, which
is the failure the deploy pages exist to prevent. Name both endpoints and
say which failure each one carries, then hand the wiring decision to
Docker/Kubernetes rather than growing a probe section on the quickstart.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CJPxtTxoxTUnjNdTbiEaRaos-zhuang
marked this pull request as ready for review
August 18, 2026 13:35
Uh oh!
There was an error while loading. Please reload this page.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for freeto join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes#88
content/docs/quickstart.mdxonly. English source only — the six locale siblings are left for the translation pass, per AGENTS.md.What changed
The "What's running" table row
becomes two rows naming the endpoints a local reader can actually reach, plus a short paragraph saying which endpoint carries which failure and handing the wiring decision to the deploy pages.
The row pointed at a 404 — measured, not inferred
The card ruled that
/healthis a live route and that the fix must not imply it 404s. The dispatcher registration it cites is real, but it is a dispatcher-internalcleanPath, not a wire path.route-ledger.tssays so in its own scope note ("prepend/api/v1for the wire path"), theGET /healthrow is not markedabsolute, andclient-url-conformance.test.ts:117compiles exactly that row with the/api/v1prefix.dispatcher-plugin.tsmounts the two probe branches only as${prefix}/healthand${prefix}/ready— its own comment says "only reachable over HTTP once mounted EXPLICITLY here (there is no catch-all)" — andserve.ts:2566constructs the plugin with noprefix, so the default/api/v1applies. The bare root/healthalias exists in the cloud container entrypoint (objectos-runtime/src/node-server.ts:133), whose comment states that without the alias the probe 404s; that entrypoint is not whatos startruns.So I booted the real thing rather than resting on the reading.
npm i @objectstack/cli@17.0.0— the exact package this page tells the reader to install — thenos start --port 3877on a clean home:The page therefore now names the two URLs that answer. It does not say anything about the bare path, and no probe row was dropped — the row was corrected and a second one added. The ruling's premise needs revising, though, and that is a maintainer call, not mine: under
os startthe old URL was a 404, so the quickstart was naming a path this entrypoint does not serve./healthremains live in the product — as a cloud-container alias and as the dispatcher branch behind/api/v1/health— which is why the page stays silent about it rather than calling it dead.Why a paragraph, and why only one
The card's point is that swapping paths would land the letter and miss it: a reader who wires only liveness gets a probe that stays green through a database outage. But quickstart's reader has just run
os startwith no orchestrator and no database to lose, so a full 503-on-dead-driver section here would be worse than useless — it would duplicate, out of context, whatdeploy/docker.mdx:121anddeploy/kubernetes.mdx:38already say well.The shape chosen: name both endpoints in the table, state in two sentences which failure each one carries, then send the reader onward for the wiring. The distinction survives; the deploy pages keep owning the deployment argument. Both new rows are things a local reader can open in a browser and see answer 200, which is what the rest of that table is for.
Wording was checked against both deploy pages so the three agree.
Verification
All of this on the final commit,
727d5bf:npx turbo run type-check --force --concurrency=2— 1 successful,cache bypass, force executing dbc711ac3cdb3ea9.npx turbo run build --force --concurrency=2— 1 successful,cache bypass, force executing, 556 static paths.check-translation-ownership.mjs --actor os-zhuang --files changed.txt— exit 0 (0 translation artifacts, 1 other file).check-translations.mjs— exit 0,translations gate passed.check-translation-output.mjs --self-test— exit 0, 20 cases, every rule demonstrated able to fail.check-translation-output.mjs --files changed.txt— exit 0,blocking on 0 changed translation(s), 116 pre-existing findings reported.apps/docs/.next/server/app/en/docs/quickstart.html: both rows and the paragraph render, and the two new links resolve to prerendereddeploy/docker.htmlanddeploy/kubernetes.html.os start, as above.Translation note: the six
quickstart.*.mdxsiblings were already stale onorigin/mainbefore this change (their stampedsource_shamatches neither the old nor the new English file). The output validator now reports six non-blocking findings on them — they still carryhttp://localhost:3000/health, which the English page no longer has. Non-blocking by design, but it means six locales keep showing the 404 URL until the next translation pass, which is worth prioritising.Reported, not edited
resources/changelog.mdx:285— left alone. It records what a past release did.glossary.mdx,configure/runtime.mdx,observability.mdx,faq.mdx— sibling cards own those this round.os startoutput does not match what CLI 17.0.0 prints, and the plugin count is wrong #94: the page's two sampleos startoutput blocks do not match what CLI 17.0.0 prints (duplicatedConsole:line, anAccount:line the CLI does not print, noMCP:line,Plugins: 23 loadedagainst a measured 30), and the same duplication shows up in the "What's running" table and the plugin blockquote. Different defect class, so not folded in here. Retire "Console" as the name of the end-user surface; keep a name only for the admin surface (Setup) #79 is adjacent but explicitly excludes CLI output samples, and Align the docs with framework 17.0 — the pages still describe the 16.x contract #78 already landed without touching those blocks.Generated by Claude Code