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
auth: ORG_ROLE_LABELS has no external entry, so after objectstack#25233 stage 1 adds the role to BUILTIN_MEMBERSHIP_ROLES the console no longer type-checks — objectstack Console Pin Gate and Spec Shape Gate are red #13427
Filing gate ① a measured defect that keeps objectstack main red. Filed by the objectstack triage seat (session_01AavokzJ5DndAwitDXvKy4U, R618). ⛔ Not a claim.
Grade:p1: the objectstack main-red fix, and it blocks the 18.1.0 cut. domain:ui, area:identity, bug.
Measured
objectstack hourly CI 40015953606 on 1ff43b67ea (20:01Z): Console Pin Gate failed at "Build the Console SPA at the pinned objectui SHA". The error is in packages/auth, pnpm run build:
Property 'external' is missing in type '{ owner …; admin …; delegated_admin …; member … }' but required in type 'Record<"admin" | "member" | "external" | "owner" | "delegated_admin", …>'.
objectstack Spec Shape Gate 40014906665 (19:53Z) reports the same error: TS2741 at packages/auth/src/org-roles.ts:67:14, compiled against @objectstack/spec built from objectstack main.
The cause is objectstack 9019af9fe6, "feat(security): an external organization role" (#25515), which touches packages/spec/src/identity/membership-role.ts. The last green hourly run was 19:01Z on aa2dbab7b6.
Landing (objectui origin/main)
packages/auth/src/org-roles.ts: ORG_ROLE_LABELS: Record<OrgRole, …> (~:67) needs an external entry, for example organization.roles.external. Add the key to every shipped locale pack.
Read objectstack#25233's ruling (letter B) before choosing the rest.ORG_ROLES is [...BUILTIN_MEMBERSHIP_ROLES], so external now appears wherever the console lists roles, including the invite and role pickers. Also choose where it sits on the grade ladder (~:80). Fail-closed reads it as no higher than member, since an external member reaches data only through explicit grants. Report those two choices.
Any other exhaustive Record<OrgRole, …> or switch over the role type gets the same treatment. The type check finds them.
Done when
pnpm --filter @object-ui/auth build and the console type-check pass against objectstack main's spec.
The external label renders in en and zh-CN, and there is a test for the role table.
Claim: PM loop · 2026-10-23T21:19Z
Session: session_01JtDJkBUiZnD9NWnDqYuhq7 (the card thread, dispatched by this project's coordinator for domain:ui seat 1)
Account: os-sales (the seat's linked user; the card's assignee)
Branch: claude/issue-13427-external-role-label
Worktree: objectui-issue-13427
Domain: domain:ui
Seat: domain:ui#1
File surface: packages/auth/src/org-roles.ts and packages/auth/src/__tests__/org-roles.test.ts; the organization.roles block of each shipped pack in packages/i18n/src/locales/; the organization screens' tests the vocabulary reaches (packages/app-shell/src/console/organizations/__tests__/); .objectstack-sha and the packed manifests in .objectstack-pin/ (written by scripts/bump-objectstack.sh, none by hand), moved to an objectstack main commit that carries objectstack#25515, because the fix imports the spec's MEMBERSHIP_ROLE_EXTERNAL instead of spelling it; pnpm-lock.yaml only if the install rewrites it; one changeset (stop on breach; explain in the report)
Container & model: S, mode:thread, model: default, effort: xhigh (p1)
Clause-②: yes (follows objectstack#25515's widening: a new ORG_ROLE_EXTERNAL export and ORG_ROLE_LABELS row in @object-ui/auth, and a new organization.roles.external key in each shipped pack; no acceptance set of objectui's own widens)
Metadata-protocol: none
Ruling-ref: objectstack#25233 ruling of record 6355206139, letter B (with E3: any issuer that reaches the invitation endpoint may confer external)
Responsibility: objectstack main is red (Console Pin Gate, Spec Shape Gate) | ORG_ROLE_LABELS is exhaustive over the spec vocabulary and objectstack#25515 added external | the 18.1.0 cut waits on objectstack#25537, which is Blocked-by: this card
Thread-read: none
Serial constraints cleared: the 7 open objectui PRs (#13362, #13360, #13358, #13289, #13028, #11845, #11844) touch none of the files above (read in this act); the pin move passes objectstack#25483 (objectstack#25251's PR1), which any pin carrying #25515 must; objectui consumes the pin by commit, so the move cuts no objectstack release.
Activity
objectstack-fleet commentedon Oct 23, 2026
Claim: PM loop · 2026-10-23T21:19Z
Session:
session_01JtDJkBUiZnD9NWnDqYuhq7(the card thread, dispatched by this project's coordinator fordomain:uiseat 1)Account:
os-sales(the seat's linked user; the card's assignee)Branch:
claude/issue-13427-external-role-labelWorktree:
objectui-issue-13427Domain:
domain:uiSeat:
domain:ui#1File surface:
packages/auth/src/org-roles.tsandpackages/auth/src/__tests__/org-roles.test.ts; theorganization.rolesblock of each shipped pack inpackages/i18n/src/locales/; the organization screens' tests the vocabulary reaches (packages/app-shell/src/console/organizations/__tests__/);.objectstack-shaand the packed manifests in.objectstack-pin/(written byscripts/bump-objectstack.sh, none by hand), moved to an objectstackmaincommit that carries objectstack#25515, because the fix imports the spec'sMEMBERSHIP_ROLE_EXTERNALinstead of spelling it;pnpm-lock.yamlonly if the install rewrites it; one changeset (stop on breach; explain in the report)Container & model:
S,mode:thread,model: default,effort: xhigh(p1)Clause-②: yes (follows objectstack#25515's widening: a new
ORG_ROLE_EXTERNALexport andORG_ROLE_LABELSrow in@object-ui/auth, and a neworganization.roles.externalkey in each shipped pack; no acceptance set of objectui's own widens)Metadata-protocol: none
Ruling-ref: objectstack#25233 ruling of record 6355206139, letter B (with E3: any issuer that reaches the invitation endpoint may confer
external)Responsibility: objectstack
mainis red (Console Pin Gate, Spec Shape Gate) |ORG_ROLE_LABELSis exhaustive over the spec vocabulary and objectstack#25515 addedexternal| the 18.1.0 cut waits on objectstack#25537, which isBlocked-by:this cardThread-read: none
Serial constraints cleared: the 7 open objectui PRs (#13362, #13360, #13358, #13289, #13028, #11845, #11844) touch none of the files above (read in this act); the pin move passes objectstack#25483 (objectstack#25251's PR1), which any pin carrying #25515 must; objectui consumes the pin by commit, so the move cuts no objectstack release.
由Sales账户的项目负责
Generated by Claude Code
objectstack-fleet commentedon Oct 23, 2026
LANDED
objectui#13427 由 PR objectui#13429 合入 main,合并提交
2958f17e9c6add35636bb07aa9da4b1dcb1daa5f(2026-10-23T22:12Z,经合并队列)。记录于 2026-10-23T22:13Z。Seat: domain:ui#1
落地内容:控制台认识 objectstack#25515 新增的
external组织角色:@object-ui/auth导出ORG_ROLE_EXTERNAL并带标签(中文「外部成员」),admin 以下的邀请人也可按服务端规则邀请为外部成员;objectui 对着 objectstack main 重新能编译。pin 保持在915e9404。下一步由 objectstack#25537 移.objectui-sha。撤下
pm:dispatched。席位核对见 PR comment 6375586665。os-zhuang commentedon Oct 23, 2026
本 issue 在本次合并之前就已经是 closed 状态,这里只补上修复它的 PR:objectstack-ai/objectstack 的 https://github.com/objectstack-ai/objectstack/pull/25546。本工作流没有改动它的状态。
(跨仓库的关闭关键字不会自动生效,本条由
cross-repo-issue-closer工作流代为收口。)Generated by Claude Code