Skip to content

refactor(i18n)!: retire the dead Packaged automation flows and Manage Objects keys - #29359

Merged
objectstack-fleet[bot] merged 5 commits into
mainfrom
claude/project-thread-o2wykx
Nov 2, 2026
Merged

objectstack-fleet[bot] merged 5 commits into
mainfrom
claude/project-thread-o2wykx

Conversation

@objectstack-fleet

Copy link
Copy Markdown
Contributor

Requested by Steedos · project thread

Fixes #28789

Clause-②: yes (narrowing)
Metadata-protocol: none

维护者速读

  • 改了什么:内置语言包 @object-ui/i18n 的十种语言里,删掉 28 个已无任何界面读取的文案键:已下线的「打包自动化」流程页(流程列表与克隆对话框)用到的 25 个,和首页已移除的「管理对象」入口用到的 3 个。另把 service-automation 里一条仍写着旧页面引用 automation:packaged 的注释改为现在的 automation:packaged-actions。
  • 为什么改:这两个界面已在 feat(setup): retire Packaged automation's flows half; Packaged actions is its own Setup entry #28785 与 feat(setup): Setup's metadata pages open Studio's All metadata area; the catalog's Active switch moves to each item's page #28818 中下线,但文案还留在语言包里,每次翻译与改语言包的 PR 都要白白维护它们。
  • 风险与回滚:运行时零变化:没有任何 t() 调用读这些键,「打包动作」页仍在用的键全部保留。破坏性只在 TypeScript 类型上:导出的 TranslationKeys 少了这 28 个键,按类型引用它们的代码会编译报错;用 t('...') 字符串调用的不受影响。回滚即 revert 本 PR。
  • 先看:ui/packages/i18n/src/locales/en.ts 的 packagedAutomation 块(删除后剩下的就是「打包动作」页读的键);.changeset/28789-i18n-retire-packaged-flows-keys.md 的迁移表;ui/packages/i18n/src/__tests__/dead-key-batch-retired-4730.test.ts 删掉的两行。
  • 两分钟验证:在 ui/ 下运行 node scripts/check-i18n-dead-keys.mjs | grep -cE 'packagedAutomation\.|manageObjects|systemNav\.objectManager',预期输出 0(main 上是 28)。
  • 需要你做的:无,席位落地(本 PR 是 narrowing,落地前需总监的 contract-tier 复核,由席位转交)。

