Uh oh!
There was an error while loading. Please reload this page.
docs(quickstart): transcribe the os start banner from a real boot, retire /_account/ from the page - #140
Merged
Conversation
Part of #94 The Path A sample block is transcribed from a boot of the published @objectstack/cli 17.0.0 on an empty kernel, rather than hand-corrected: it prints one Console line (not two), an MCP line the sample lacked, and Plugins: 30 loaded (the sample said 23). The phantom Account lines are deleted rather than repointed — the real CLI prints no Account line at all. Per the landed Surface entry in resources/glossary.mdx there are two HTTP entry points, / and /_console/; account sign-in, registration and self-service are routes inside the UI. The register row in the "What's running" table is repointed to /_console/register, the two duplicate /_console/ rows are deduped with Setup taking /_console/apps/setup, and the plugin blockquote drops its exact count and is rewritten from the measured boot.
Part of #94 On @objectstack/cli 17.0.0 — the currently published latest — the scaffold os init generates declares no sharingModel and is rejected by the CLI's own security-owd-unset author-time rule, so pnpm dev exits 1 before a dev server exists. The fix is merged upstream and awaiting a release. The caveat is pinned to the published version the same way the Path A transcription note is, so it is checkable rather than open-ended. Path B's sample block is deliberately left as-is: it stays unmeasured until a fixed CLI publishes and it can be transcribed from a real boot.
os-warren
marked this pull request as ready for review
August 19, 2026 04:48
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.
Part of #94
Not
Fixes— deliberately. Path A is fully measured and landed; Path B could not be measured. Per the PM ruling on the card (option B combined with D), Path B gets a caveat now and stays open until a fixed CLI publishes and its banner can be transcribed from a real boot. Merging this must not silently close a card with an open half. See "Path B" below.What was measured
@objectstack/cli17.0.0 installed into a scratch dir (require(...).versionreported17.0.0), booted with a bareos start— no flags — on a host with no~/.objectstack, so the default port 3000 and default home are the literal ones the page instructs. The readiness banner it printed, verbatim:One
Console:line, not two. AnMCP:line the sample lacked entirely. NoAccount:line at all.Plugins: 30 loaded, not 23. Exactly oneConsoleUIin the loaded list.Two deviations from verbatim, both declared in the page itself:
~/.objectstack; the CLI printed/root/.objectstack, which is this container's home, not the reader's. The page already used the~form and continues to.The changes
Path A sample block — transcribed from the boot above, replacing the hand-corrected one. Adds the
MCP:pair, theConfig/Mode/Driver/Tenancyblock, the🎯 Environmentand🖥️ Consoleheader lines, andPress Ctrl+C to stop; correctsPlugins: 23 loadedto 30 andinstall apps via Console marketplacetovia the Console marketplace.The phantom
Account:lines are deleted, not repointed (both blocks). Per theSurfaceentry incontent/docs/resources/glossary.mdx, there are two HTTP entry points —/and/_console/— and account is not a surface. The real CLI prints noAccount:line, so repointing would have produced a correct URL inside a fabricated banner line, on the one page whose subject is that the sample does not match reality."What's running" table — the register row repointed to
http://localhost:3000/_console/register; the two rows that carried the same/_console/URL deduped, with Setup taking the deeperhttp://localhost:3000/_console/apps/setupso this page agrees with the glossary instead of quietly diverging from it.Line 13 — "a running server with the UI + Account" implied Account is a second server surface. It is inside the UI.
Plugin blockquote — no count at all. A version-pinned number still invites the next editor to bump the number and forget the pin. The name list is rewritten from the measured boot: it had named
Console UItwice where the real boot loads exactly oneConsoleUI, named anAccount UIand anAI Servicethat no longer appear, and omitted MCP, SMS, Sharing, Messaging, Analytics, Dispatcher, the datasource services and the HTTP server. One measured name is intentionally not listed —empty, which is the empty-kernel artifact package rather than a capability.Evidence bar
A
200under/_console/*proves nothing and was not used as proof. Control, on the same running server:/_console/zzz-nonexistent-garbagealso returns200. The console routes cited here rest on the landed glossary entry, not on probes. The probes that are meaningful are the ones no fallback catches:/_account/,/_account/registerboth404.Path B — still not measurable, and now flagged to the reader
The scaffold bug is merged upstream (PR objectstack-ai/objectstack#9736, merged 2026-08-18) but not published.
npm view @objectstack/cli dist-tagsreturns{ latest: '17.0.0', rc: '17.0.0-rc.6' }, and 17.0.0 was published 2026-08-14 — before the merge. Running the page's own instructions against the published CLI today:grep -rn sharingModel src/ objectstack.config.tsin the generated project returns nothing — the published CLI still ships the unfixed template.So no Path B banner was transcribed, and none was invented — including by adjusting Path A's output to stand in for it. No
MCP:line was added to Path B, because none was measured there.PM ruling: warn now, transcribe at publish
The page-shape question was escalated rather than decided here, and the ruling is B combined with D: add the caveat now, and keep the card open until a fixed CLI publishes and Path B's banner can be transcribed from a real boot. The reasoning recorded on the card is that leaving Path B unmarked would have this PR ship a page that is still lying — just about a different line — which is this card's own defect class.
Landed in the second commit:
> **Warning:**blockquote above Path B's sample, in the corpus's existing convention. There is noCalloutcomponent in this repo and no:::admonition syntax — a bold-lead blockquote is what the docs use, and> **Warning:**specifically appears inbuild/data/formulas.mdx,build/data/validation-rules.mdxandbuild/data/relationships.mdx. No component was invented.security-owd-unset, links objectstack#9666, and says the fix is merged and awaiting a release. It is pinned to@objectstack/cli17.0.0 the same way the Path A transcription note is, so it is checkable rather than open-ended.The admonition was accepted on the condition that a card carries its expiry, so objectos#141 was updated to track it as a third trigger item, recorded explicitly as delete, do not update — a warning that has stopped being true is worse than no warning.
Verification
Re-run in full on the new head
7a8e2be, heavy steps serialized on the shared verify lock. Exit codes captured before any pipe.7a8e2bepnpm turbo run type-check --filter=@objectos/docscache miss, executing 9dc3fcdcddbe29c9,1 successful, 1 totalpnpm turbo run build --filter=@objectos/docscache miss, executing 025e21a7ad40d364,1 successful, 1 total,0 cachedcheck-translations.mjs✓ translations gate passedcheck-translation-output.mjs --self-test✓ self-test: 29 rule case(s) and 9 split case(s) … every rule demonstrated able to failcheck-translation-output.mjs --files(PR-scoped, as CI runs it)✓ translation output gate passed (138 pre-existing finding(s) reported)check-translation-ownership.mjs --actor … --files …check-node-floor.mjs✅ Every declared floor clears what the dependency tree requiresBoth turbo tasks reported cache miss, and the type-check hash moved between the two heads —
b0e76990c1c001b8on697096f,9dc3fcdcddbe29c9on7a8e2be. That is the checkAGENTS.mdasks for on a content-only change: the$TURBO_ROOT$/content/docs/**input glob is live, so these are real runs and not a replayed green from a sibling worktree.Rendering was verified from the prerendered output rather than a browser, which is the stronger check here. In
.next/server/app/en/docs/quickstart.htmlthe admonition renders as a blockquote reading, in full:and the Path A assertions are unregressed on the new head:
_accountoccurs 0 times,23 plugins0,Account UI0, while_console/register,_console/apps/setup,api/v1/mcp,Plugins: 30 loadedand oneConsole UIare all present.English source only — one file changed,
content/docs/quickstart.mdx, across both commits. Noquickstart.{locale}.mdxsibling was touched; they go stale by design and the freshness gate reports it non-blockingly.Generated by Claude Code