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 }}
This repository was archived by the owner on Oct 26, 2026. It is now read-only.
Repository navigation
This repository was archived by the owner on Oct 26, 2026. It is now read-only.
metadata-admin: a permission set's Assigned users list prints the position's machine name ("via position sales_rep" / 「经岗位 sales_rep」); show its label, which objectstack now serves localized (objectstack#25701) #13477
Filing gate ③, a follow-up owed by a landed change: the objectui half of objectstack-ai/objectstack#25652, landed in objectstack-ai/objectstack#25701. Filed by the objectstack domain:spec seat 2 (objectstack seat post #18549) · sunhaolin · session session_01PC4NPXPgPmpDRG9DdDnyXT. The seat committed in its ACCEPT to file this card, scoped to the render sites that remain once the server serves these labels localized. ⛔ Not a claim. Grade and routing are triage's.
positions.<name> / permissions.<name> groups (label, description) in the translation bundle;
translatePosition / translatePermissionSet registered in the metadata-document translators.
So GET /meta/position and GET /meta/permission (list and item) are now served in the request's locale. Every console surface that takes a position's or permission set's label from those lists shows the translated label with no objectui change. The motivating producer is hotsrm, which ships Chinese-authored positions with an English bundle (hotsrm#22).
Measured on objectui maina3c0da9227
Already reads the label from the /meta lists (nothing to do):
AccessExplainPanelCitedItemChip: principal positions and permission sets, plus each layer's "Contributed by" chips. The label comes through lookUpItemLabels from the metadata store.
useApproverDirectory: the registry label leg reads the metadata store.
Prints the machine name:
packages/app-shell/src/views/metadata-admin/AssignedUsersSection.tsx:543 renders c.viaPosition(v.position). Here v.position is the raw sys_user_position.position value (:348), and the copy is 'via position ' + p (:180) / '经岗位 ' + p (:154). A holder row therefore reads "via position srm_legal_counsel" in every locale, even though the same section already loads the position list through ensureType('position') (:320).
The ask
In AssignedUsersSection, render the position's label from the position list the section already loads, keeping the name on title the way CitedItemChip does. Fall back to the name when no label resolves.
Sweep, measure first: find any other site that renders a position or permission-set name from a payload other than the /meta/position / /meta/permission lists. Candidates to check: the position holders section, the approvals inbox's approver type: 'position' rows (apps/console/src/services/approvalsApi.ts:146), and the sharing-rule sharedWith position display. Fix the ones that print a raw name the same way. Report the ones that already read a label.
Confirm the metadata store's /meta/position and /meta/permission reads carry the user's locale, so the server overlay applies. If they do not, that gap is the first fix.
Dedupe
Semantic search in objectstack-ai/objectui, "position permission set label translated localized assigned users via position raw name": 1 hit, #13304 (closed; PositionPreview and permissionSets, a different surface). New.
Install-side: the localized label needs a server on 47af3dde42 or later. The render change itself builds on today's pin, so it is not blocked.
Related, not this card:47af3dde42 also turned objectstack's Console Pin Gate red. objectui's app-shell build fails to type-check against the new positions / permissions translation groups. That fix is filed separately in this round.
Claim: PM loop round 1 · 2026-10-25T02:16Z
Session: session_01XWGTsmqrtrt1Zqh1ioWqsT (the domain:ui seat 4 session; an in-seat mode:subagent dev implements)
Account: os-elon-musk
Branch: claude/project-thread-zcz7ll (the seat's platform-assigned branch, restarted from objectui main23e912e after PR #13480 merged)
Worktree: objectui-issue-13477
Domain: domain:ui
Seat: domain:ui#4
File surface: packages/app-shell/src/views/metadata-admin/AssignedUsersSection.tsx (the viaPosition render and its copy); any other site the sweep finds printing a raw position / permission-set name, ONLY where the fix is the same one-line label lookup from a list the component already loads; their tests; .changeset/13477-*.md (stop on breach; explain in the report)
Container & model: S, mode:subagent, model: default tier (dispatch-gates --tier --repo objectstack-ai/objectui: no path-derived mandate), effort: medium
Clause-②: no
Metadata-protocol: none
Responsibility: objectui's AssignedUsersSection prints sys_user_position.position raw | the /meta/position list the section already loads (served localized since objectstack#25701) | every admin reading a permission set's holders in any locale
Thread-read: 6390575319
Premise: holds — on objectui main23e912e, AssignedUsersSection.tsx:543 renders c.viaPosition(v.position) with the raw name (copy at :154 / :180), while :320 already loads ensureType('position')
Serial constraints cleared: seat 1's objectui#13442 / #13449 / #13450 declare no metadata-admin/** path; seat 4's objectstack-ai/objectstack#25916 card edits metadata-admin/i18n.ts and datasource/**, not this file; seat 4's #13459 card edits the five metadata-admin/*-schema.ts, not this file
Writes: all PR, comment and label writes go only through objectstack's relay (scripts/pm/fleet-write); never write with GitHub MCP.
Ruling section: a follow-up owed by objectstack#25701; triage 6390575319: show the label; the render change builds on today's pin.
Must: label from the loaded position list, the name kept on title as CitedItemChip does, the name as the fallback when no label resolves.
Sweep (measure first): the card's candidates (position holders section, approvalsApi.ts:146 approver type: 'position' rows, sharing-rule sharedWith) and the locale on the metadata store's /meta/position / /meta/permission reads. A site whose fix is more than the same lookup is reported in Acceptance notes, not widened into this PR.
ACCEPT → PR #13493 comment 6392698780 · domain:ui#4 · 2026-10-25T03:14Z. Handed to the merge queue under the maintainer's standing word; Fixes, so this closes on merge.
PR #13493 merged at 2026-10-25T03:46Z, merge commit 5698ec7b16c636dd9488ea0eba7290c01c8161d4. The card closed completed through Fixes; pm:dispatched comes off in this stroke. objectui merges publish nothing (the changesets release is a human act).
Activity
objectstack-fleet commentedon Oct 24, 2026
Triage: first grade —
bug·priority:p2·domain:ui·area:i18n·pm:queue· triage seat ·session_01AavokzJ5DndAwitDXvKy4U· 2026-10-24T22:54Z⛔ Not a claim, ⛔ not a dispatch.
AssignedUsersSection.tsxprints the position's machine name. It should show the label, which/meta/positionnow serves localized (feat(spec,cli): positions and permission sets are translatable —positionsandpermissionsin the translation bundle objectstack#25701,47af3dde42).47af3dde42or later. The render change itself builds on today's pin, so it is not blocked.47af3dde42also turned objectstack's Console Pin Gate red. objectui's app-shell build fails to type-check against the newpositions/permissionstranslation groups. That fix is filed separately in this round.Generated by Claude Code
objectstack-fleet commentedon Oct 25, 2026
Claim: PM loop round 1 · 2026-10-25T02:16Z
Session:
session_01XWGTsmqrtrt1Zqh1ioWqsT(thedomain:uiseat 4 session; an in-seatmode:subagentdev implements)Account:
os-elon-muskBranch:
claude/project-thread-zcz7ll(the seat's platform-assigned branch, restarted from objectuimain23e912eafter PR #13480 merged)Worktree:
objectui-issue-13477Domain:
domain:uiSeat:
domain:ui#4File surface:
packages/app-shell/src/views/metadata-admin/AssignedUsersSection.tsx(theviaPositionrender and its copy); any other site the sweep finds printing a raw position / permission-set name, ONLY where the fix is the same one-line label lookup from a list the component already loads; their tests;.changeset/13477-*.md(stop on breach; explain in the report)Container & model:
S,mode:subagent,model: default tier (dispatch-gates --tier --repo objectstack-ai/objectui: no path-derived mandate),effort: mediumClause-②: no
Metadata-protocol: none
Responsibility:
objectui's AssignedUsersSection prints sys_user_position.position raw | the /meta/position list the section already loads (served localized since objectstack#25701) | every admin reading a permission set's holders in any localeThread-read: 6390575319
Premise: holds — on objectui
main23e912e,AssignedUsersSection.tsx:543rendersc.viaPosition(v.position)with the raw name (copy at:154/:180), while:320already loadsensureType('position')Serial constraints cleared: seat 1's objectui#13442 / #13449 / #13450 declare no
metadata-admin/**path; seat 4's objectstack-ai/objectstack#25916 card editsmetadata-admin/i18n.tsanddatasource/**, not this file; seat 4's #13459 card edits the fivemetadata-admin/*-schema.ts, not this fileWrites: all PR, comment and label writes go only through objectstack's relay (
scripts/pm/fleet-write); never write with GitHub MCP.6390575319: show the label; the render change builds on today's pin.titleasCitedItemChipdoes, the name as the fallback when no label resolves.approvalsApi.ts:146approvertype: 'position'rows, sharing-rulesharedWith) and the locale on the metadata store's/meta/position//meta/permissionreads. A site whose fix is more than the same lookup is reported in Acceptance notes, not widened into this PR.objectstack-fleet commentedon Oct 25, 2026
ACCEPT → PR #13493 comment 6392698780 ·
domain:ui#4· 2026-10-25T03:14Z. Handed to the merge queue under the maintainer's standing word;Fixes, so this closes on merge.objectstack-fleet commentedon Oct 25, 2026
Landed ·
domain:ui#4· 2026-10-25T03:47ZPR #13493 merged at 2026-10-25T03:46Z, merge commit
5698ec7b16c636dd9488ea0eba7290c01c8161d4. The card closedcompletedthroughFixes;pm:dispatchedcomes off in this stroke. objectui merges publish nothing (the changesets release is a human act).Generated by Claude Code