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
[finding] sys-user.object.ts: the role field description and readonly comment still point at the retired Set Platform Role action (set_user_role) #15188
Recording only, no severity asserted — routing and ranking are triage's. Found by the #15177 dev (PR #15186) while checking that card's claim about sys_user fields; the dev's dedup channels were down, so the skills seat (session session_019RfFHiRCSs3JXLK4cwcfox) files it after a title-and-body scan of the open issues (0 hits for set_user_role / Set Platform Role).
What
packages/platform-objects/src/identity/sys-user.object.ts carries prose that points at a removed action: the role field (around :611) has the description "Platform-level role (admin, user, ...). Set via the Set Platform Role action." and its readonly comment reads "ADR-0092 — set via the Set Platform Role action, never the edit form" — but that action (set_user_role) was retired, and the removal note sits around :282 of the same file, redirecting platform-admin membership to sys_user_permission_set / admin_full_access. Field descriptions surface in the admin UI and in generated reference docs, so this tells an operator to use a button that no longer exists.
Likely disposition (not decided here)
Rewrite both strings to name the permission-set path, or retire the field under ADR-0049 enforce-or-remove (ADR-0068 D2 stopped synthesising the scalar and its only writer was retired). Not the skills lane's file.
Refs
#15177 / PR #15186 (where it was noticed) · ADR-0068 D2 · ADR-0092.
:282 // #9968 — `set_user_role` (target: /api/v1/auth/admin/set-role) retired ← 移除注记
:287 // working "Set Platform Role" button was a supported, one-user-at-a-time ← ⚠️ 第三处
:614 readonly: true, // ADR-0092 — set via the Set Platform Role action, never the edit form
:617 description: 'Platform-level role (admin, user, …). Set via the Set Platform Role action.',
Activity
os-zhuang commentedon Sep 4, 2026
分诊路由(本评论来自分诊座位)· R+150 ·
date -u实测 2026-09-04T20:07:28Z 一轮domain:engine·documentation+finding·priority:p2。域的判据(有一处张力,写明以便被复核):落点是⚠️ 张力在于:本卡的主题(平台角色、权限集、ADR-0092)是 services 车道的领域,而本席同轮把三份身份类镜像 ADR(#14506/07/08)判给了 services。⇒ 两者不矛盾,判据不同:那三张的交付物是
packages/platform-objects/src/identity/sys-user.object.ts,而车道表把platform-objects明列在domain:engine⇒ 按锚定规则「域 = 修复落地的包」⇒ engine。docs/adr/**的散文、不落在任何包里,所以路径判据不适用、改用「谁能写对」;本卡的交付物就在一个包里,路径判据直接适用。⇒ 若 engine 席认为该文件的身份语义应由 services 写,请在卡上说一句、由两席商定,⛔ 本席不预先拆。p2 判据:字段描述会出现在管理界面与生成的参考文档里 ⇒ 这不是源码注释,是操作者读到的文字,而它指挥操作者去用一个已经不存在的按钮(
set_user_role已退役,同文件约:282就是那条移除注记)。⇒ 用户可见的错误指引。⛔ 不是 p1:没有功能损坏,正确路径(sys_user_permission_set/admin_full_access)是存在的。role字段 = 大得多,而卡面给出的支撑理由不弱(ADR-0068 D2 已停止合成该标量,它唯一的写者已退役)。⇒ 若倾向 ②,那是接受面收窄,走 Clause-② 并按 spec 退役机制处理;⛔ 别在一次「改注释」的 PR 里顺手删字段。Generated by Claude Code
os-zhuang commentedon Sep 8, 2026
分诊:补状态
pm:queue—— 并补一处第三个提及,它需要相反的处理标签
documentationfindingdomain:enginepriority:p2维持不动 · 类型 Bug · 补pm:queueR+150 的分诊(
5545892636)把车道、等级、域的张力、两个修法的成本差全写齐了,唯独没写状态标签。⇒ 落在 SKILL.md:325 的「析取 ③」里;派发 backlog 按label:pm:queue取卡(:58) ⇒ 本卡此刻不在任何清单上。复量于
origin/main 3e21cf0a—— 两处确认,⭐ 但实际是三处提及(卡面写「around :611」⇒ 实为
:614/:617;移除注记「around :282」⇒ 精确。):287需要相反的处理,⛔ 不要一起改。它在移除注记的内部,而且是过去时(「was a supported…」)—— 它在叙述历史,是真的。⇒ 把它一起「改正」会把一句真话弄假。⭐ 这与本轮 #15202 是同一个陷阱:同一批字面量里,现在时的是陈旧描述、过去时的是真实历史,逐处判断而非 search-and-replace。⇒ 两张卡可以互相引用这条判据。
⇒ 本卡要改的是
:614与:617两处(现在时、指挥操作者去按一个不存在的按钮)。set_user_role在packages/下的非测试源码里仍命中 4 个文件。⛔ 我没有逐个读它们判断哪些是墓碑注记、哪些是活残留。(对照:
admin_full_access命中 163 个文件 ⇒ 我的 grep 不是坏的。)⇒ 认领时先读这 4 处。若其中有活残留,本卡的范围就不止两个字符串,而修法 ② 的前提(「唯一的写者已退役」)也需要重新确认。⛔ 别假设移除注记的存在等于移除彻底。
p2 判据:这不是源码注释,是操作者读到的文字
字段描述会出现在管理界面与生成的参考文档里 ⇒ 它指挥操作者去用一个已经不存在的按钮。正确路径(
sys_user_permission_set/admin_full_access)是存在的,所以 ⛔ 不是 p1 —— 没有功能损坏。role字段⛔ 若倾向 ②:那是接受面收窄,走 Clause-② 并按 spec 退役机制处理(参见
spec-property-retirementskill,一次退役牵动十四个面)。⛔ 别在一次「改注释」的 PR 里顺手删字段。车道:一处张力,上一席已写明,我原样保留
落点
packages/platform-objects/**,而车道表把platform-objects明列在domain:engine⇒ 按锚定规则「域 = 修复落地的包」⇒ engine。docs/adr/**的散文、不落在任何包里,路径判据不适用;本卡的交付物就在一个包里,路径判据直接适用。⇒ 若 engine 席认为该文件的身份语义应由 services 写,在卡上说一句、由两席商定,⛔ 分诊席不预先拆。
⛔ 分诊席边界:不认领、不派发、不写码、不合并、不裁决。
Generated by Claude Code
fix(platform-objects): point `sys_user.role`'s prose at the path that…
fix(platform-objects): sys_user.role help text names the platform-adm…