Repository navigation
brand(runtime): "ObjectOS Cloud" wherever a user reads it — CLI help, cli.mdx, Console cloud-install i18n and README:322 still say "ObjectStack Cloud"; add a "Powered by ObjectStack" mark to the open-source Console (ruling 2026-10-26) #26136
Description
Filing gate ③: a maintainer-directed task. Maintainer (Sam, os-zhuang), 2026-10-26, verbatim: 「还是 ObjectStack 的运行时就叫 ObjectOS ,社区版免费,然后企业版是收费的」, then chose 「模型 2:ObjectOS 三版本」 on the decision card 「采用「ObjectOS 一个产品三个版本,ObjectStack 是协议与框架名」吗?」 (13:18Z). The model: ObjectOS = the product a user sees, in three editions (Community = this repository's runtime + Console, free; Cloud; Enterprise); ObjectStack = the protocol, SDK, CLI and framework name developers program against. Business reason: one product name on every screen and in every help string is what lets the price list and the sales deck say one thing; today a Console user who clicks "install to cloud" reads "ObjectStack Cloud" while the site, the docs and the cloud itself say "ObjectOS Cloud". Reader: triage grades and, since the surface crosses packages/cli (server lane), ui/packages/i18n + ui/apps/console (ui lane) and content/docs (devx), names one lane or splits; one dev per resulting card. Dedupe: issue search "ObjectStack Cloud ObjectOS Cloud product name CLI i18n Powered by" → 10 hits, none open on the strings below; #24887 (closed: OS_PRODUCT_NAME docs), #9252 (closed: branding.stage plumbing) are the branding neighbours. Session session_01FMuBZmssbfQkVrKRtxNvng; siblings: objectstack-ai/objectos (edition model, README + TRADEMARK), www.objectos.ai#285 (pricing gains a Community column), #26129 (root README; its scope comment names the one sentence that changes there).
Reading at main 679fc7c (grep, excluding node_modules/dist/CHANGELOG)
| Surface | Says | Occurrences |
|---|---|---|
packages/cli/src/commands/package/publish.ts lines 5, 301, 307; packages/cli/src/commands/cloud/whoami.ts; packages/cli/README.md lines 83, 89, 149 |
"ObjectStack Cloud" | 9 |
content/docs/deployment/cli.mdx |
"ObjectStack Cloud" | 6 |
ui/packages/i18n/src/locales/{en,de,es,fr,ja,ko,pt,ru,ar,…}.ts — Connected to ObjectStack Cloud, signed into ObjectStack Cloud, sign into ObjectStack Cloud first, … |
"ObjectStack Cloud" | 4 per locale, 10 locales |
README.md line 322 |
"target an ObjectStack Cloud control plane" | 1 |
ui/apps/console/public/logo.svg, manifest.json; ui/packages/app-shell/src/runtime-config.ts line 332 default productName: 'ObjectOS' |
"ObjectOS" | kept — this is the Community edition's wordmark, by the ruling |
For comparison the cloud repository's own UI strings say "ObjectOS Cloud" 84 times and "ObjectStack Cloud" 25 times; the public site and docs.objectos.ai say "ObjectOS Cloud" only.
Scope
- Every user-facing string above reads "ObjectOS Cloud" (the control-plane URL flag's description, the API-key description,
whoamioutput, the CLI README table,cli.mdx, the ten locale files, README line 322). Internal identifiers (@objectstack/cloud-connection,OS_CLOUD_API_KEY,~/.objectstack/cloud.json, the cloud repository's name) do not change; CHANGELOGs are history and are not edited. - The open-source Console shows a small "Powered by ObjectStack" mark (link to objectstack.ai) where the server-pushed branding does not already brand the deployment — the sign-in layout (
ui/apps/console/src/pages/auth/AuthLayout.tsx, which already reads the server-driven product name) and the Console's About / footer surface, whichever the ui lane names as the one place. Cloud and Enterprise keep their server-pushed branding untouched (branding.productNamevia@objectstack/cloud-connectionruntime-config-plugin.ts). - The default
productNamestays'ObjectOS';admin@objectos.aistays. ⛔ Do not rename the open-source wordmark to ObjectStack — that was option A of the earlier card and the maintainer chose otherwise.
Premises (re-check before dispatch)
- P1 —
grep -rn "ObjectStack Cloud" packages/cli/src content/docs/deployment/cli.mdx README.md | wc -l→ 12 (±1). - P2 —
grep -c "ObjectStack Cloud" ui/packages/i18n/src/locales/en.ts→ 4. - P3 —
grep -n "productName: 'ObjectOS'" ui/packages/app-shell/src/runtime-config.ts→ line 332.
Acceptance
git grep -n "ObjectStack Cloud" -- ':!**/CHANGELOG.md' ':!**/node_modules/**'→ only internal identifiers or none;os cloud login --helpandos package publish --helpprint "ObjectOS Cloud".pnpm check:i18nand the i18n coverage guards green across the ten locales; a changeset for@objectstack/cliand@object-ui/i18n(published packages; user-visible strings).- The Community Console renders "Powered by ObjectStack" on the sign-in page in a fresh
os dev --ui; a deployment that pushesbranding.productNamestill shows its own name with no second brand line unless the ui lane decides the mark is edition-independent.
维护者速读
按你 13:18 的裁决(ObjectOS 三版本,ObjectStack 是协议与 SDK 名):把残留在 CLI 帮助、部署文档、Console 云安装对话框十个语言、README 第 322 行里的「ObjectStack Cloud」统一为「ObjectOS Cloud」;开源 Console 保留 ObjectOS 字标不动,加一个「Powered by ObjectStack」小角标指向开发者站。内部标识符和 CHANGELOG 不动。
Activity
objectstack-fleet commentedon Oct 26, 2026
Filing audit · 2026-10-26T13:30Z ·
session_01FMuBZmssbfQkVrKRtxNvng· ⛔ not a claim, not a dispatch.Triage: the surface crosses
packages/cli+content/docs/deployment/cli.mdx(server lane) andui/packages/i18n+ui/apps/console+ui/packages/app-shell(ui lane); the filer suggests the triage seat either names one lane under the cross-domain exception or splits into two cards (naming strings / Powered-by mark). Rationale: filing gate ③, the maintainer's ruling of 2026-10-26 13:18Z quoted in the body;priority:p2because the strings are customer-facing and the ruling is the maintainer's;area:devpath. Nodomain:*pre-attached — the split is the triage seat's. Dedupe hits in the body (#24887, #9252, both closed). Siblings: objectstack-ai/docs.objectos.ai#338 (edition model, README + TRADEMARK), #26129 (root README; scope comment there names the one sentence that changes), objectstack-ai/www.objectos.ai#285 (pricing gains a Community column).Generated by Claude Code
objectstack-fleet commentedon Oct 26, 2026
Claim: PM loop round 1 · 2026-10-26T13:54Z
Session:
session_01FMuBZmssbfQkVrKRtxNvng(project thread; maintainer-directed — Sam, 2026-10-26 13:38Z, verbatim 「相关卡片都归你派发处理落地」, covering the five cards this session filed today)Account:
os-zhuangBranch:
claude/issue-26136-objectos-cloud-namingWorktree:
objectstack-issue-26136Domain: none on the card (triage has not placed it; surface spans
packages/cli,content/docs,ui/packages/i18n,ui/apps/console,README.md) — claimed under the maintainer's direction, not a lane seatSeat: maintainer-directed (no lane seat post; this session's seat identity is recorded on objectstack#24145, the cloud seat-2 post)
File surface:
packages/cli/src/**(string literals only),packages/cli/README.md,content/docs/deployment/cli.mdx,ui/packages/i18n/src/locales/*.ts(the four "ObjectStack Cloud" keys per locale),ui/packages/app-shell/src/runtime-config.ts(branding tagline only),ui/apps/console/**(the Powered-by mark),README.md(one phrase, see serial constraints) — stop on breach; explain in the reportContainer & model: M,
mode:subagent(deviation: theos-devagent type is not loaded in this project thread, so a general-purpose subagent runs under.claude/agents/os-dev.mdverbatim; same session ID as the PM, identity by branch),model: default tier (TIER_DEFAULT — dispatch-gates --tier --repo objectstack-ai/objectstack <the surface above> at d1ea2363: "no path-derived mandate"),effort: highClause-②: no
Metadata-protocol: none
Responsibility: n/a — not a defect card
Thread-read: 6417244336
Premise: holds (re-read on
origin/maind1ea236:grep -rn "ObjectStack Cloud" packages/cli content/docs/deployment/cli.mdx packages/cli/README.md→ 40 lines across publish.ts / whoami.ts / cli.mdx / README — more than the card's narrower count, same files;ui/packages/i18n/src/locales/en.ts→ 4;runtime-config.ts:332productName: 'ObjectOS'unchanged; no same-day churn on the surface)Serial constraints cleared: PR #26148 (#26129, devx seat 2) rewrites
README.mdand its text still carries one "ObjectStack Cloud" phrase (line 257 of the branch) — this card touchesREADME.mdonly after #26148 merges, else leaves it out and says so in the report; PR #26138 (packages/climigrate/meta files, disjoint from publish.ts / whoami.ts); PR #26123 (ui/packages/i18n/src/locales/*.ts, different keys — rebase, no shared lines); no other open PR or claim on the surfaceGenerated by Claude Code
objectstack-fleet commentedon Oct 26, 2026
Triage: lane added —
domain:devx(grade as filed: p2 ·area:devpath·pm:queue) · triage seat ·session_01AavokzJ5DndAwitDXvKy4U· 2026-10-26T13:59Z⛔ Not a claim, ⛔ not a dispatch.
cli.mdx, the Console cloud-install i18n strings, the README and a "Powered by ObjectStack" mark in the Console. That makes it repo-wide text, sodomain:devxcoordinates. The Console mark is a smallui/slice in the same PR or a sub-PR. Rename only user-read strings. Package names, protocol keys and env vars stayobjectstack.Generated by Claude Code
objectstack-fleet commentedon Oct 26, 2026
os-dev-report
{ "issue": 26136, "status": "done", "branch": "claude/issue-26136-objectos-cloud-naming", "pr": "https://github.com/objectstack-ai/objectstack/pull/26215", "session": "session_01FMuBZmssbfQkVrKRtxNvng", "premise_still_valid": true, "summary": "Every user-facing \"ObjectStack Cloud\" inside the card's surface now reads \"ObjectOS Cloud\": the CLI's cloud / package-publish / plugin-publish descriptions, flag descriptions, headers and not-logged-in prescriptions, the os serve welcome link, api-client's auth message, the CLI README, content/docs/deployment/cli.mdx, the four cloud-connection / cloud-install strings in all ten ui locales (zh's title read \"已连接到 ObjectStack 云\"), and README.md's one phrase (PR 26148 merged at 14:13Z, so this branch merged origin/main at d3041a42 and fixed it; the merge conflicted only on scripts/sdui-manifest.sources/i18n.json, regenerated on the merged tree). The Community Console's sign-in layout (AuthLayout, every unauthenticated page) shows a small \"Powered by ObjectStack\" link to https://objectstack.ai when the new app-shell predicate isDefaultProductName() is true, i.e. branding.productName still equals the default 'ObjectOS'; a runtime that pushed its own name (cloud pushes 'ObjectOS Cloud', a cloud-connected runtime pushes its workspace name) shows no second brand line — the only reliable signal, said in the PR. New i18n key auth.shell.poweredBy in all ten locales; changeset patch on @objectstack/cli, @object-ui/i18n, @object-ui/app-shell, @object-ui/console. Internal identifiers, the wordmark, logo.svg, manifest.json, admin@objectos.ai and CHANGELOGs untouched. Final head 9e0a8d92 (4 commits: the change, the i18n record, the merge of main with the README phrase, the record regenerated on the merged tree).", "tests": "At 9e0a8d92 unless noted. CLI: `pnpm --filter @objectstack/cli exec vitest run --project unit --maxWorkers=2` under the verify lock on the merged tree — VERDICT command-exit 1: Test Files 1 failed | 333 passed (334), Tests 1 failed | 4876 passed; the one red is src/utils/boot-preparation-parity.test.ts 'Test timed out in 5000ms' while the gate sweep shared the box; re-run alone under the lock → VERDICT command-exit 0, Test Files 1 passed, Tests 37 passed (it reads serve.ts source; this PR changes one string there). Pre-merge run at 97472bcf: 332/334 files, the two reds were the published-subpath-*.pin suites refusing without packages/cli/dist; after the full build they pass (2 files, 29 tests). New test/cloud-product-name.test.ts (unit tier): 4 cases, pins the five commands' descriptions / flag descriptions on 'ObjectOS Cloud' and no 'ObjectStack Cloud' in any help string; test/vitest-tiers-partition.test.ts and test/remote-api-commands.test.ts pass with it (3 files / 47 tests). Help text from source: `node packages/cli/bin/run-dev cloud login --help` and `… package publish --help` → 3 'ObjectOS Cloud' each, 0 'ObjectStack Cloud'. The integration tier and the nightly cloud-login-json-ndjson.e2e tier (its not.toContain('… Cloud Login') pin flipped to the new header) are CI's. UI (from ui/, root config): `pnpm exec vitest run apps/console/src/pages/auth/__tests__/AuthLayout.powered-by.test.tsx apps/console/src/pages/auth/__tests__/LoginPage.layout-12600.test.tsx packages/app-shell/src/runtime-config.test.ts packages/app-shell/src/__tests__/product-neutral-renderer.ratchet.test.ts packages/i18n/` → Test Files 91 passed (91), Tests 1448 passed | 13 skipped, EXIT=0 (same numbers before and after the merge). New AuthLayout.powered-by test (4 cases) boots branding through a stubbed GET /api/v1/runtime/config into the real singleton: default → mark with href https://objectstack.ai and rel noopener; productName 'ObjectOS' + colour → mark; 'ObjectOS Cloud' → no mark; 'Acme Studio' + logo → no mark. runtime-config.test.ts gains 4 cases on isDefaultProductName() (before init, no-branding payload, own name, same-as-default name, blank name). untranslated-identity-4376 lists auth.shell.poweredBy for ja beside publicForm.poweredBy. Type-checks EXIT=0: pnpm --dir ui --filter @object-ui/app-shell run type-check; … @object-ui/console run type-check; … @object-ui/i18n run type-check; pnpm --filter @objectstack/cli typecheck. eslint on the changed ui files: 0 errors (7 pre-existing no-explicit-any warnings in runtime-config.test.ts, none in the new block). No ablation: no tested behaviour changed; the mark and the predicate are new, pinned by the new tests.", "gates": "Derived at 9e0a8d92 with `node scripts/pm/dispatch-gates.mjs --commands` (no paths): 112 families, every one run from the worktree on the final tree with the exit code captured before any pipe (each command redirected to its own log file, then EXIT captured from $? on the next statement); `--ran` with the `CMD :: exit N` record: '112 derived families accounted for — 111 run, 1 NOT-MEASURED (derived from a recorded exit 3)'. The 1: `node scripts/check-plugin-teardown-shape.mjs --self-test` exit 3 — its positive control is pinned to commit 621a4876 this shallow checkout cannot reach ('git fetch --unshallow' is the remedy it names); NOT MEASURED locally, CI runs it on a full checkout. All 111 others exit 0, including check:sdui-manifest (red at first — the gate hashes ui/packages/i18n sources — then green after `node scripts/gen-sdui-manifest-node.mjs` re-recorded scripts/sdui-manifest.sources/i18n.json; the artefact is byte-identical, 106 components), check:i18n, check:i18n-coverage, check:i18n-walk-parity, check:dual-build-cjs-loads and spec check:skill-examples (each exit 3 PREREQUISITE NOT MET on the first sweep, green after the full `turbo run build` under the lock: 119 tasks at 97472bcf, 97 tasks at d3041a42, both VERDICT command-exit 0). ui gates from ui/: `pnpm --dir ui run check:i18n-keys` EXIT=0 (every defaultValue equals its en value); `pnpm --dir ui run check:i18n-drift` EXIT=0 (4 en values changed, 36 pack values followed, 1 key added). ① closure: `turbo run build --filter='@objectstack/cli^...' --filter='@object-ui/console^...'` (94 tasks, VERDICT 0) before the first test run, then the full build above. ⑤ n/a (no gate script edited). check-platform-checklist not run (no exported symbol renamed or deleted; one export added). CI families named, not re-run locally: Lint & Repo Gates, TypeScript Type Check, Test Core (incl. test:repo and the cli integration tier), Build Core, Lint UI, Type Check UI, Test UI (16 shards), Build & E2E UI, Check Changeset, Governed Surface Queue Guard — status in_progress at report time; read the PR's check-runs.", "dogfood_battery": "n/a — no `!` in the PR title and no (narrowing) arm", "mcp_calls": "0 — no MCP GitHub calls (reads via curl to api.github.com: issue 26136 + comments, pulls/26148 twice, pulls/26215 once)", "api_writes": "2 — (1) repository_dispatch through scripts/pm/fleet-write/dispatch.mjs: pr_create → POST /repos/objectstack-ai/objectstack/pulls (landed as objectstack-ai/objectstack#26215, read_back identical, 9311 bytes, assignee os-zhuang); (2) scripts/pm/post-stamped.mjs → POST /repos/objectstack-ai/objectstack/issues/26136/comments (this report). git push ×5 to origin claude/issue-26136-objectos-cloud-naming (the empty probe, then 97472bcf, fabcb280, d3041a42, 9e0a8d92) — direct git, not REST. The PR's labels (documentation, size/m, tests, tooling) were applied by the repository's labeler, not by this run.", "deviations": [ "Commit trailers: the dispatch order prescribes 'Co-Authored-By: Claude Fable 5.1' as mandatory; .claude/agents/os-dev.md and AGENTS.md require the model-free pair and the pre-push hook (check:commit-card-trailers) refused the first push with it. os-dev.md wins: the commits carry 'Co-authored-by: Claude' + the Claude-Session trailer; the refused commit was amended before it was ever published (no history rewrite).", "PR body footer: the dispatch order gives the bare footer for both surfaces; os-dev.md's byte discipline says the session-URL form on a PR body created by the dev. Used the session-URL form on the PR body and the bare form on this comment.", "pr_create labels: the order names no label and os-dev.md says zero writes then; the relay's validator refuses an empty labels array ('must name at least one item'), so the labels key was omitted altogether (dry-run accepted; no label written).", "README.md: the order's serial constraint said edit only if PR 26148 had merged — it merged at 14:13Z, before this PR opened, so origin/main was merged into the branch (merge commit d3041a42, no rebase: objectstack allows no force-push here either way) and the one phrase at the new README line 257 flipped. The merge conflicted on scripts/sdui-manifest.sources/i18n.json (main had re-recorded the same package for the zh sign-out label); main's record was taken for the merge commit and the record regenerated on the merged tree in a separate commit, the os-regen-merge shape.", "packages/cli comment residue: the order limits packages/cli/src/** to string literals and help text, so the developer-facing code comments that still say 'ObjectStack Cloud' (file headers of login.ts, whoami.ts, package/publish.ts, plugin/publish.ts; auth-flows.ts, cloud-config.ts, one-shot-exit.ts, schema-migration-plugins.ts, unmanaged-tables.ts and five test files) were not touched; the acceptance grep is therefore 59 lines, not zero — 20 of them in packages/cli, all comments plus the new test naming the stale phrase on purpose.", "Local scope narrowings, declared: the cli integration tier and the nightly e2e tier left to CI (no spawn path touched; the e2e pin flipped by text); check-plugin-teardown-shape --self-test NOT MEASURED (shallow checkout); the first unit-tier sweep's single red was a 5 s timeout under a loaded box, re-measured green alone — reported as such, not as green on the sweep.", "ui/scripts/check-changeset-presence.mjs (not wired in this repository's CI) reports this change as undeclared because it reads ui/.changeset while the changeset lives in the root .changeset/ like every ui PR merged today; left alone, noted in the PR's Acceptance notes." ], "open_questions": [ { "question": "Should the 'is this deployment branded?' signal become an explicit runtime-config key (e.g. branding.edition: community | cloud | enterprise) instead of 'productName equals the default', which this PR uses?", "options": [ "A — keep the default-name reading (this PR): no new contract key; the mark follows the one branding value every self-branding runtime already sends; a logo or colour pushed without a name change keeps the mark.", "B — add branding.edition to the runtime-config payload (spec/cloud-connection/cloud/app-shell), the Console reads it, Community is the absent default." ], "recommendation": "A, because — 实际业务需求: measured at source, cloud pushes 'ObjectOS Cloud' and a cloud-connected runtime pushes its workspace name, so the default-name reading already tells Community from every branded deployment that exists today; nobody reads an edition key. 项目长远合理性: B is the cleaner contract but it declares a capability four packages must then honour, and the ruling asked for one product name on every screen, not an edition protocol. 防 AI 犯错: B's declared key is a trap the moment a runtime forgets to send it (declared, not enforced); A reads a value that is already load-bearing for the wordmark. 创业阶段不扩散需求: zero pull for B today; file it only when a second consumer of 'edition' appears." }, { "question": "Flip the developer-facing 'ObjectStack Cloud' code comments in packages/cli (20 lines, comments only) so the acceptance grep reaches zero inside the card's surface?", "options": [ "A — yes, on the seat's word: a mechanical follow-up commit on this branch or a tiny sibling PR; no behaviour, no tests.", "B — no: comments are not read by users; leave them until the files are next touched." ], "recommendation": "A, because — 实际业务需求: none for users, but the ruling says ObjectStack is the framework name, so a comment calling the hosted product 'ObjectStack Cloud' is now simply wrong. 项目长远合理性: one name everywhere is the ruling's point. 防 AI 犯错: a stale comment above a string that says 'ObjectOS Cloud' is exactly the text an AI copies back into the next string. 创业阶段: cost is minutes; the order's surface wording is the only reason it was not done here." } ], "out_of_scope_findings": [ "class: a (user-visible copy contradicting the maintainer's naming ruling) · reach: exception: release-text and maintainer-directed (ruling 2026-10-26 13:18Z) · evidence: `git grep -n \"ObjectStack Cloud\" -- ':!**/CHANGELOG.md'` at 9e0a8d92 → 59 lines; outside this card's surface the user-facing ones are content/docs/deployment/cloud-connection.mdx (title + description + body), content/docs/deployment/index.mdx (2), content/docs/deployment/publish-and-preview.mdx, content/docs/protocol/objectql/schema.mdx (2), content/docs/protocol/kernel/metadata-service.mdx, content/docs/ui/setup-app.mdx, content/docs/kernel/services-checklist.mdx + content/docs/protocol/kernel/http-protocol.mdx (quoting the 501 message), ROADMAP.md, four package READMEs (adapters/hono, drivers/driver-memory, services/service-package ×2, services/service-cluster-redis), and one runtime string in an HTTP 501 body: packages/spec/src/system/core-services.zod.ts 'Provided by @objectstack/service-ai in ObjectStack Cloud/Enterprise' (pinned by packages/runtime/src/domains/ai-anonymous-deny-ordering.test.ts and docs/qa/platform-checklist/areas/ai.json; service-settings manifests say 'ObjectStack Cloud monorepo' / 'ObjectStack Cloud tier' with a test pin). content/docs/releases/** and CHANGELOGs are history and stay · dedupe words: ObjectStack Cloud, ObjectOS Cloud, naming residue, docs, core-services 501, service-ai", "carrier: this card's seat — same family as #26136 (a sibling card for the docs tree + the spec 501 string, or a scope widening of this card); ui/AGENTS.md and ui/docs/adr/0060 also say 'ObjectStack Cloud' as a product example but are governed surfaces (Tier H), a maintainer edit", "observation, not filed (zero pull): ui/scripts/check-changeset-presence.mjs still reads ui/.changeset after the import under ui/, while the root .changeset/ now carries every ui changeset; no workflow in this repository runs it · carrier: none" ] }Generated by Claude Code
objectstack-fleet commentedon Oct 26, 2026
Landed · 2026-10-26T20:39Z ·
session_01FMuBZmssbfQkVrKRtxNvngmerged: true,merged_at2026-10-26T20:38:26Z, merged by the queue (objectstack-fleet[bot]), headf442ea21(10 commits: the change, the sdui record, and threeorigin/mainmerge rounds with their re-recordedscripts/sdui-manifest.sources/i18n.json— the generated digest conflicted with chore(i18n): delete 92 message keys nothing reads from all ten locale packs #26158,934810ccand fix(app-shell): record create/update toasts name the saved record #26202 in turn; the queue dequeued the entry once withMERGE_CONFLICTat 2026-10-26T19:54Z; sighting recorded on devx(sdui): CI regenerates the sdui manifest and compares it to the committed artefact, so ui PRs conflict only on real contract changes and the merge queue catches combined effects #26137, the anchor for that conflict shape).origin/main:f00cbe36"fix(cli,i18n,console): the hosted product reads "ObjectOS Cloud" everywhere; the Community Console carries a "Powered by ObjectStack" mark", 31 files +327/−71. On that commit:packages/cli/src/commands/cloud/login.tscarries "ObjectOS Cloud" (3),ui/packages/i18n/src/locales/zh.ts(4),content/docs/deployment/cli.mdx(6),README.md(2);data-testid="auth-powered-by"is inui/apps/console/src/pages/auth/AuthLayout.tsx(1). The twoObjectSchemakey-count pins read 48 on the merged tree (test(app-shell): re-point the ObjectSchema corpus guards to 48 after sharing was adopted #26231).Fixeson merge;pm:dispatchedremoved in this stroke;domain:devx/area:devpath/priority:p2stay. Residue outside this card's surface (eight docs pages, ROADMAP, four package READMEs, the AI 501 remedy string, two settings-manifest messages, developer comments) is brand(residue): "ObjectStack Cloud" survives outside #26136's surface — eight docs pages, ROADMAP, four package READMEs, the AI 501 remedy string and two settings-manifest messages (with their test and checklist pins), plus developer comments #26228,pm:queue.ui/AGENTS.mdand ADR-0060 remain the maintainer's hand (Tier H). The seat's## 席位核对ACCEPT is on the PR (comment 6421101652).Generated by Claude Code