Filed by the director seat (summon 13, session_01WXyGTWPbbreqXow7Z2pZCk) on the maintainer's ruling of 2026-09-04 on decision card #15075 (option B of the director's re-evaluation; verbatim reply in chat: 「按照你的建议,跟进并处理完这两个pr。」). Routed directly to domain:skills under the maintainer's direct-dispatch channel; triage may confirm. Governed surface (skills/**): draft PR, review requested from both os-zhuang and hotlong, human merge.
Why
PR #15073 widens check:role-word to the published catalog's references/ pages and reds on this page: 12 occurrences of the reserved word. The decision card proposed admitting all 12 to the shrink-only baseline as "quoted pre-rename history". Read line by line on origin/main, only part of that holds:
| lines |
occurrences |
what they are |
disposition |
| 350 (table row) |
2 |
the retirement note: session.roles retired in 17.0.0, never produced |
keep (one retirement note is legitimate history) |
| 574-575 (comment) |
2 |
the same retirement note again, plus "never by a role name" |
fold into one sentence without the reserved word ("privilege is judged by the security service, never by a session claim") |
| 733 (example) |
1 |
where: { role: 'admin' } querying a user field named role |
rewrite the example to a real field or a permission-set check; no sys_user field is named role |
| 822 (callout) |
1 |
"always hidden/masked for a role" |
D3 vocabulary: "for a permission set or position" |
| 837-841 (comment) |
6 |
the retirement note a third time, plus "role name", "role list", "role-aware", "per-role exemption" |
keep the one useful warning (do not write ctx.session?.roles?.includes), spell the rest in D3 vocabulary |
Target: the page teaches permission sets / positions / business units, states the session.roles retirement once (the table row) and warns once against the ctx.session?.roles pattern; expected residue 3 to 4 occurrences, all quoted history. This page ships verbatim to third parties via npx skills add, which is why the reserved-word ratchet reads it at all.
Definition of done
Blocks: #15073 (card #15061) — that PR lands after this page merges, with the baseline entry for the residue.
Refs: #15061 · PR #15073 · #15075 (ruling) · ADR-0090 D3.
Filed by the director seat (summon 13, session_01WXyGTWPbbreqXow7Z2pZCk) on the maintainer's ruling of 2026-09-04 on decision card #15075 (option B of the director's re-evaluation; verbatim reply in chat: 「按照你的建议,跟进并处理完这两个pr。」). Routed directly to
domain:skillsunder the maintainer's direct-dispatch channel; triage may confirm. Governed surface (skills/**): draft PR, review requested from bothos-zhuangandhotlong, human merge.Why
PR #15073 widens
check:role-wordto the published catalog'sreferences/pages and reds on this page: 12 occurrences of the reserved word. The decision card proposed admitting all 12 to the shrink-only baseline as "quoted pre-rename history". Read line by line onorigin/main, only part of that holds:session.rolesretired in 17.0.0, never producedwhere: { role: 'admin' }querying a user field namedrolesys_userfield is namedrolectx.session?.roles?.includes), spell the rest in D3 vocabularyTarget: the page teaches permission sets / positions / business units, states the
session.rolesretirement once (the table row) and warns once against thectx.session?.rolespattern; expected residue 3 to 4 occurrences, all quoted history. This page ships verbatim to third parties vianpx skills add, which is why the reserved-word ratchet reads it at all.Definition of done
node scripts/check-role-word.mjsrun on the branch with PR fix(gates): scan the published catalog's references/ in role-word and corpus-claim-drift #15073's walker change applied locally (cherry-pick or the same two-line edit in a throwaway): the page's count reported; anything left is the retirement note and the warning.scripts/role-word-baseline.json; the baseline entry for the residue is PR fix(gates): scan the published catalog's references/ in role-word and corpus-claim-drift #15073's, authorized by the maintainer on that PR.Blocks: #15073 (card #15061) — that PR lands after this page merges, with the baseline entry for the residue.
Refs: #15061 · PR #15073 · #15075 (ruling) · ADR-0090 D3.