Uh oh!
There was an error while loading. Please reload this page.
docs: rule on the account surface once, in the glossary - #111
Merged
Conversation
/_account/ was retired upstream when the standalone account-portal SPA was removed (ADR-0048). Six lines across four pages still documented it as a live HTTP surface; every one of those URLs 404s. Record the replacement once, in the glossary Surface entry, and have the two other pages in this PR's scope agree with it instead of restating it: - resources/glossary.mdx — Surface now names two entry points, not three, and carries the account routes as a table the other pages can cite. - index.mdx:52 — the Account row points at the ruling rather than a dead URL. - build/marketplace.mdx:90 — the install step's register URL is corrected. quickstart.mdx's three occurrences are #94's and are deliberately untouched. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Yaqu7kmKZM3tRPd9Y4xivo
os-elon
marked this pull request as ready for review
August 18, 2026 15:58
Uh oh!
There was an error while loading. Please reload this page.
This was referenced Aug 18, 2026
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#108
/_account/was retired upstream when the standalone account-portal SPA was removed under ADR-0048. Six lines across four pages still documented it as a live HTTP surface; every one of those URLs returns 404. This PR carries three of the six. The other three are oncontent/docs/quickstart.mdxand belong to #94, which is held for this ruling — #94 remains open and is not addressed here.The ruling, recorded once
Per the card, this is one answer to "what is the account surface now", written into the
Surfaceentry incontent/docs/resources/glossary.mdx, with the other two pages made to agree with it rather than restating it. Restating is what let these pages drift apart in the first place.The account surface is not a surface. There are two HTTP entry points, not three:
/(REST API) and/_console/(the UI). Sign-in, registration and account self-service are routes inside the UI:/_console/login— where every protected page sends you when you are not signed in/_console/register— unless the deployment disables self-service sign-up/_console/apps/account— the Account app, alongside Setup at/_console/apps/setupHow the evidence bar was met
裁决 3 forbids writing a
/_console/loginor/_console/registerURL on the strength of a 200, because SPA fallback 200s everything under/_console/(#94'szzz-nonexistent-garbagecontrol). No probe was used here. Two independent sources, in two repos, compose to give the wire path:1. The console router source (
objectstack-ai/objectui@6c68b13,apps/console/src/App.tsx:139-140) — this is the first item on 裁决 3's list, and it is explicit that these routes are public:The same file resolves the React Router basename from an injected
base hreftag (App.tsx:69-95,resolveBasename), so these are basename-relative, not absolute.2. The mount prefix, from the other repo (
objectstack-ai/objectstack@f6c71ea,packages/cli/src/utils/console.ts) —CONSOLE_PATH = '/_console'at line 43, and lines 506-516 injectbase href="/_console/"into the servedindex.html.Basename
/_console+ router path/logingives the wire path/_console/login. Two sources that agree, neither of them a probe.Corroborating detail from the same router source:
ProtectedRoute.tsx:26-30(LoginRedirect) — an unauthenticated visitor to any protected route is sent to/login, router-relative.App.tsx:357-361puts the console root/behindProtectedRoute, so opening the UI unauthenticated lands the reader on sign-in. This is the redirect contract, read from source rather than traced.App.tsx:340declaresRoute path="/apps/:appName/*", which is what makes/_console/apps/accountresolve.RegisterPage.tsxbounces to/loginwhen the server reportsemailPassword.disableSignUp === true, and calls the server-side gate the source of truth.Half (a) of the card is confirmed as stated:
packages/apps/account/src/index.tssays the standalone account-portal SPA was removed and Account is now a console navigation-shell app with package idcom.objectstack.account. The premise held.The three files
content/docs/resources/glossary.mdx— theSurfaceentry is the ruling. It now names two entry points and carries the table above. docs: retire "Console" as the end-user surface name; keep Setup for administration #100's entry was reusable as-is; only the third clause needed replacing, plus a closing sentence recording that/_account/is retired and 404s, so a reader arriving from an old link is not left guessing./_account/survives on that one line as a retirement notice, which is the opposite of asserting the surface exists.content/docs/index.mdx:52— the Account row's dead URL parenthetical becomes a link to the ruling:**Account** ([inside the UI](/docs/resources/glossary#surface)). The row's value is its capability list, which is unchanged and still correct; only the URL was wrong. This is the page where pointing beats restating.content/docs/build/marketplace.mdx:90—/_account/registerbecomes/_console/register. This one restates the URL rather than linking, deliberately: it is step 2 of a numbered install flow, and a reader mid-install needs the URL in front of them, not a definition one click away. It agrees with the ruling by using the ruling's URL.For #94 — apply verbatim, no re-derivation
#94 owns
content/docs/quickstart.mdx:47,:59and:152. The ruling above resolves all three::59— the "What's running" table row. Replace:with:
:47and:152— the two sample banner lines:Delete both. They do not need a replacement URL, because the real CLI does not print an
Account:line at all — #94's own measured boot transcript shows the banner printingAPI:,Console:andMCP:and nothing else. Repointing these two at/_console/apps/accountwould produce a correct URL in a fabricated banner line, on the one page whose entire subject is that the sample does not match reality. The 404 and the phantom banner line are two defects on the same lines, and deleting fixes both.That also settles the related line #94's PM ruling flagged:
quickstart.mdx:13, "Both produce a running server with the UI + Account", is false only in its implication that Account is a second server surface. Account is inside the UI.Gates
Run on the tree at
632834f, which is this PR's head. The working tree was clean at commit time, so the tested tree and the committed tree are the same tree.pnpm install --frozen-lockfilepnpm turbo run type-check --continue --concurrency=2 --forcecache bypass, force executing, 0 cachedpnpm turbo run build --concurrency=2 --forcecheck-translation-ownership.mjs --actor ... --files ...check-translations.mjscheck-translation-output.mjs --self-testcheck-translation-output.mjs --files ...--forceon both turbo tasks is deliberate, not belt-and-braces:content/docs/sits outside theapps/docspackage and AGENTS.md documents turbo replaying cached greens for content-only changes. Both runs report0 cached, so these are real runs on this content, not a replayed green.The gate list in my dispatch named
check-translation-ownership.mjsandcheck-translation-output.mjs --reportas bare invocations; both are wrong for a PR.--reportis the push-to-main path, and the ownership gate exits 1 with "--filesis required" when called bare. I re-derived the real invocations from.github/workflows/translations.yml(the gates live there, not inci.yml) and ran the pull-request path.Rendering verified from the build output, not assumed — a markdown table inside a glossary entry is new for that page:
apps/docs/.next/server/app/en/docs/resources/glossary.htmlrenders a realtableelement in theSurfacesection and carriesid="surface", so the citation anchor is live.docs.htmlrenders the index row's link ashref="/docs/resources/glossary#surface".Scope
English only. No locale sibling was touched — the ownership gate confirms 0 translation artifacts in the diff. No page is retired or renamed, so the locale-sibling deletion rule does not apply and stale siblings are reported-not-blocking by design.
content/docs/quickstart.mdxis untouched.Left in draft.
Generated by Claude Code