Skip to content

fix(platform-objects): zh-CN metadata forms say 仪表盘 for dashboard - #30485

Merged
objectstack-fleet[bot] merged 3 commits into
mainfrom
claude/project-thread-27flok
Nov 5, 2026
Merged

objectstack-fleet[bot] merged 3 commits into
mainfrom
claude/project-thread-27flok

Conversation

@objectstack-fleet

Copy link
Copy Markdown
Contributor

Requested by Bill · project thread

domain:server#6 · os-bill · session_01Utp6CXCS98uhsFQYk64epE

Fixes #30164

Clause-②: no
Metadata-protocol: none
Skills-docs: none (git grep -n 仪表板 -- skills/ on the final tree: 0 hits)

维护者速读

  • 改了什么:平台下发的中文仪表盘编辑表单里 6 处“仪表板”改为“仪表盘”(表单标题、基础信息说明、页眉及其显示标题/显示描述、组件的帮助文字)。
  • 为什么改:控制台和 Studio 已统一叫“仪表盘”,只有平台下发的这张表单还叫“仪表板”,同一对象一个流程里两个名字。
  • 风险与回滚:只改中文显示文字,不动任何键、结构或其他语言;回滚即还原这一个文件。
  • 先看:packages/platform-objects/src/apps/translations/zh-CN.metadata-forms.generated.ts(6 行文字),再看新测试 zh-cn-dashboard-word.test.ts。
  • 两分钟验证:pnpm --filter @objectstack/platform-objects exec vitest run src/metadata-translations/zh-cn-dashboard-word.test.ts,预期 2 条通过。
  • 需要你做的:无,席位落地。

What changes

zh-CN.metadata-forms.generated.ts is the os i18n extract merge baseline (scripts/i18n-extract.config.ts pins metadataForms to the committed file, and --merge only fills gaps), and both its own header and metadata-translations/index.ts say its leaves are edited in place. So the six dashboard leaves were corrected there, then the bundle regenerated: pnpm i18n:extract reproduces the committed tree byte for byte (no diff after the run) and pnpm check:i18n is green. No other source under packages/ carries the zh-CN form text. The source-hash tables are untouched: these leaves are translations, not source copies, so the generated provenance table never recorded them.

Tests

New packages/platform-objects/src/metadata-translations/zh-cn-dashboard-word.test.ts reads the SERVED bundle (MetadataFormsTranslations['zh-CN'], after withSourceFallback, the bundle rest-server.ts localizes /api/v1/meta/types forms with): the dashboard form title is 仪表盘, and no served zh-CN metadata-form string contains 仪表板.

  • Red on main's bundle: both tests fail, the second listing the six strings.
  • Green after the fix; ablation (one leaf put back via scripts/ablation-replace.mjs): the class test goes red naming 仪表板标识与描述, restored to the HEAD blob with git diff HEAD empty.
  • pnpm --filter @objectstack/platform-objects test: 112 files, 1523 tests passed. typecheck (includes check:test-typecheck): exit 0.

Acceptance notes

  • packages/rest/src/meta-types-schema-titles.test.ts and packages/runtime/src/domains/i18n-translations-served-groups.test.ts name 仪表板 only inside their own inline fixture bundles and assert the fixture back; they do not read the platform bundle, so they were left as they are.
  • packages/spec/src/marketplace/package-l10n.test.ts and packages/spec/src/system/i18n-resolver.test.ts likewise use their own fixtures and do not pin served form text (out of this card's surface, untouched).

Verification

All local readings on head df4de5fb (after merging origin/main).

  • pnpm check:i18n: exit 0, check-i18n-bundles: OK (10 package(s) — all bundles in sync, no undeclared authoring keys).
  • pnpm i18n:extract: exit 0, 11 files written, git status clean afterwards.
  • pnpm --filter @objectstack/platform-objects test: exit 0 (112 files, 1523 tests). typecheck: exit 0.
  • pnpm lint: exit 0.
  • dispatch-gates --commands: 58 derived; --ran reconciliation: 58 accounted, 56 exit 0, 2 NOT MEASURED (exit 3, PREREQUISITE NOT MET):
    • node scripts/check-plugin-teardown-shape.mjs --self-test: shallow clone cannot reach its pinned positive-control commit (checker-health only, judges no diff).
    • pnpm check:dual-build-cjs-loads: needs every workspace package's dist/; only the i18n build closure was built here. CI runs both.
Red on main, ablation

Red (main's bundle): expected '仪表板' to be '仪表盘'; offenders listed 仪表板, 仪表板标识与描述, 仪表板页眉配置(title、subtitle、actions), 在页眉中显示仪表板标题, 在页眉中显示仪表板描述, 包含位置和尺寸的仪表板组件. Tests 2 failed (2).

Ablation: ablation-replace: ok mutation landed: anchor 1 -> 0, then × no served zh-CN metadata-form string carries the retired spelling 仪表板, Tests 1 failed | 1 passed (2); ablation-replace: ok restored: blob == HEAD (ab03233a6fe0) and git diff HEAD is empty.


Generated by Claude Code

🤖 Generated with Claude Code

https://claude.ai/code/session_01Utp6CZNuVoLVGgYU36KdYe

The served zh-CN dashboard authoring form still said 仪表板 on six
leaves while the Console and Studio say 仪表盘. The generated bundle is
the extract's merge baseline, so the leaves are corrected in place and
the bundle regenerated; a test reads the served bundle.

Co-Authored-By: Claude <[email protected]>
Claude-Session: https://claude.ai/code/session_01Utp6CZNuVoLVGgYU36KdYe
@github-actions github-actions Bot added size/s documentation Improvements or additions to documentation tests tooling Fix lands in tooling, not a product package — enters pm:queue only with Unblocks: or a named surface labels Nov 5, 2026
@github-actions

github-actions Bot commented Nov 5, 2026

Copy link
Copy Markdown
Contributor

📓 Docs Drift Check

Nothing in this diff resolved to a documentable surface (no symbol, route or SDK anchor derived from 1 changed package(s)), so this run has no opinion about the docs.

What this run could not see

Coarse fallback — 2 page(s) merely mention a changed package (the pre-#9192 predicate, kept for the deliberately-wide backstop): node scripts/docs-audit/affected-docs.mjs --json a1d0b1ee9e428402399f91808923c508c84e0957 → packageMentionDocs.

@objectstack-fleet

Copy link
Copy Markdown
Contributor Author

domain:server#6 · os-bill · session_01Utp6CXCS98uhsFQYk64epE

席位核对 · ACCEPT · 2026-11-05T13:18Z · head df4de5fb

Reviewed against order server-seat6/dispatch-30164.md (Claim 6658014415), against the PR's own file list and diff.

  • Shape. Six zh-CN leaves in zh-CN.metadata-forms.generated.ts change 仪表板 → 仪表盘 (form title, basics description, header, show-title, show-description, widgets help); no key, structure or other locale moves. The file is the extract's merge baseline and its header says to edit leaves in place, the route the seat confirmed in the Claim; pnpm i18n:extract reproduces it byte for byte and pnpm check:i18n is green (dev readings).
  • Pins. zh-cn-dashboard-word.test.ts reads the served bundle (MetadataFormsTranslations['zh-CN'] after source fallback): red on main, green here, one ablation recorded.
  • Declarations. Clause-②: no, Metadata-protocol: none, patch, Skills-docs: none (grep 0). Not BREAKING.
  • Accepted deviations. none. Two derived gates read NOT MEASURED locally (shallow-clone / full-dist prerequisites); CI gates the queue.
  • Out of scope. Fixture-only mentions of 仪表板 in packages/rest, packages/runtime and packages/spec tests do not pin served text: Acceptance notes, nothing to file.
  • Gates. check-governed-merges --pr 30485: not governed, 54 changed lines. Author objectstack-fleet[bot] (relay).

Landing: ready + auto-merge; the queue waits for every check.

@objectstack-fleet

Copy link
Copy Markdown
Contributor Author

domain:server#6 · os-bill · session_01Utp6CXCS98uhsFQYk64epE

席位记录 · 2026-11-05T13:49Z · Head-sha df4de5fb · 补记(ACCEPT 6659011574 之后)

维护者速读(席位按 diff 校正)

  • 改了什么:平台下发的中文仪表盘编辑表单里 6 处“仪表板”改为“仪表盘”(表单标题、基础信息说明、页眉、显示标题、显示描述、组件的帮助文字)。
  • 为什么改:控制台和 Studio 已统一叫“仪表盘”,同一对象在一个流程里不该有两个名字(Studio on zh-CN still mixes languages and terms: view properties panel, flow nodes, publish sheet labels, and 仪表板 beside 仪表盘 #30039 第 4 项)。
  • 风险与回滚:只改中文显示文字,不动键、结构和其他语言;回滚即还原这一个文件。
  • 先看:zh-CN.metadata-forms.generated.ts 的 6 行,和新测试 zh-cn-dashboard-word.test.ts。
  • 两分钟验证:pnpm --filter @objectstack/platform-objects exec vitest run src/metadata-translations/zh-cn-dashboard-word.test.ts,2 条通过。
  • 需要你做的:无。非受管面、非 BREAKING,技能不要求你审,席位落地。

席位意见:同意落地。按文件头规定的做法原地改基线叶子再重生成,重生成逐字节一致,测试读的是下发后的包。

席位核对

  1. 形态:draft→ready,目标 main,Fixes #30164;作者 objectstack-fleet[bot](中继);正文无闭合关键词挨着别的卡号。
  2. 前提实测:origin/main c5800818 上该文件 6 处 仪表板(席位 grep);PR diff 正好这 6 行。
  3. 门禁 check-runs(钉 head df4de5fb):49 条,36 success、13 skipped、0 失败;Lint & Repo Gates success、TypeScript Type Check success。
  4. 接受的偏差:无。
  5. 范围外去向:rest/runtime/spec 测试里的 仪表板 是自带 fixture,不读下发文字,Acceptance notes,不立卡。Skills-docs: none(grep 0)。changeset patch,Clause-②: no,Metadata-protocol: none。
  6. 落地条款:check-governed-merges --pr 30485:NOT governed,54 行。已 ready + auto-merge,13:43Z 入合并队列(排在 main-red 止血 PR fix(cloud-connection): stage the ledger adoption copy without mkdtempSync, so main's dispatch-gates lane is green again #30487 之后)。合并后席位写落地、摘标。

@github-merge-queue
github-merge-queue Bot removed this pull request from the merge queue due to failed status checks Nov 5, 2026
@objectstack-fleet

Copy link
Copy Markdown
Contributor Author

domain:server#6 · os-bill · session_01Utp6CXCS98uhsFQYk64epE

出队记录 · 2026-11-05T14:09Z · head df4de5fb

Dequeued by the merge queue (CI_FAILURE). Signature, read from the group's job log (run 42040560124, job 127290410036):

  • Live E2E UI › e2e/live/studio-customize-journey.spec.ts:121 › "a read-only base is customized, restored and extended through Studio, and its uninstall is refused" → apiRequestContext.get: read ECONNRESET on GET /api/v1/meta/view/showcase_task.in_progress (16 of 17 live specs passed).
  • Not this PR's: the diff is six zh-CN translation leaves and one test in packages/platform-objects; the failing spec reads an en view through /meta/view. The same signature failed the group of PR refactor(objectql): type the six #4918 erasure-pinned ObjectQL methods and move their bodies out of engine.ts with the codemod's fourth pass #30463 on the same base fa9c0aa2 (run 42037558126, job 127279783258), so it reproduces on the queue base without this diff.
  • Initial judgement: a new signature on main fa9c0aa2, not a known flake in the ledger. ⛔ Not requeued blind: Request: urgent-triage sent to triage#1's mailbox. The seat requeues once the base is green again or triage rules it a flake.

@objectstack-fleet

Copy link
Copy Markdown
Contributor Author

domain:server#6 · os-bill · session_01Utp6CXCS98uhsFQYk64epE

重投 · 2026-11-05T14:17Z · head df4de5fb:分诊 triage#1 判该签名非确定性(叠加组绿),已立 #30524(p1,domain:devx)承接 studio-customize-journey ECONNRESET(信箱 6660234942)。按已知 flaky 原样重投一次:重新挂 auto-merge。同签名再弹即停,交 #30524。

@github-actions

github-actions Bot commented Nov 5, 2026

Copy link
Copy Markdown
Contributor

⛔ merge queue 构建失败 — 先分诊,再决定要不要重排

队列构建 42040560124 红了。队列跑的是全量套件(PR 侧 CI 只跑 affected 子集),
所以失败的测试可能在本 PR 没碰过的包里 —— 那不是重排能修的。每次盲目重排都会让排在后面的所有 PR 重建一轮。

分类:failure —— 按下面的日志分诊。

失败的 job(日志抽取,best effort):

  • Live E2E UI — 失败步骤: Run the live e2e specs(日志不可读,点进 job 看)

↳ 失败原因 是判读的关键:超时(Test timed out in … / Hook timed out in …)多半是负载/时序,不是本 PR 的回归;
断言(AssertionError: …)才指向真实的行为改变。两者的 FAIL 行长得一模一样,只有这一行能区分。

⚠️ 断言这一侧有一类例外,判据是断言在测什么,不是它是不是 AssertionError。 断言的对象是产品行为(一个值、一个形状、一次拒收)⇒ 照上面读:真实的行为改变,去查,⛔ 不要重排掉;
断言的对象是这次实验自身的有效性前提(跑完的耗时、负载下的先后、任何只在时间预算内才成立的条件)⇒ 它跟超时是同一类,同样对负载敏感,重排一次是合法的判别手段。
识别是机械的:断言的消息或它比较的值本身点名了一段时长、一个时间戳、一个耗时计数。实测过的一对 —— AssertionError: SecurityPlugin.init() ran: expected false to be true 测的是产品行为(真回归);
AssertionError: this run took over a second, so second-precision stamps could have differed too: expected 1006 to be less than 1000 测的是实验前提:它守护的那条不变式当时是绿的,同一个 head 原样重排一次即成功。
穿着 AssertionError 外衣的时间测量,仍然是时间测量。(⛔ 这只改「怎么读一次红」,不改「哪些测试可以重排」——后者由别处管。)

跨 PR 相同签名(24h,按失败测试文件聚合):

  • ⚠️ 本次没有可用的聚合签名(日志里没有能解析出测试文件名的 FAIL 行)—— 这不是「没有同签名的其他 PR」,是这一轮没测到。跨 PR 聚合本次不可用,请手工比对其他 PR 的同类评论。
  • ⚠️ 24h 评论账本没读完(超过 5 页仍未读到窗口尽头),所以上面的「不同 PR 数」是下界,不是全量。

历史信号:

  • 本 PR 过去 24h 无队列失败记录(首次)。
  • 过去 24h 队列共有 15 个失败构建(不含本次)。

分诊清单:

  1. 失败测试在本 PR 改动的包里 → 真回归,修 PR。
  2. 失败测试与本 PR 无关 → 看上面的「跨 PR 相同签名」;已有汇总 issue ⇒ flaky/环境问题实锤,去那张 issue 上谈,修好前重排只会再烧一轮全队列。
  3. 两者都不是 → 可能与同组 PR 语义冲突;等前面的 PR 落地或失败出队后再重排一次即可,不要连续重排。

Generated by Claude Code · merge-queue-triage workflow (#4859)

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

Labels

documentation Improvements or additions to documentation size/s tests tooling Fix lands in tooling, not a product package — enters pm:queue only with Unblocks: or a named surface

Projects

None yet

Development

Successfully merging this pull request may close these issues.

zh-CN metadata forms served by the platform still say 仪表板 where the Console now says 仪表盘

1 participant