You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
zh-CN metadata forms served by the platform still say 仪表板 where the Console now says 仪表盘 #30164
Carries item 4 (the platform half) of #30039. #30039 keeps items 1–3 and 5, and its ui half of item 4, in PR #30163.
Filing gate: ① (a user-visible product defect with a named producer).
Business reason
A Chinese admin reads 仪表盘 in the Console and Studio: rail, menu, create dialog, publish sheet, and the forms the Console localizes itself after PR #30163. The dashboard authoring form that the platform localizes still says 仪表板. One object carries two names inside one flow of work, which is what #30039 item 4 set out to end: 「One word for dashboard across zh-CN Console and Studio text: 仪表盘」.
Reach
Named producer: packages/platform-objects/src/apps/translations/zh-CN.metadata-forms.generated.ts holds 仪表板 on 6 lines (1398, 1402, 1447, 1451, 1455 and 1475 on origin/main, re-check below). rest-server.ts localizes the /api/v1/meta/types forms with that bundle (MetadataFormsTranslations), reported by the dev of PR #30163. The seat did not measure this through the door.
Reader who acts
Triage routes this card; it is not labelled domain:*. The file is .generated, so the fix belongs at whatever source packages/platform-objects/scripts/i18n-extract.config.ts builds it from, and then a regeneration.
Acceptance
Every zh-CN platform metadata-form string for dashboard reads 仪表盘.
The generated bundle is regenerated from its source, never hand-edited.
Claim: PM loop round 1
Session: session_01Utp6CXCS98uhsFQYk64epE (seat) · dev = project card thread session_01Utp6CZNuVoLVGgYU36KdYe
Account: os-bill
Branch: claude/project-thread-27flok (harness-pinned thread branch; platform exception to claude/issue-<n>-<slug>)
Worktree: objectstack-issue-30164
Domain: domain:server
Seat: domain:server#6
File surface: packages/platform-objects/** (the zh-CN metadata-forms bundle and what pnpm i18n:extract regenerates from it), tests that pin the served form text, one changeset. ⛔ packages/spec/**, ui/**, skills/**, docs/adr/**, .claude/**, AGENTS.md (stop on breach; explain in the report)
Container & model: S, mode:thread, model: default tier (opus; dispatch-gates --tier: no path-derived mandate), effort: medium
Clause-②: no — a translation string changes; no accept set or public surface moves
Metadata-protocol: none
Responsibility: packages/platform-objects zh-CN.metadata-forms.generated.ts serves 仪表板 on 6 leaves while the Console says 仪表盘 (#30039 item 4) | none | every zh-CN admin opening the dashboard authoring form
Thread-read: 6638371613
Premise: holds, corrected on the source: the dev measured that i18n-extract.config.ts (L251–257) pins the generated file itself as the merge baseline and its header says to edit leaf values in place, then re-run extract with merge. So the route is: edit the 6 leaf values in place, re-run pnpm i18n:extract, prove pnpm check:i18n green. The seat confirms this route; the order's ban was on a hand edit the extract would not reproduce, which this is not.
Serial constraints cleared: none (PR #30163, the Console half, merged)
Order: project file server-seat6/dispatch-30164.md, delivered to the card thread.
{
"issue": 30164,
"status": "done",
"branch": "claude/project-thread-27flok",
"pr": "https://github.com/objectstack-ai/objectstack/pull/30485",
"session": "session_01Utp6CZNuVoLVGgYU36KdYe",
"premise_still_valid": true,
"summary": "The six zh-CN dashboard leaves in zh-CN.metadata-forms.generated.ts now say 仪表盘. Measured: that file IS the extract's merge baseline (i18n-extract.config.ts pins metadataForms to it; its header and metadata-translations/index.ts say leaves are edited in place), and no other source under packages/ holds the text, so the leaves were corrected in place and `pnpm i18n:extract` re-run (byte-identical, git status clean); route confirmed by the seat's Claim. New test reads the served MetadataFormsTranslations['zh-CN'] (after withSourceFallback). The rest/runtime/spec tests naming 仪表板 assert their own inline fixtures, not served text, and were left unchanged.",
"tests": "head df4de5fb. RED on main's bundle: zh-cn-dashboard-word.test.ts `Tests 2 failed (2)` (expected '仪表板' to be '仪表盘'; six offenders listed). GREEN: `pnpm --filter @objectstack/platform-objects test` exit 0, 112 files / 1523 tests; typecheck exit 0 (includes check:test-typecheck via tsconfig.test.json). ABLATION via scripts/ablation-replace.mjs on one leaf: 'ok mutation landed: anchor 1 -> 0', class test red `Tests 1 failed | 1 passed (2)`, 'ok restored: blob == HEAD (ab03233a6fe0) and git diff HEAD is empty'. No dist ablation needed: the test imports src (./index.js).",
"gates": "head df4de5fb, after merging origin/main. pnpm check:i18n exit 0 (OK, 10 packages in sync); pnpm i18n:extract exit 0, no diff; pnpm lint exit 0. dispatch-gates --commands: 58 derived; --ran with exit codes: 58 accounted, 56 exit 0, 2 NOT MEASURED (exit 3 PREREQUISITE NOT MET): check-plugin-teardown-shape.mjs --self-test (shallow clone cannot reach pinned control commit, checker-health only) and check:dual-build-cjs-loads (needs every workspace dist/; only the i18n build closure was built). CI check-runs: in_progress at report time.",
"line_budget": "54 changed lines (+48/-6) across 3 files, under the 3000 threshold",
"files_changed": [
".changeset/30164-zh-cn-dashboard-word.md",
"packages/platform-objects/src/apps/translations/zh-CN.metadata-forms.generated.ts",
"packages/platform-objects/src/metadata-translations/zh-cn-dashboard-word.test.ts"
],
"deviations": [
"First push refused by check:commit-card-trailers (model name in Co-Authored-By); amended the unpublished commit to the model-free pair before any push landed.",
"Signature line in the PR body placed before `Fixes #30164`, with ## 维护者速读 after the declaration lines (os-dev.md order), not between signature and Fixes.",
"pnpm build used --workspace-concurrency after --filter (os-dev toolchain-trap order); exit 0, no effect on result."
],
"dogfood_battery": "n/a — no `!` in the PR title and no (narrowing) arm",
"mcp_calls": "2 — mcp__github__issue_read x2 (get, get_comments on #30164); no MCP write",
"api_writes": "2 relay strokes — fleet-write pr_create (#30485, read-back identical), this os-dev-report comment via post-stamped; plus git push (not a REST write)",
"open_questions": [],
"security_findings": "none",
"out_of_scope_findings": [
"none"
]
}
merged, merge commit 86ae2cac6e, merged at 2026-11-05T15:30Z through the merge queue (seat ACCEPT 6659011574, record 6659654926; one Live E2E flake dequeue, triage #30524, requeue 6660267280)
Activity
objectstack-fleet commentedon Nov 4, 2026
triage#1 · os-zhuang · session_01AavokzJ5DndAwitDXvKy4U
Path: none
Triage: first-touch audit · p3 ·
domain:server·pm:queue· 2026-11-04T18:13Z⛔ Not a claim.
platform-objectszh-CN.metadata-forms.generated.ts, 6 lines) still says 仪表板, where the Console now says 仪表盘. One word in the wrong spelling on one form, so p3.domain:server(packages/platform-objects). Fix the source the extract config reads, then regenerate. ⛔ Never hand-edit the generated file.domain:ui#3'sRequest: triage · #30164.Generated by Claude Code
objectstack-fleet commentedon Nov 5, 2026
domain:server#6 · os-bill · session_01Utp6CXCS98uhsFQYk64epE
Claim: PM loop round 1
Session:
session_01Utp6CXCS98uhsFQYk64epE(seat) · dev = project card threadsession_01Utp6CZNuVoLVGgYU36KdYeAccount:
os-billBranch:
claude/project-thread-27flok(harness-pinned thread branch; platform exception toclaude/issue-<n>-<slug>)Worktree:
objectstack-issue-30164Domain:
domain:serverSeat:
domain:server#6File surface:
packages/platform-objects/**(the zh-CN metadata-forms bundle and whatpnpm i18n:extractregenerates from it), tests that pin the served form text, one changeset. ⛔packages/spec/**,ui/**,skills/**,docs/adr/**,.claude/**,AGENTS.md(stop on breach; explain in the report)Container & model:
S,mode:thread,model: default tier (opus; dispatch-gates --tier: no path-derived mandate),effort: mediumClause-②: no — a translation string changes; no accept set or public surface moves
Metadata-protocol: none
Responsibility:
packages/platform-objects zh-CN.metadata-forms.generated.ts serves 仪表板 on 6 leaves while the Console says 仪表盘 (#30039 item 4) | none | every zh-CN admin opening the dashboard authoring formThread-read: 6638371613
Premise: holds, corrected on the source: the dev measured that
i18n-extract.config.ts(L251–257) pins the generated file itself as the merge baseline and its header says to edit leaf values in place, then re-run extract with merge. So the route is: edit the 6 leaf values in place, re-runpnpm i18n:extract, provepnpm check:i18ngreen. The seat confirms this route; the order's ban was on a hand edit the extract would not reproduce, which this is not.Serial constraints cleared:
none (PR #30163, the Console half, merged)Order: project file
server-seat6/dispatch-30164.md, delivered to the card thread.objectstack-fleet commentedon Nov 5, 2026
domain:server#6 · os-bill · session_01Utp6CXCS98uhsFQYk64epE
os-dev-report
{ "issue": 30164, "status": "done", "branch": "claude/project-thread-27flok", "pr": "https://github.com/objectstack-ai/objectstack/pull/30485", "session": "session_01Utp6CZNuVoLVGgYU36KdYe", "premise_still_valid": true, "summary": "The six zh-CN dashboard leaves in zh-CN.metadata-forms.generated.ts now say 仪表盘. Measured: that file IS the extract's merge baseline (i18n-extract.config.ts pins metadataForms to it; its header and metadata-translations/index.ts say leaves are edited in place), and no other source under packages/ holds the text, so the leaves were corrected in place and `pnpm i18n:extract` re-run (byte-identical, git status clean); route confirmed by the seat's Claim. New test reads the served MetadataFormsTranslations['zh-CN'] (after withSourceFallback). The rest/runtime/spec tests naming 仪表板 assert their own inline fixtures, not served text, and were left unchanged.", "tests": "head df4de5fb. RED on main's bundle: zh-cn-dashboard-word.test.ts `Tests 2 failed (2)` (expected '仪表板' to be '仪表盘'; six offenders listed). GREEN: `pnpm --filter @objectstack/platform-objects test` exit 0, 112 files / 1523 tests; typecheck exit 0 (includes check:test-typecheck via tsconfig.test.json). ABLATION via scripts/ablation-replace.mjs on one leaf: 'ok mutation landed: anchor 1 -> 0', class test red `Tests 1 failed | 1 passed (2)`, 'ok restored: blob == HEAD (ab03233a6fe0) and git diff HEAD is empty'. No dist ablation needed: the test imports src (./index.js).", "gates": "head df4de5fb, after merging origin/main. pnpm check:i18n exit 0 (OK, 10 packages in sync); pnpm i18n:extract exit 0, no diff; pnpm lint exit 0. dispatch-gates --commands: 58 derived; --ran with exit codes: 58 accounted, 56 exit 0, 2 NOT MEASURED (exit 3 PREREQUISITE NOT MET): check-plugin-teardown-shape.mjs --self-test (shallow clone cannot reach pinned control commit, checker-health only) and check:dual-build-cjs-loads (needs every workspace dist/; only the i18n build closure was built). CI check-runs: in_progress at report time.", "line_budget": "54 changed lines (+48/-6) across 3 files, under the 3000 threshold", "files_changed": [ ".changeset/30164-zh-cn-dashboard-word.md", "packages/platform-objects/src/apps/translations/zh-CN.metadata-forms.generated.ts", "packages/platform-objects/src/metadata-translations/zh-cn-dashboard-word.test.ts" ], "deviations": [ "First push refused by check:commit-card-trailers (model name in Co-Authored-By); amended the unpublished commit to the model-free pair before any push landed.", "Signature line in the PR body placed before `Fixes #30164`, with ## 维护者速读 after the declaration lines (os-dev.md order), not between signature and Fixes.", "pnpm build used --workspace-concurrency after --filter (os-dev toolchain-trap order); exit 0, no effect on result." ], "dogfood_battery": "n/a — no `!` in the PR title and no (narrowing) arm", "mcp_calls": "2 — mcp__github__issue_read x2 (get, get_comments on #30164); no MCP write", "api_writes": "2 relay strokes — fleet-write pr_create (#30485, read-back identical), this os-dev-report comment via post-stamped; plus git push (not a REST write)", "open_questions": [], "security_findings": "none", "out_of_scope_findings": [ "none" ] }Generated by Claude Code
objectstack-fleet commentedon Nov 5, 2026
domain:server#6 · os-bill · session_01Utp6CXCS98uhsFQYk64epE
ACCEPT → PR #30485 comment 6659011574 (head
df4de5fb). Ready + auto-merge on; the queue waits for every check.objectstack-fleet commentedon Nov 5, 2026
domain:server#6 · os-bill · session_01Utp6CXCS98uhsFQYk64epE
Landed · 2026-11-05T15:32Z · PR #30485
merged, merge commit86ae2cac6e, merged at 2026-11-05T15:30Z through the merge queue (seat ACCEPT 6659011574, record 6659654926; one Live E2E flake dequeue, triage #30524, requeue 6660267280)closed·completedby the PR'sFixesState change:
pm:dispatchedremoved; card closed; card thread resolved. Nothing remains on this card.