呈维护者裁决 —— skills 席(session session_019RfFHiRCSs3JXLK4cwcfox,os-steve),第 8 批,共 1 项(末批不足照呈)。裁后一行回批即可(「1A」/「1A, 但…」)。
1. 教「不要用角色名做判断」的那一页,被禁用词门禁拦住了 —— 12 处「role」全是在讲这个词已经退役
一句话问题:发布给第三方的数据技能参考页 data-hooks.md 用 12 处「role」教作者「会话里没有角色列表、别拿角色名做门禁」;把禁用词门禁的扫描范围补全(它之前看不见整个 references/ 目录)之后,这一页被判成「新使用了保留词」,而门禁把唯一合适的补救(把这些引述历史记进基线)标成了维护者专属动作。
背景:ADR-0090 D3 保留了 role 一词(改用 permission_set / position / business_unit),门禁 check:role-word 用一份只减不增的基线守住存量。今天发现该门禁(和 check:corpus-claim-drift)跳过所有名为 references 的目录 —— 本意是跳过由 spec 生成的 content/docs/references/,却把 skills/*/references/ 里手写、随 npx skills add 逐字发到第三方仓库的两页也跳过了(46 页里的 12 页不可见)。修复 PR #15073 改为按路径只跳生成树;扫描一补全,data-hooks.md 的 12 处就浮出来了。dev 按停条件没改那一页、没动基线。
带 re-check 命令的前提:
- 在 PR 分支跑
node scripts/check-role-word.mjs → exit 1,skills/objectstack-data/references/data-hooks.md: NEW use of the reserved word "role" (12 occurrence(s)),随后是门禁自己的一句:⛔ MAINTAINER-ONLY … add it to scripts/role-word-baseline.json by running node scripts/check-role-word.mjs --update … --update rewrites the whole baseline from the current tree。
- 12 处的形态(
grep -n -w role skills/objectstack-data/references/data-hooks.md)::350 「No role list — session.roles was retired in 17.0.0」;:575 「never by a role name in a hook」;:837-841 「⚠️ Do NOT gate this on a role name. ctx.session carries no role list」;:733 一条示例查询 where: { role: 'admin' }(better-auth sys_member.role 领地,D3 已划出);:822 「a field is always hidden/masked for a role」。
check:corpus-claim-drift 补全后仍绿,账本不动。
选项 × 真实代价:
| 选项 |
做什么 |
真实代价(客户/作者可感知) |
| A 记进基线 |
维护者跑 --update 提交(或裁定授权本席让 dev 在该分支跑,复核时整份基线 diff 逐行看) |
基线是只减不增的棘轮,--update 一次重写整份;需要维护者认定这 12 处是「引述历史」这一合法类别。之后门禁看得见全部 46 页 |
| B 改写页面把词去掉 |
重写句子 |
这些句子讲的就是那个标识符的退役 —— 去掉它,句子变假;教「没有角色列表」却不能说「角色」,读者学不到该学的 |
C 用 os:vendor-wire 围栏标记 |
给 12 处加第三方 wire 围栏 |
多数是散文和代码注释,不是第三方 wire 载荷;围栏豁免只认围栏块,硬套等于把豁免面拉大到它明确不覆盖的散文 |
| D 让门禁在 main 上红着 |
不处理 |
两个门禁都是必需上下文,PR #15073 落不了地,后面排队的也落不了;或者只落 corpus-claim-drift 半边,role-word 那半边再开一张 PR |
业务含义直译:A = 承认「讲历史的页面可以提那个旧词」并记账;B = 为了通过检查把正确的文档改错;C = 拿别的例外硬套;D = 修好一半、另一半继续瞎。
四轴从业务立场论证:
- 项目长远合理性(≥50%):只减不增的基线 + 维护者亲裁边界,正是这个门禁的设计;A 是在设计内走一次它自己写明的出口,记录可 grep、可复核。B/C 都是绕行(改文档迎合 lint、扩张豁免面),违反 no-workarounds。
- 实际业务拉动(实测):这两页随
npx skills add 逐字发到第三方仓库,是 AI 作者真正读的文本 —— 门禁把 skills 列进扫描根的理由就是这条发行路径;补全扫描是把真实缺口补上,不是投机。
- 防 AI 犯错:这一页教的正是「一个声明了却从未产出的键,AI 作者一直在读它」;把它写响亮才是防错。B 把警告删掉、门禁却变绿,是声明了不执行往上挪一层。补全扫描本身也是收紧:一个跑了、绿了、却看不见四分之一样本的门禁,就是宽容消费端的形状。
- 创业阶段不扩散:A 零新面 —— 一条既有基线里的账目,不新增豁免机制、不新增词汇、不设过渡期;C 扩豁免面;B 花作者时间改对的页面。
推荐 + 回退 + 置信缺口:荐 A(维护者自己跑,或回批「1A, 你跑」授权本席让 dev 在 PR 分支跑 --update 并把整份基线 diff 逐行贴进 PR 正文供复核)。回退 D 的半边式:先落 corpus-claim-drift 半边(绿),role-word 半边另立 PR 等裁 —— 不推荐,平白多一张 Part of。本分析看不见的:--update 重写整份基线时,除这 12 处外是否还会带进别的文件的变化(dev 已按门禁的话提醒「整份 diff 要整读」,但未实测重写结果);以及 :733 那条示例查询是否更适合改成 D3 的正名字段 —— 若你愿意,可裁「1A, 但 :733 改成 permission_set 示例」。
裁后我会怎么执行(你不用管):A(你跑)⇒ 你在分支提交基线后本席复核整份 diff、翻 ready 入队,PR 关 #15061;A(授权)⇒ 本席续派原 dev 跑 --update,PR 正文贴整份基线 diff,本席逐行复核后同上;B/C ⇒ 按裁定字面执行;D ⇒ 劈半落地并另立卡。
os-decision-facets
① 项目长远合理性:走门禁自己写明的维护者出口、账目可复核,是设计内的路;改文档或扩豁免都是绕行(权重 ≥50%,荐 A)。
② 实际业务拉动:两页随 npx skills add 逐字发到第三方,是 AI 作者真正读的文本;补全扫描填的是实测缺口。
③ 防 AI 犯错:这一页教的就是「别读那个从未产出的键」,写响亮是防错;删掉换绿是声明不执行往上挪一层。
④ 创业阶段不扩散:A 零新面(既有基线一条账);C 扩豁免面;B 花时间改对的页面。
推荐:A(维护者跑 --update,或授权本席让 dev 在 PR 分支跑并整份 diff 复核);回退 D 半边式,不推荐。
置信缺口:--update 整份重写会否带进其他文件的变化未实测;:733 示例查询是否该改正名字段。
Generated by Claude Code
呈维护者裁决 —— skills 席(session
session_019RfFHiRCSs3JXLK4cwcfox,os-steve),第 8 批,共 1 项(末批不足照呈)。裁后一行回批即可(「1A」/「1A, 但…」)。1. 教「不要用角色名做判断」的那一页,被禁用词门禁拦住了 —— 12 处「role」全是在讲这个词已经退役
一句话问题:发布给第三方的数据技能参考页
data-hooks.md用 12 处「role」教作者「会话里没有角色列表、别拿角色名做门禁」;把禁用词门禁的扫描范围补全(它之前看不见整个references/目录)之后,这一页被判成「新使用了保留词」,而门禁把唯一合适的补救(把这些引述历史记进基线)标成了维护者专属动作。背景:ADR-0090 D3 保留了
role一词(改用 permission_set / position / business_unit),门禁check:role-word用一份只减不增的基线守住存量。今天发现该门禁(和check:corpus-claim-drift)跳过所有名为references的目录 —— 本意是跳过由 spec 生成的content/docs/references/,却把skills/*/references/里手写、随npx skills add逐字发到第三方仓库的两页也跳过了(46 页里的 12 页不可见)。修复 PR #15073 改为按路径只跳生成树;扫描一补全,data-hooks.md的 12 处就浮出来了。dev 按停条件没改那一页、没动基线。带 re-check 命令的前提:
node scripts/check-role-word.mjs→ exit 1,skills/objectstack-data/references/data-hooks.md: NEW use of the reserved word "role" (12 occurrence(s)),随后是门禁自己的一句:⛔ MAINTAINER-ONLY … add it to scripts/role-word-baseline.json by running node scripts/check-role-word.mjs --update … --update rewrites the whole baseline from the current tree。grep -n -w role skills/objectstack-data/references/data-hooks.md)::350「No role list —session.roleswas retired in 17.0.0」;:575「never by a role name in a hook」;:837-841「ctx.sessioncarries no role list」;:733一条示例查询where: { role: 'admin' }(better-authsys_member.role领地,D3 已划出);:822「a field is always hidden/masked for a role」。check:corpus-claim-drift补全后仍绿,账本不动。选项 × 真实代价:
--update提交(或裁定授权本席让 dev 在该分支跑,复核时整份基线 diff 逐行看)--update一次重写整份;需要维护者认定这 12 处是「引述历史」这一合法类别。之后门禁看得见全部 46 页os:vendor-wire围栏标记业务含义直译:A = 承认「讲历史的页面可以提那个旧词」并记账;B = 为了通过检查把正确的文档改错;C = 拿别的例外硬套;D = 修好一半、另一半继续瞎。
四轴从业务立场论证:
npx skills add逐字发到第三方仓库,是 AI 作者真正读的文本 —— 门禁把skills列进扫描根的理由就是这条发行路径;补全扫描是把真实缺口补上,不是投机。推荐 + 回退 + 置信缺口:荐 A(维护者自己跑,或回批「1A, 你跑」授权本席让 dev 在 PR 分支跑
--update并把整份基线 diff 逐行贴进 PR 正文供复核)。回退 D 的半边式:先落 corpus-claim-drift 半边(绿),role-word 半边另立 PR 等裁 —— 不推荐,平白多一张Part of。本分析看不见的:--update重写整份基线时,除这 12 处外是否还会带进别的文件的变化(dev 已按门禁的话提醒「整份 diff 要整读」,但未实测重写结果);以及:733那条示例查询是否更适合改成 D3 的正名字段 —— 若你愿意,可裁「1A, 但 :733 改成 permission_set 示例」。裁后我会怎么执行(你不用管):A(你跑)⇒ 你在分支提交基线后本席复核整份 diff、翻 ready 入队,PR 关 #15061;A(授权)⇒ 本席续派原 dev 跑
--update,PR 正文贴整份基线 diff,本席逐行复核后同上;B/C ⇒ 按裁定字面执行;D ⇒ 劈半落地并另立卡。os-decision-facets
① 项目长远合理性:走门禁自己写明的维护者出口、账目可复核,是设计内的路;改文档或扩豁免都是绕行(权重 ≥50%,荐 A)。
② 实际业务拉动:两页随
npx skills add逐字发到第三方,是 AI 作者真正读的文本;补全扫描填的是实测缺口。③ 防 AI 犯错:这一页教的就是「别读那个从未产出的键」,写响亮是防错;删掉换绿是声明不执行往上挪一层。
④ 创业阶段不扩散:A 零新面(既有基线一条账);C 扩豁免面;B 花时间改对的页面。
推荐:A(维护者跑
--update,或授权本席让 dev 在 PR 分支跑并整份 diff 复核);回退 D 半边式,不推荐。置信缺口:
--update整份重写会否带进其他文件的变化未实测;:733示例查询是否该改正名字段。Generated by Claude Code