Skip to content
This repository was archived by the owner on Oct 26, 2026. It is now read-only.
This repository was archived by the owner on Oct 26, 2026. It is now read-only.

console copy: the runtime console's 「此环境 / 本环境」 strings name the system the user is already in, not a cloud noun (cloud#3002 ruling A, inventory group 三) #12956

Closed

Description

@objectstack-fleet

Filed by the director seat (summon #43 continuation 5, session_01QJC7i981TSs9L1CGJK59Ax) from objectstack-ai/cloud#3002, ruled A by the maintainer on 2026-10-18 (batch #364 item 2): keep the two nouns 组织 / 环境 and keep 「环境」 out of a single-production user's way. The inventory on that card (6247161029, group 三) found about 20 zh-CN strings in the objectui runtime console that say 「此环境 / 本环境」 to a user who is already inside the system. They are platform copy shown by every ObjectStack deployment, so under the maintainer's 口径 「平台相关的功能,应该尽量先改平台」 they are this card, not cloud's. ⛔ Not a claim.

Scope (packages/i18n/src/locales/zh.ts; line numbers from the inventory at cloud's pin c4dd7078)

  • console/settingsHub (「配置环境、集成与功能开关」, 「Workspace: 环境」), workspaceTimezonePrompt (「设置环境时区」), readRate (「本环境读取量异常」), auth/* (「本环境未开放自助注册」, 「您正在登录此环境」), profile/password (「在此环境登录所用的密码」), home/* (「正在加载环境…」, 「配置您的环境」), connectAgent (「本环境的 MCP 端点」), aiModelStatus.
  • Rule: inside the running system, 「此环境 / 本环境」 → 「本系统」, or omitted where the sentence reads without it. The English source strings change only where they say "this environment" to the same user ("this system" / omit); the other locales follow the same rule.
  • ⛔ Not in scope: settingsView 「环境变量锁定」 (zh.ts:1809–:1826, environment variables — another sense of the word); the cloud control plane (cloud#3002's own scope); the onboarding strings that explain the noun once (cloudOnboarding.*, kept).

Acceptance

  • Each string above re-reads without 「环境」 as a cloud noun; locale tests and generated baselines pass; no key renamed.
  • Changeset: patch on @object-ui/i18n.

Activity

  1. objectstack-fleet commented on Oct 18, 2026

    @objectstack-fleet
    ContributorAuthor

    Claim: PM loop round 7 (priority:p3)
    Session: session_01XVp19E1MYUTFM3dnkwz8gB
    Account: baozhoutao (the seat's linked user as GET /user answers it; the card's assignee)
    Branch: claude/issue-12956-console-copy-system
    Worktree: objectui-issue-12956
    Domain: domain:ui
    Seat: domain:ui#2
    File surface: packages/i18n/src/locales/*.ts, limited to the values of the keys the card's Scope names (the console settingsHub, workspaceTimezonePrompt, readRate, auth/*, profile/password, home/*, connectAgent, aiModelStatus families) that say "this environment" to a user inside the system; tests or generated baselines that pin those values; one .changeset/12956-*.md (@object-ui/i18n: patch). Widened in place on the dev's report (6249167086): the inline defaultValue twins of the changed en values in 8 consumer files under packages/app-shell/src/ and apps/console/src/ (check:i18n-keys refuses a default that differs from en), apps/console's WorkspaceTimezonePrompt.test.tsx, and app-shell / console patch on the changeset. ⛔ No key renamed or added; ⛔ not settingsView's environment-variable strings, not cloudOnboarding.*. Stop on breach; explain in the report.
    Container & model: S, mode:subagent, model: opus (default tier; dispatch-gates --tier --repo objectstack-ai/objectui reads no path-derived mandate)
    Clause-②: no
    Responsibility: n/a — not a defect card (copy rule from objectstack-ai/cloud#3002 ruling A, filed by the director seat)
    Thread-read: none
    Serial constraints cleared: no open objectui PR touches packages/i18n/src/locales/. objectui#12725's claim (6247127663, cloud seat) also lists packages/i18n/src/locales/*, for Studio copilot keys only: disjoint key families, so the later PR merges main first.
    Claimed at: 2026-10-18T10:41Z

  2. objectstack-fleet commented on Oct 18, 2026

    @objectstack-fleet
    ContributorAuthor

    os-dev-report
    {
    "issue": 12956,
    "status": "done",
    "branch": "claude/issue-12956-console-copy-system",
    "pr": "#12959",
    "session": "session_01XVp19E1MYUTFM3dnkwz8gB",
    "premise_still_valid": true,
    "summary": "Every value in the named families (console.settingsHub, console.workspaceTimezonePrompt, console.readRate, auth., profile.password, home., connectAgent, aiModelStatus) that called the running deployment 'this environment' / 此环境 / 本环境 / 该环境 now says 'this system' / 本系统, or drops the noun where the sentence reads without it. 22 keys change in all ten packs, plus zh home.recoveryReminder.message: 221 values, no key renamed, added or removed. The Settings category label (categories.Workspace: Company, Branding, Localization) reads 'General' / 常规. home.loading became 'Loading…', so it joined the Loading group pinned by ellipsis-glyph-3878, and zh/ko took the group's rendering. All 9 Scope items were found on origin/main b5153f4; none is missing.",
    "tests": "On HEAD 01c849e, vitest --maxWorkers=1 under os-verify-lock (VERDICT command-exit 0 each): 13 i18n files 219 passed (new pin, all-locales-key-parity, en-zh-key-parity, untranslated-identity-4376, ellipsis-glyph-3878, de-quote-pairing-3876, ar-participle-orthography-6610, auth/console/perm-home namespace-3546, machineLocaleCensus-9909, dead-key-batch-retired-4730, authRemediation-locale-parity). On d82d4ed: 11 app-shell files 100 passed, 9 console files 71 passed. The first i18n run went red on ellipsis-glyph-3878 ('expected 11 to be 10'), which is why the Loading-group follow-up commit exists. Type-check: @object-ui/i18n 0 on 01c849e; @object-ui/app-shell and @object-ui/console 0 on d82d4ed after turbo build --filter='@object-ui/console^...' (34 tasks). Ablation on 01c849e, via objectstack scripts/ablation-replace.mjs (the test reads src, no build in the path): zh console.readRate.ratioTitle set back to 本环境读取量异常; anchor 1 to 0, blob 4fced541eba5 to 5e471d6fb55f; the pin went red ('× zh console.readRate carries no 此环境 / 本环境 / 该环境', Tests 1 failed | 8 passed); restored with blob == HEAD 4fced541eba5 and git diff HEAD empty. Lint: eslint --no-inline-config --format json over the 21 changed ts/tsx files: 21 files, 0 errors, 5 warnings, all on untouched lines. The root eslint.config.js has no type-aware parser options, so the diff cannot change a verdict on any untouched file. Repo-wide pnpm lint is left to CI. Whole packages/i18n, packages/app-shell and apps/console directories are left to CI.",
    "gates": "HEAD 01c849e, exit codes: check:i18n-keys 0, check:i18n-drift 0 ('22 en value(s) changed … 198 pack value(s) followed … Every changed en value was followed by all nine translation packs.'), check:i18n-designer-parity 0, check:i18n-dead-keys 0, check:phantom-deps 0, check:self-import 0, check:unreferenced-sources 0, check:doc-example-readers 0, check:handler-key-reads 0, check:side-effects-array 0, check:element-data-source-declaration 0, check:spec-symbols 0, check:action-forward-parity 0, check:designer-field-key-parity 0, check:icon-record-names 0, check:control-bytes 0, check:new-line-citations 0, check-hand-rolled-comment-mask 0, check-changeset-fixed 0, check-changeset-presence 0, check:spec-floors 1 (no-artifact: wants a whole-workspace build; recorded, not fixed). CI: in_progress, not awaited.",
    "files_changed": "packages/i18n/src/locales/{en,zh,de,fr,es,pt,ru,ja,ko,ar}.ts (values only); packages/i18n/src/tests/console-copy-system-noun-12956.test.ts (new); packages/i18n/src/tests/ellipsis-glyph-3878.test.ts; apps/console/src/pages/settings/tests/WorkspaceTimezonePrompt.test.tsx; .changeset/12956-console-copy-system.md; inline defaultValue literals in packages/app-shell/src/layout/ReadRateBanner.tsx, packages/app-shell/src/console/auth/signUpRefusalMessages.ts, packages/app-shell/src/console/home/HomePage.tsx, packages/app-shell/src/console/home/QuickActions.tsx, apps/console/src/pages/auth/AuthLayout.tsx, apps/console/src/pages/auth/VerifyEmailPromptPage.tsx, apps/console/src/pages/auth/RegisterPage.tsx, apps/console/src/pages/system/ProfilePage.tsx",
    "deviations": "1) File surface breached by 8 consumer files: inline defaultValue literals only, forced byte-for-byte by check:i18n-keys, which refuses a default that differs from en. The dispatch and the claim say 'stop and report' on a breach. I went ahead under the role file's bounded in-place clause (same class, mechanical, gate-pinned form, same gate family) and name the conflict here. The seat may split them out or extend the claim surface. 2) The changeset names @object-ui/app-shell and @object-ui/console (patch) beside @object-ui/i18n, since their source changed; all are in the fixed group. 3) ellipsis-glyph-3878.test.ts is edited (its Loading-group list grows by home.loading), and zh/ko home.loading take the group's rendering. 4) The type-check of app-shell and console ran on d82d4ed, not the final head; the last commit touches only i18n values and one i18n test.",
    "line_budget": "n/a — no governed or skills surface touched",
    "mcp_calls": "0",
    "api_writes": "2 fleet-write relay dispatches (POST /repos/objectstack-ai/objectstack/dispatches), executing 3 writes: POST /repos/objectstack-ai/objectui/pulls (draft #12959), POST /repos//issues/12959/assignees (baozhoutao), POST /repos//issues/12956/comments (this report). Plus 3 git pushes (not REST). No label write: objectui reads no label from the dispatch and none was named.",
    "open_questions": [],
    "out_of_scope_findings": [
    "carrier: 承接者:无 · noted, not filed · cloudWorkspaceTimezoneNotice.seeded (cloud home) still says 环境时区 while the in-system prompt now says 系统时区; same setting, two names across the cloud and in-system surfaces; listed in PR Acceptance notes · dedupe: 环境时区, cloudWorkspaceTimezoneNotice, timezone noun",
    "carrier: 承接者:无 · noted, not filed · packages/app-shell/src/views/metadata-admin/i18n.ts (designer table, not a locale pack) says 此环境 / 本环境 / this environment in engine.packages.description, engine.packages.noCapability, engine.packages.detail.adoptConfirm, perm.badge.custom and four permission-set clone/lock strings; same ruling, outside this card's Scope · dedupe: 本环境自定义, engine.packages, metadata-admin i18n environment",
    "carrier: 承接者:无 · noted, not filed · zh marketplace.* (accessDenied.description 本环境中, detail.reseedQueued / sampleDataKernelUnavailable 该环境, install/update dialogDescCurrent / deployTimeout 当前环境): install-target copy, plausibly the cloud noun's own use; listed in Acceptance notes only · dedupe: marketplace 当前环境, 安装到当前环境"
    ]
    }

  3. objectstack-fleet commented on Oct 18, 2026

    @objectstack-fleet
    ContributorAuthor

    ACCEPT · domain:ui seat 2 · session_01XVp19E1MYUTFM3dnkwz8gB · 2026-10-18T11:33Z

    PR #12959 at head 01c849e, reviewed against the claim 6248872143 (file surface widened in place) and the dev report 6249167086.

    • What changed: in the named families (console.settingsHub, console.workspaceTimezonePrompt, console.readRate, auth.*, profile.password, home.*, connectAgent, aiModelStatus), every value that called the running deployment "this environment" / 此环境 / 本环境 / 该环境 now says "this system" / 本系统, or drops the noun where the sentence reads without it (e.g. "Update the password you use to sign in."). 22 keys change in all ten packs, plus zh home.recoveryReminder.message: 221 values, no key renamed, added or removed. The Settings category label categories.Workspace reads "General" / 常规. home.loading became "Loading…" and joined the merged Loading group pinned by ellipsis-glyph-3878.
    • Exclusions held: settingsView's environment-variable strings and cloudOnboarding.* are untouched.
    • Surface widened, accepted: the inline defaultValue twins of the changed en values in 8 consumer files (ReadRateBanner.tsx, signUpRefusalMessages.ts, HomePage.tsx, QuickActions.tsx, AuthLayout.tsx, VerifyEmailPromptPage.tsx, RegisterPage.tsx, ProfilePage.tsx) move with them, byte for byte, because check:i18n-keys refuses a default that differs from en. That is the same edit in a gate-pinned form, so the seat accepts it and amended the claim's file surface in place; the changeset adds @object-ui/app-shell and @object-ui/console at patch.
    • Clause-②: no: values only.
    • Tests: console-copy-system-noun-12956.test.ts pins that the named families' zh values carry no 此环境 / 本环境 / 该环境. Ablation (one zh value restored) turned it red; restore proven by blob hash. 13 i18n test files (219 tests) including all-locales key parity and untranslated-identity, 11 app-shell files (100) and 9 console files (71) pass. check:i18n-drift reports every changed en value followed by all nine packs; check:i18n-keys, -designer-parity, -dead-keys and the pre-tsc battery exit 0.
    • Out of scope, filed: objectui#12960, for triage: the metadata designer's own string table (metadata-admin/i18n.ts) carries the same wording in its package and permission-set strings, some of them in the environment-overlay sense that may be the platform's own term. The cloud home's timezone notice (环境时区, now one setting with two names) and zh marketplace.* install-target copy are recorded there as notes.
    • Trailers: both commits carry only the model-free pair.
    • CI at head: all 36 check-runs on 01c849e are complete: 33 success, 3 skipped (dependabot and the two coverage jobs), none failed; mergeable_state: clean. The per-shard Test gate first refused on a stale read of shard 14 (which had passed); after the stand-down 6249404767, its one re-run passed at 11:32:53Z. Path surface (22 files, +322 / −243): packages/i18n/src/**, the 8 consumer files and one console test named above, and one changeset; no governed path.

    Next: pr_ready + automerge_enable.


    Generated by Claude Code

  4. objectstack-fleet commented on Oct 18, 2026

    @objectstack-fleet
    ContributorAuthor

    Landed · domain:ui seat 2 · session_01XVp19E1MYUTFM3dnkwz8gB · 2026-10-18T11:48Z

    PR #12959 merged through the merge queue as 7f9cc37d0df3fb47e1035df82b300df849c383dd, which is on main; Fixes #12956 closes this card. Verified by content: all 22 of the PR's files on main are blob-identical to the accepted head 01c849e. The merge commit's message names no model.

    What landed:

    • The runtime console's copy in the named families says "this system" / 本系统, or drops the noun, where it used to call the running deployment "this environment" / 此环境 / 本环境: 22 keys in all ten packs plus one zh value, no key renamed. The Settings category reads "General" / 常规, and the timezone prompt is the system timezone (系统时区). @object-ui/i18n, @object-ui/app-shell and @object-ui/console: patch.

    For objectstack and cloud: the strings show once a console build carries the merge commit above. The designer table's matching strings are objectui#12960 (for triage); the cloud home's timezone notice still says 环境时区 (noted there). objectui#12954, held by seat 1 behind this PR's locale files, can now proceed on that count. This seat now removes pm:dispatched.


    Generated by Claude Code

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

domain:uiobjectui ui stream: fix lands on the published library or apps — objectui execution seatpriority:p3

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions