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
[PM decision] skills lane batch 8 — admit data-hooks.md's twelve quoted-history uses of the reserved word to the role-word baseline so the widened catalog scan can land #15075
在 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 逐行看)
os-decision-facets
① 项目长远合理性:走门禁自己写明的维护者出口、账目可复核,是设计内的路;改文档或扩豁免都是绕行(权重 ≥50%,荐 A)。
② 实际业务拉动:两页随 npx skills add 逐字发到第三方,是 AI 作者真正读的文本;补全扫描填的是实测缺口。
③ 防 AI 犯错:这一页教的就是「别读那个从未产出的键」,写响亮是防错;删掉换绿是声明不执行往上挪一层。
④ 创业阶段不扩散:A 零新面(既有基线一条账);C 扩豁免面;B 花时间改对的页面。
推荐:A(维护者跑 --update,或授权本席让 dev 在 PR 分支跑并整份 diff 复核);回退 D 半边式,不推荐。
置信缺口:--update 整份重写会否带进其他文件的变化未实测;:733 示例查询是否该改正名字段。
Maintainer ruling recorded — 1A, authorised form: the dev runs --update on the PR branch, the whole baseline diff goes into the PR body, the seat reviews it line by line. needs-user-decision → pm:queue in the same stroke.
Director seat, summon 14 (session_01LsEjuNMPitCHwEfYftZ1um, GitHub os-warren). Provenance: maintainer, live PM chat, 2026-09-04, decision batch #27, verbatim 「同意」 on the presented recommendation for this card (A, in the authorised form: dev runs node scripts/check-role-word.mjs --update on claude/issue-15061-catalog-gates-scan-references, the full scripts/role-word-baseline.json diff is pasted into PR #15073's body, the skills seat reviews every line before ready). Premises re-verified on origin/main25a59bd at 04:41Z: the gate still skips references by name (check-role-word.mjs:57), the baseline carries no data-hooks entry, PR #15073 is draft.
The ruling
The twelve role occurrences in skills/objectstack-data/references/data-hooks.md are quoted history — the retirement of session.roles being documented — which is ADR-0090 D3's own named legitimate kind. They enter the shrink-only baseline; this comment is the maintainer's agreement the gate's MAINTAINER-ONLY text asks for.
⛔ Not B (rewording falsifies the page), ⛔ not C (prose is not a vendor wire payload), ⛔ not D (no half landing).
The :733 example query where: { role: 'admin' } stays as written — it is the better-auth sys_member.role field D3 already carves out, not a role-word use to rename.
Maintainer ruling recorded — B: rewrite the page to ADR-0090 D3 vocabulary first; the baseline admits only the residue
Director seat, summon 13, session_01WXyGTWPbbreqXow7Z2pZCk, 2026-09-04.
Provenance (who / verbatim / where): maintainer, live chat with the director seat, 2026-09-04 ~04:5xZ. The maintainer stated that this card's recommendation (admit all twelve to the baseline) was a seat's text, not the maintainer's view, and asked for a re-evaluation; after it, verbatim: 「按照你的建议,跟进并处理完这两个pr。」 — adopts the director's option B.
Why not A (all twelve). Read on origin/main, only five of the twelve occurrences are the quoted retirement note (and it is stated three times on one page); six use the reserved word as live vocabulary ("for a role", "per-role exemption", "role-aware", "role name"), which is exactly what D3 reserves against and can be rewritten without falsifying anything; one is an example query on a role field no sys_user carries. This page ships to third parties via npx skills add, so admitting twelve teaches AI readers the reserved word and weakens the ratchet by twelve at first sight.
Ruled: B.
Card test(cli): widen the scaffold-comment pin to both scaffolders #15151 (skills lane, pm:queue, p2): rewrite the page — one retirement note kept, one warning against ctx.session?.roles kept, the rest in D3 vocabulary, the example fixed. Governed surface: draft PR, both approver accounts, human merge.
Correction to the ruling record above (5535828546): the rewrite card is #15177, not #15151 (the number was written before the card existed); the Blocked-by on #15061 reads #15177. Nothing else changes.
Activity
os-warren commentedon Sep 4, 2026
Maintainer ruling recorded — 1A, authorised form: the dev runs
--updateon the PR branch, the whole baseline diff goes into the PR body, the seat reviews it line by line.needs-user-decision→pm:queuein the same stroke.Director seat, summon 14 (
session_01LsEjuNMPitCHwEfYftZ1um, GitHubos-warren). Provenance: maintainer, live PM chat, 2026-09-04, decision batch #27, verbatim 「同意」 on the presented recommendation for this card (A, in the authorised form: dev runsnode scripts/check-role-word.mjs --updateonclaude/issue-15061-catalog-gates-scan-references, the fullscripts/role-word-baseline.jsondiff is pasted into PR #15073's body, the skills seat reviews every line before ready). Premises re-verified onorigin/main25a59bdat 04:41Z: the gate still skipsreferencesby name (check-role-word.mjs:57), the baseline carries nodata-hooksentry, PR #15073 is draft.The ruling
roleoccurrences inskills/objectstack-data/references/data-hooks.mdare quoted history — the retirement ofsession.rolesbeing documented — which is ADR-0090 D3's own named legitimate kind. They enter the shrink-only baseline; this comment is the maintainer's agreement the gate's MAINTAINER-ONLY text asks for.:733example querywhere: { role: 'admin' }stays as written — it is the better-authsys_member.rolefield D3 already carves out, not a role-word use to rename.Execution constraints, for the skills seat
Fixes #15061); the--updaterun rewrites the whole file — the PR body carries the full diff and the review confirms only thedata-hooks.mdentry is added (any other file moving in the rewrite is a stop-and-report, not a rider).check:corpus-claim-driftstays green with its ledger unchanged (the PR already measured this); both self-tests keep their new population pins.scripts/gates + one JSON baseline): ordinary queue landing after the seat's review. Clause-②: no.Part ofhere is enough; check:role-word and check:corpus-claim-drift skip every references/ directory, so 12 of 46 published-catalog markdown files - incl. both hand-authored reference companions - are invisible to both scans #15061 is theFixes).Ruling authority: maintainer 2026-09-04 (batch #27). Related: #15061 · PR #15073 · ADR-0090 D3 · #8435.
Generated by Claude Code
hotlong commentedon Sep 4, 2026
Maintainer ruling recorded — B: rewrite the page to ADR-0090 D3 vocabulary first; the baseline admits only the residue
Director seat, summon 13, session_01WXyGTWPbbreqXow7Z2pZCk, 2026-09-04.
Provenance (who / verbatim / where): maintainer, live chat with the director seat, 2026-09-04 ~04:5xZ. The maintainer stated that this card's recommendation (admit all twelve to the baseline) was a seat's text, not the maintainer's view, and asked for a re-evaluation; after it, verbatim: 「按照你的建议,跟进并处理完这两个pr。」 — adopts the director's option B.
Why not A (all twelve). Read on
origin/main, only five of the twelve occurrences are the quoted retirement note (and it is stated three times on one page); six use the reserved word as live vocabulary ("for a role", "per-role exemption", "role-aware", "role name"), which is exactly what D3 reserves against and can be rewritten without falsifying anything; one is an example query on arolefield nosys_usercarries. This page ships to third parties vianpx skills add, so admitting twelve teaches AI readers the reserved word and weakens the ratchet by twelve at first sight.Ruled: B.
pm:queue, p2): rewrite the page — one retirement note kept, one warning againstctx.session?.roleskept, the rest in D3 vocabulary, the example fixed. Governed surface: draft PR, both approver accounts, human merge.pm:blocked,Blocked-by: #15151), then adds the baseline entry for the residue (expected 3 to 4, all quoted history) vianode scripts/check-role-word.mjs --update— the ⛔ MAINTAINER-ONLY act, authorized by the maintainer for the residue only — and lands.This decision card is closed as ruled; the work lives on #15151 and #15061.
Generated by Claude Code
hotlong commentedon Sep 4, 2026
Correction to the ruling record above (5535828546): the rewrite card is #15177, not #15151 (the number was written before the card existed); the
Blocked-byon #15061 reads#15177. Nothing else changes.Generated by Claude Code