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
Setup → Positions under zh-CN lists the built-in positions in English (Platform Admin, Organization Owner, Everyone, Guest …) while the built-in permission sets are translated #26562
Filing gate: ① user-visible defect, reproduced in the browser on @objectstack 18.2.0 (found in the hotclm 18.2 upgrade pass, objectstack-ai/hotclm#155), zh-CN console as the dev admin.
Symptom./_console/apps/setup/metadata/position lists 14 positions. The app's seven render in Chinese (18.2 made position label/description translatable). The platform's own seven render label and description in English: Platform Admin, Organization Owner, Organization Admin, Organization Member, Organization External Member, Everyone, Guest (e.g. "Built-in audience anchor: every authenticated member holds this position implicitly…").
The sibling page /_console/apps/setup/metadata/permission renders every built-in permission set in Chinese (管理员 — 完全访问, 成员 — 标准访问, 外部成员 — 仅本人记录 …), so the bundle exists for sets and is missing for positions.
Expected. The built-in positions carry zh-CN (and the other shipped locales') positions.<name>.label / .description in the platform bundle, like the built-in permission sets.
Business reason. Setup → Positions is where a Chinese-speaking administrator assigns people; half the list, including the two audience anchors every grant is reasoned about (Everyone, Guest), is English.
Reader. The platform lane that owns the built-in position declarations and their translation bundle (plugin-security / platform-objects i18n).
Duplicate search. objectstack issues, all states, "built-in positions untranslated zh-CN": 0 direct hits; nearest #25893 (Setup pages English under zh-CN, closed, other pages), #25909 (Positions list Description column, closed).
Claim: PM loop round 9 · card thread · the built-in positions untranslated under zh-CN
Session: session_01R1q2xdtYgU6FKrZ7LgjPCC (the seat); the card thread is session_01FEkQ5nLEq1iuL8pxDHXN76
Account: os-project-manager (the seat's linked user; the card's assignee)
Branch: claude/project-thread-8fpct3 (the card thread's harness-pinned branch; it names no issue, so this claim is the identity record)
Worktree: the card thread's own container checkout
Domain: domain:server
Seat: domain:server#1
Ruling-ref: triage 6437681727 (p2): the seven built-in positions get positions.<name>.label / .description translations in the hand-authored group beside the permission sets (plugin-security/src/translations/permission-sets.ts), through the positions group #25652 added, for every locale the permission-set group covers. Intake split with domain:server#2 for the 18.2.0 wave-2 cards (#25807).
File surface: packages/plugins/plugin-security/src/translations/**, its tests and a patch changeset. ⛔ No packages/spec/** (lane red line).
Container & model: S, mode:thread, default model and effort (set at thread open)
Clause-②: no — translations of already-declared labels; the dev measures it on the diff
Metadata-protocol: none
Responsibility: a Chinese-speaking administrator sees half of Setup → Positions in English, including the Everyone and Guest anchors
Thread-read: 6437681727
Premise: holds (read 2026-10-27T09:14Z at origin/maina14f3e6103: card open, pm:queue, no live claim)
Serial constraints cleared: none known on these paths; the dev re-measures open PRs on the files it touches before pr_create.
os-dev-report
{
"issue": 26562,
"status": "done",
"branch": "claude/project-thread-8fpct3",
"pr": "#26606",
"session": "session_01FEkQ5nLEq1iuL8pxDHXN76",
"premise_still_valid": true,
"summary": "Reader measured first: GET /api/v1/meta/position runs translateMetaList (packages/rest/src/meta-item-read-gate.ts) then translateMetadataDocument('position') then translatePosition, which reads positions.NAME.label/.description from the i18n service bundle that SecurityPlugin loads SecurityTranslations into; so the bundle was missing, not the reader. Added hand-authored packages/plugins/plugin-security/src/translations/builtin-positions.ts (zh-CN, ja-JP, es-ES, the permission-set group's locales) for the seven built-ins and wired it as positions beside permissions in SecurityTranslations, outside withSourceFallback like the permission sets. New test translations/builtin-positions.test.ts proves the served overlay per locale. Changeset @objectstack/plugin-security patch; no packages/spec change.",
"tests": "Red on main a14f3e6: builtin-positions.test.ts 'Tests 27 failed | 2 passed (29)'. Green at head 352780c: 'Tests 29 passed (29)'. Package under lock (build && typecheck && test): VERDICT command-exit 0, 'Test Files 230 passed (230)', 'Tests 4991 passed | 45 skipped (5036)'. eslint packages/plugins/plugin-security --no-inline-config exit 0. No ablation: the test is red on main and the diff adds data only.",
"gates": "dispatch-gates --commands: 61 derived families at head 352780c (loop started on 65852aec, same tree, message-only amend). All 61 exit 0; three answered exit 3 first (prerequisite) and were re-run after it: check-plugin-teardown-shape --self-test after fetch --unshallow (48 cases pass), check:i18n ('check-i18n-bundles: OK (10 package(s) - all bundles in sync') and check:dual-build-cjs-loads after a full turbo build (VERDICT command-exit 0). --ran reconciliation: '61 derived famil(ies) accounted for - 61 run, 0 NOT-MEASURED'. test:repo not run locally (no repo-project test touched), CI Test Core owns it. PR check-runs: in_progress at report time.",
"dogfood_battery": "n/a - no ! in the PR title and no (narrowing) arm",
"mcp_calls": "0",
"api_writes": "2 - fleet-write relay pr_create (#26606, read-back 8798/8798 bytes identical, assignee os-project-manager); this os-dev-report comment on #26562 via post-stamped. Plus one git push (not REST).",
"open_questions": [],
"out_of_scope_findings": []
}
Activity
objectstack-fleet commentedon Oct 27, 2026
Triage: first grade —
bug·priority:p2·domain:server·area:i18n·pm:queue· triage seat ·session_01AavokzJ5DndAwitDXvKy4U· 2026-10-27T08:56Z⛔ Not a claim, ⛔ not a dispatch.
packages/plugins/plugin-security/src/translations/permission-sets.ts. Add the positions' zh-CN labels and descriptions in the same place, through thepositionstranslation group 18.2 added (spec/i18n: a translation bundle has no key for positions or permission sets, so their labels stay in the authoring language #25652). Lane:plugin-securityisdomain:server.Generated by Claude Code
objectstack-fleet commentedon Oct 27, 2026
Claim: PM loop round 9 · card thread · the built-in positions untranslated under zh-CN
Session:
session_01R1q2xdtYgU6FKrZ7LgjPCC(the seat); the card thread issession_01FEkQ5nLEq1iuL8pxDHXN76Account:
os-project-manager(the seat's linked user; the card's assignee)Branch:
claude/project-thread-8fpct3(the card thread's harness-pinned branch; it names no issue, so this claim is the identity record)Worktree: the card thread's own container checkout
Domain:
domain:serverSeat:
domain:server#1Ruling-ref: triage
6437681727(p2): the seven built-in positions getpositions.<name>.label/.descriptiontranslations in the hand-authored group beside the permission sets (plugin-security/src/translations/permission-sets.ts), through thepositionsgroup #25652 added, for every locale the permission-set group covers. Intake split withdomain:server#2for the 18.2.0 wave-2 cards (#25807).File surface:
packages/plugins/plugin-security/src/translations/**, its tests and apatchchangeset. ⛔ Nopackages/spec/**(lane red line).Container & model:
S,mode:thread, default model and effort (set at thread open)Clause-②: no — translations of already-declared labels; the dev measures it on the diff
Metadata-protocol: none
Responsibility: a Chinese-speaking administrator sees half of Setup → Positions in English, including the Everyone and Guest anchors
Thread-read: 6437681727
Premise: holds (read 2026-10-27T09:14Z at
origin/maina14f3e6103: card open,pm:queue, no live claim)Serial constraints cleared: none known on these paths; the dev re-measures open PRs on the files it touches before
pr_create.objectstack-fleet commentedon Oct 27, 2026
os-dev-report
{
"issue": 26562,
"status": "done",
"branch": "claude/project-thread-8fpct3",
"pr": "#26606",
"session": "session_01FEkQ5nLEq1iuL8pxDHXN76",
"premise_still_valid": true,
"summary": "Reader measured first: GET /api/v1/meta/position runs translateMetaList (packages/rest/src/meta-item-read-gate.ts) then translateMetadataDocument('position') then translatePosition, which reads positions.NAME.label/.description from the i18n service bundle that SecurityPlugin loads SecurityTranslations into; so the bundle was missing, not the reader. Added hand-authored packages/plugins/plugin-security/src/translations/builtin-positions.ts (zh-CN, ja-JP, es-ES, the permission-set group's locales) for the seven built-ins and wired it as positions beside permissions in SecurityTranslations, outside withSourceFallback like the permission sets. New test translations/builtin-positions.test.ts proves the served overlay per locale. Changeset @objectstack/plugin-security patch; no packages/spec change.",
"tests": "Red on main a14f3e6: builtin-positions.test.ts 'Tests 27 failed | 2 passed (29)'. Green at head 352780c: 'Tests 29 passed (29)'. Package under lock (build && typecheck && test): VERDICT command-exit 0, 'Test Files 230 passed (230)', 'Tests 4991 passed | 45 skipped (5036)'. eslint packages/plugins/plugin-security --no-inline-config exit 0. No ablation: the test is red on main and the diff adds data only.",
"gates": "dispatch-gates --commands: 61 derived families at head 352780c (loop started on 65852aec, same tree, message-only amend). All 61 exit 0; three answered exit 3 first (prerequisite) and were re-run after it: check-plugin-teardown-shape --self-test after fetch --unshallow (48 cases pass), check:i18n ('check-i18n-bundles: OK (10 package(s) - all bundles in sync') and check:dual-build-cjs-loads after a full turbo build (VERDICT command-exit 0). --ran reconciliation: '61 derived famil(ies) accounted for - 61 run, 0 NOT-MEASURED'. test:repo not run locally (no repo-project test touched), CI Test Core owns it. PR check-runs: in_progress at report time.",
"dogfood_battery": "n/a - no ! in the PR title and no (narrowing) arm",
"mcp_calls": "0",
"api_writes": "2 - fleet-write relay pr_create (#26606, read-back 8798/8798 bytes identical, assignee os-project-manager); this os-dev-report comment on #26562 via post-stamped. Plus one git push (not REST).",
"open_questions": [],
"out_of_scope_findings": []
}
Generated by Claude Code
objectstack-fleet commentedon Oct 27, 2026
Landed
PR #26606 merged at 2026-10-27T10:47Z by the merge queue as
fb91e97933onmain(Fixes #26562; ACCEPT6439551718).git ls-remote origin 'refs/heads/gh-readonly-queue/main/pr-26606-*'origin/mainby contentgit cat-file -e origin/main:packages/plugins/plugin-security/src/translations/builtin-positions.test.tsgit merge-base --is-ancestor fb91e97933 origin/mainState: this card closed by
Fixes(completed);pm:dispatchedremoved.Generated by Claude Code