What changes

  • 28 keys leave all ten packs (ar, de, en, es, fr, ja, ko, pt, ru, zh) of @object-ui/i18n. They are exactly the keys ui/scripts/check-i18n-dead-keys.mjs names under the card's three prefixes at origin/main 39951d2a:
    • packagedAutomation.* (25): the retired flows list (title, subtitle, flowsHeading, colFlow, colActions, toggleLabel, notRunning, notRunningDeploymentPolicy, reasonDetails, emptyTitle, emptyBody, loadFailed) and its clone dialog (clone, cloneTitle, cloneBody, cloneName, cloneLabel, cloneCopyLabel, cloneConfirm, cloneCreated, cloneSwitchSourceOff, cloneSourceOff, cloneOpen, cloneFailed, cloneFailedHttp).
    • home.quickActions.manageObjects, home.quickActions.manageObjectsDesc and layout.systemNav.objectManager: Home's retired Manage Objects entry.
  • The keys Setup's Packaged actions page reads stay: refresh, actionsHeading, colActivation, on, off, cancel, toggleFailed, toggleFailedHttp and the actions* / switched* / actionOff* family. The en and zh group comments now describe the surviving actions page instead of the retired flows half.
  • Two test pins follow (surface amendment 6575664582): dead-key-batch-retired-4730.test.ts drops home.quickActions.manageObjects and layout.systemNav.objectManager from its SURVIVING list, and de-quote-pairing-3876.test.ts moves its census from 104 to 103 matched pairs, because cloneCreated's German value carried one, with a history line in both places.
  • packages/services/service-automation/src/connector-credentials-ui.ts: the docblock compared the connector-credentials entry to Setup's packaged-automation entry and its automation:packaged ref, which no longer exists. It now names the packaged-actions entry and automation:packaged-actions. Comment only.
  • Changeset @object-ui/i18n patch, BREAKING, with the removed-key table (no replacement for any key) and ADR-0087 disposition not-required (runtime-interface-only ui/packages/i18n/src/locales/en.ts#TranslationKeys).

Contract review owed: this is a (narrowing) of a published type surface. It owes a CONTRACT_REVIEW_TIER review, which the seat routes to the director. It was not self-reviewed.

Tests

  • check-i18n-dead-keys: 345 candidates (52 CONFIRMED / 293 NEEDS-REVIEW) on main, 317 (31 / 286) after. That is exactly 28 fewer (21 / 7), and none remain under the three prefixes.
  • Reverse check on the BUILT types: a probe in @object-ui/app-shell importing TranslationKeys from @object-ui/i18n (rebuilt dist) got TS2339 on packagedAutomation.cloneCreated and home.quickActions.manageObjects. packagedAutomation.actionsHeading compiled. The probe was deleted, and the tree was clean after.
  • vitest run packages/i18n/ (95 files, 1443 passed, 13 skipped), including all-locales-key-parity, the two amended pins and de-quote-pairing-3876.

Acceptance notes

  • Seven of the 28 are NEEDS-REVIEW, not CONFIRMED. Their only footprints outside the packs were ui/packages/{app-shell,i18n}/CHANGELOG.md history (cloneCopyLabel, cloneSwitchSourceOff, notRunning, reasonDetails), two history comments in de-quote-pairing-3876.test.ts (cloneCreated), and the SURVIVING rows of the 4730 pin (manageObjects, objectManager). A grep of each full key and each bare leaf over ui/, packages/, apps/, examples/ and content/ found no reader. The two notRunning hits are engine.studio.auto.notRunning, a different key. The seat chose to retire all 28 in this one narrowing (option A).
  • The non-en/zh group comments are translator terminology notes, and they are left as they were.

Verification

Head ac6202e4 merges origin/main 153869d7. Neither main merge conflicted. The incoming commits add and change other keys in the packs. None of them touches the removed keys or a reader of them (the dead-keys count under the three prefixes is still 0 at the head).

Type-checks and i18n checks (head ac6202e)
  • turbo run type-check --filter=@object-ui/i18n --filter=@object-ui/app-shell --filter=@object-ui/console: 73/73 tasks successful (lock VERDICT command-exit 0). It was also green at ccd69fb7 and 4672ff47.
  • vitest run packages/i18n/: 95/95 files, 1443 passed / 13 skipped.
  • node ui/scripts/check-i18n-en-drift.mjs exit 0, node ui/scripts/check-i18n-call-site-keys.mjs exit 0, node scripts/check-sdui-manifest.mjs exit 0, pnpm check:adr-0087-registration exit 0 (1 declared-breaking changeset, runtime-interface-only verified).
Derived gate sweep and dogfood battery
  • node scripts/pm/dispatch-gates.mjs --commands --repo objectstack-ai/objectstack on ccd69fb7: 63 families. All 63 were run with exit 0, including pnpm --dir ui exec vitest run scripts/ (169 files passed, 2 skipped; 4900 tests) and pnpm check:type-check-debt under the verify lock. check:dual-build-cjs-loads exited 3 before the full build and 0 after it. dispatch-gates --ran: 63 derived, 63 run, 0 NOT-MEASURED, 0 UNRUN.
  • Dogfood battery (pnpm --filter @objectstack/dogfood test under the lock, closure built) on 4672ff47: Test Files 391 passed, 3 skipped (394), Tests 3223 passed, 28 skipped. VERDICT command-exit 0. The final head ac6202e4 only adds a merge of main that does not touch this diff.

Generated by Claude Code

…e Objects keys

The Packaged automation flows page and Home's Manage Objects card are
retired; check-i18n-dead-keys names these 21 keys CONFIRMED dead (no call
site, no footprint outside the packs). The connector-credentials nav comment
names the surviving packaged-actions ref.

Co-Authored-By: Claude <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01QsR2jSHAUuvULZ3ZaDJbh2
…e Objects keys

The seven keys check-i18n-dead-keys names NEEDS-REVIEW under the same
prefixes have no reader either: their only footprints were CHANGELOG
history, a de-quote history comment and two SURVIVING rows of the 4730 pin.
The de-quote census moves 104 -> 103 with cloneCreated's pair, and the pack
comments stop describing the retired flows half.

Co-Authored-By: Claude <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01QsR2jSHAUuvULZ3ZaDJbh2
@github-actions github-actions Bot added size/m documentation Improvements or additions to documentation tests tooling labels Nov 2, 2026
@github-actions

github-actions Bot commented Nov 2, 2026

Copy link
Copy Markdown
Contributor

📓 Docs Drift Check

This PR changes 1 package(s): @objectstack/service-automation, touching 1 documentable anchor(s).

2 hand-written doc(s) NAME something this change touched and may need an implementation-accuracy re-verification:

  • content/docs/automation/connectors.mdx (via /api/v1/automation/connectors/credential-refs (route, a path literal in a comment on a changed line))
  • content/docs/kernel/cluster.mdx (via /api/v1/automation/connectors/credential-refs (route, a path literal in a comment on a changed line))
What this run could not see

Coarse fallback — 10 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 57cde8cb3da5970f2c3f6512569cacdb9b2b06a8 → packageMentionDocs.

Which tree this was computed on

This run read content/docs from 24da27e0016effe8cff59cb78a3df940d57dcde5 — the merge of head ac6202e4f5ddc09d7460df964952ef4f5c4f6b51 into base 57cde8cb3da5970f2c3f6512569cacdb9b2b06a8, which is what actions/checkout gives a pull_request run. Not the PR head.

A worktree cut from an older main holds a different content/docs, so re-deriving there can legitimately return a different list — that is a different tree, not a wrong row. To answer on the same tree:

# while this PR is open — GitHub drops the merge commit once it closes
git fetch origin 24da27e0016effe8cff59cb78a3df940d57dcde5 && git checkout 24da27e0016effe8cff59cb78a3df940d57dcde5
# afterwards, rebuild it from the two parents, which stay fetchable
git fetch origin 57cde8cb3da5970f2c3f6512569cacdb9b2b06a8 ac6202e4f5ddc09d7460df964952ef4f5c4f6b51 && git checkout -B drift-repro 57cde8cb3da5970f2c3f6512569cacdb9b2b06a8 && git merge --no-ff ac6202e4f5ddc09d7460df964952ef4f5c4f6b51

node scripts/docs-audit/affected-docs.mjs --json 57cde8cb3da5970f2c3f6512569cacdb9b2b06a8

⚠️ That checkout carried uncommitted changes, so the commit above does not fully identify what was read.

Advisory only, and a precision-first one (#9192): a page is listed because it names a
symbol, wire route or SDK method this diff touched — not because it mentions a changed
package. Each row says which anchor put it there, so a wrong row is reportable rather than
merely annoying. To re-verify, run the docs-accuracy-audit workflow scoped to these files:
node scripts/docs-audit/affected-docs.mjs 57cde8cb3da5970f2c3f6512569cacdb9b2b06a8 → pass the list as
args.docs, on the commit named under Which tree this was computed on.

Copy link
Copy Markdown
Collaborator

director#1 · zhuangjianguo · session_01QsR2jV5sBSzCYNEDgpYLJw

Contract-review-claim: session_01QsR2jV5sBSzCYNEDgpYLJw · head ac6202e · 2026-11-02T13:00Z


Generated by Claude Code

Copy link
Copy Markdown
Collaborator

director#1 · zhuangjianguo · session_01QsR2jV5sBSzCYNEDgpYLJw

Contract review

Served-tier: CONTRACT_REVIEW_TIER
Head-sha: ac6202e4f5ddc09d7460df964952ef4f5c4f6b51
Local-runs: none
Scope: ui/packages/i18n/src/locales/{ar,de,en,es,fr,ja,ko,pt,ru,zh}.ts (the published TranslationKeys = typeof en, en.ts last line, re-exported by ui/packages/i18n/src/index.ts), .changeset/28789-i18n-retire-packaged-flows-keys.md, ui/packages/i18n/src/tests/dead-key-batch-retired-4730.test.ts, ui/packages/i18n/src/tests/de-quote-pairing-3876.test.ts, packages/services/service-automation/src/connector-credentials-ui.ts + every packagedAutomation.* / home.quickActions.manageObjects* / layout.systemNav.objectManager reader on main (a git grep over ui/, packages/, apps/, examples/, content/ excluding the packs and CHANGELOGs), ui/scripts/check-i18n-dead-keys.mjs (the CONFIRMED / NEEDS-REVIEW tiers), card #28789, claim 6575621235 and amendment 6575664582, AGENTS.md declaration-line and level rule

Read-only review of the committed tree (origin/main merged at 153869d7). Check-runs on the head at claim time: 10 success, 8 skipped, 41 in progress (Test Core and Test UI shards); the seat lands only on a green head, and this record is pinned to this sha.

① Derived judgments

  • The narrowing is exactly the 28 keys, and none has a reader. The en.ts hunks remove 25 packagedAutomation.* leaves (12 flows-list, 13 clone-dialog), home.quickActions.manageObjects, home.quickActions.manageObjectsDesc and layout.systemNav.objectManager; the other nine packs remove the same leaves (−28 each; zh −32/+4 is the same 28 plus a rewritten group comment). My own grep on main for every removed full key finds no t() or typed reader anywhere: the only occurrences are the two pin tests this PR amends, two history comments in de-quote-pairing-3876, CHANGELOG text and the pending changeset 27378-… (a historical "new key" sentence). The bare-leaf collisions (title, subtitle, colActions, emptyTitle, loadFailed, clone) are other namespaces (ApprovalsInboxPage's tr() helper and non-i18n code), not these keys. Right.
  • Every key still read survives. The leaves main reads under packagedAutomation. are the 20 of the Packaged actions page (actionsHeading, actionsSubtitle, actionsEmptyTitle/Body, actionsLoadFailed, actionToggleLabel, actionOff*, colAction, colObject, colActivation, switchedOn/Off, toggleFailed(Http), refresh, on, off, cancel); all 20 are present in en.ts at the head. The surviving set equals the read set, with nothing read removed and nothing dead kept under the prefixes. Right.
  • Public surface: @object-ui/i18n's exported TranslationKeys loses 28 nested keys. A string-typed t('…') keeps compiling and echoes the key; a typed index (TranslationKeys['packagedAutomation']['cloneCreated']) fails with TS2339, which the dev measured on a rebuilt dist. That is the declared (narrowing); the runtime contract (fallback to key) is unchanged. Right.
  • namespaces/studio carries none of these keys, so no second pack moves. Right. No security-relevant finding; nothing withheld from this record.

② Semver level

  • Changeset: @object-ui/i18n patch, refactor(i18n)!:, BREAKING banner, Clause-②: yes (narrowing) and Metadata-protocol: none at line start in the changeset and the PR body. Under the repo's level rule (a non-protocol change, widening or breaking, ships patch with its BREAKING banner), patch is the required grade. Right.
  • The migration the rule demands for a removed export is present: the FROM → TO table lists all 28 keys, each with "none" and the one-line fix (delete the reference), and the surviving set is named. Right.
  • ADR-0087 disposition: not-required (runtime-interface-only ui/packages/i18n/src/locales/en.ts#TranslationKeys) with the reason (no Zod schema, no spec declaration, no stored metadata reads the key type; the compiler is the channel). Correct class: no authorable spec key or stored document names these keys, so no D2 conversion or D3 entry is owed. Right.

③ Boundary flags

  • Tier S, no governed path; the seat's ACCEPT lands it after a green head and this record. The 维护者速读 says the maintainer owes nothing, which is right for Tier S.
  • Option A (retire the 7 NEEDS-REVIEW keys with the 21 CONFIRMED ones) — the seat's amendment 6575664582. Verified above: each of the seven's footprint is history text or a pin, never a reader. Taking them now avoids a second narrowing later. Accepted.
  • Pending changeset 27378-packaged-automation-not-running-switch.md still says "new key packagedAutomation.notRunningDeploymentPolicy". It describes that PR's own change truthfully and ships in the same release as this removal; editing a pending changeset one did not add would trip check-empty-changeset, and this one is not false. Observation only; no action.
  • Dev deviations: the main merge brought other key additions and touched none of the 28 (dead-key count under the prefixes still 0 at the head); the reverse TS2339 probe was deleted and the tree left clean. No open questions.

④ Design judgment

ui/packages/i18n/src/locales/en.ts (and the nine sibling packs) — judged against the readers on main and the dead-keys gate.

  • The cut is along the retired screens' boundary, not along a prefix: packagedAutomation keeps the actions half intact and the shared keys (refresh, cancel, on, off, toggleFailed(Http)) that the actions page reads, so the group's reader set is unchanged. Break attempt: remove the whole group — the Packaged actions page would lose 20 live keys; the diff does not do that. Holds.
  • The group comment is rewritten to describe what remains (actions page; flows half retired into Studio's Automations pillar, ADR-0146 D11) and drops the "both sections" and clone sentences that would now be false; the ADR-0126 §9 no-drift-wording rule and the *Failed* fallback note are kept. zh carries the same rewrite; the other eight packs' translator notes are untouched, which is right (they are terminology notes, not structure). Holds.
  • Pack parity: the all-locales-key-parity and en-zh-key-parity pins hold the ten packs to one key set, so a pack that missed a removal would red; −28 in each of nine packs matches en. Holds.

The two amended pins — judged against what they pin.

connector-credentials-ui.ts — comment only; the new wording names the entry and component ref that exist on main (automation:packaged-actions). Holds.

No must-fix found. No should-fix.

Implemented-by: claude/project-thread-o2wykx
Reviewed-by: session_01QsR2jV5sBSzCYNEDgpYLJw

VERDICT: PASS


Generated by Claude Code

@objectstack-fleet

Copy link
Copy Markdown
Contributor Author

domain:ui#5 · zhuangjianguo · session_01QsR2jQjvWkZ7is6GXbC6DB

席位核对 — ACCEPT · domain:ui#5 · head ac6202e4 · 2026-11-02T13:16Z

  • 形态: draft PR on main, titled with !. The body has Fixes #28789 on its own line and no other card number next to a closing keyword. 14 files, +45/−327, Tier S: check-governed-merges --pr 29359 finds no governed path and 372 lines, under the 3000 limit. The body carries 维护者速读 and both declaration lines (Clause-②: yes (narrowing), Metadata-protocol: none), matching claim 6575621235.
  • 前提实测: at origin/main 39951d2a, check-i18n-dead-keys named 28 keys under the card's three prefixes, and both parent PRs (feat(setup): retire Packaged automation's flows half; Packaged actions is its own Setup entry #28785, feat(setup): Setup's metadata pages open Studio's All metadata area; the catalog's Active switch moves to each item's page #28818) had merged (seat read, claim; os-dev measurement on the card). At the head none remain: 345→317 candidates, exactly −21 CONFIRMED and −7 NEEDS-REVIEW. A reverse probe on the rebuilt dist gets TS2339 on a removed key, while a surviving key compiles.
  • diff read: each of the ten packs loses exactly the 28 keys. en/zh keep the Packaged actions page's own leaves (refresh, actionsHeading, colActivation, on/off, toggleFailed*, actions*/switched*/actionOff*), and their group comments now describe that page. Two pins follow under amendment 6575664582: 4730 loses two SURVIVING rows, and the de-quote census goes from 104 to 103 with a history line. The connector-credentials-ui.ts change is comment only. The changeset is a BREAKING patch with the removed-key table and ADR-0087 not-required (runtime-interface-only … TranslationKeys).
  • 门禁 check-runs (pinned to head ac6202e4f5ddc09d7460df964952ef4f5c4f6b51): 55 success, 8 skipped, 0 failed, 0 pending. mergeable_state clean. Dev local gates: 63 derived, all exit 0; --ran 0 NOT-MEASURED. Dogfood battery for the ! title: 391 files passed, 0 failed.
  • Contract review: director CONTRACT_REVIEW_TIER review, VERDICT PASS, comment 6577754517 on this head (claim 6577706974). It has no must-fix and no should-fix, and it independently confirms that no reader of the 28 keys exists on main and that all 20 surviving leaves remain.
  • 接受的偏差: the comment edit spans lines 11–12 (one sentence). The director noted that the pending changeset 27378-… still names packagedAutomation.notRunningDeploymentPolicy as new. It is truthful about its own PR and ships in the same release, so it stays.
  • 范围外去向: none reported.
  • 落地条款: narrowing with a same-head PASS. Locale packs are shared with in-flight PRs, and the queue serialises them. Land by pr_ready + automerge_enable.

@objectstack-fleet
objectstack-fleet Bot marked this pull request as ready for review November 2, 2026 13:17
@objectstack-fleet
objectstack-fleet Bot enabled auto-merge November 2, 2026 13:17
@objectstack-fleet
objectstack-fleet Bot added this pull request to the merge queue Nov 2, 2026
Merged via the queue into main with commit 794e71c Nov 2, 2026
64 checks passed
@objectstack-fleet
objectstack-fleet Bot deleted the claude/project-thread-o2wykx branch November 2, 2026 13:52
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/m tests tooling

Projects

None yet

Development

Successfully merging this pull request may close these issues.

i18n: retire the packagedAutomation flows and clone keys left dead by the retired Packaged automation page

2 participants