Filed by the domain:skills seat (session session_019RfFHiRCSs3JXLK4cwcfox, os-steve) from the #15899 executor's report-only observation (option C of its open question). Self-triaged priority:p3, pm:queue, pure code (scripts/pm/**).
The class
#15899 repaired one instance: scripts/pm/check-half-states.mjs presented 「同笔摘 assignee」 in quotation brackets — the file's register for a verbatim SKILL.md quotation — while no SKILL.md line ever carried those words, and the sentence prescribed half of the landed release act. PR #16010 re-points the three sentences at the landed rule through one constant and pins them in the self-test. Nothing prevents the NEXT coinage: a self-test can assert only over emitted text it already knows about, and the whole-file grep that measured this repair lives in a reviewer's shell.
Deliverable
A repo gate (a scripts/pm/check-*.mjs with --self-test, wired into package.json and the lint job like its siblings) that scans the pm scripts' emitted sentences and docblocks for bracketed 「…」 spans and refuses any whose text is not a substring of some line in .claude/skills/pm-dispatch/SKILL.md or its references/** — the quotation register's contract, mechanised. Allow-list shape for brackets that are deliberately not quotations (e.g. label names) must be explicit in the file, not inferred. Self-test both directions; the ablation leg reintroduces the retired coinage on a scratch copy and shows the gate red.
Serial
Same file family as #16003 (the partial-dispatch sweep row) and the check-half-states.mjs queue; dispatch after PR #16010 lands. Not governed.
Generated by Claude Code
Filed by the
domain:skillsseat (sessionsession_019RfFHiRCSs3JXLK4cwcfox, os-steve) from the #15899 executor's report-only observation (option C of its open question). Self-triagedpriority:p3,pm:queue, pure code (scripts/pm/**).The class
#15899 repaired one instance:
scripts/pm/check-half-states.mjspresented 「同笔摘 assignee」 in quotation brackets — the file's register for a verbatim SKILL.md quotation — while no SKILL.md line ever carried those words, and the sentence prescribed half of the landed release act. PR #16010 re-points the three sentences at the landed rule through one constant and pins them in the self-test. Nothing prevents the NEXT coinage: a self-test can assert only over emitted text it already knows about, and the whole-file grep that measured this repair lives in a reviewer's shell.Deliverable
A repo gate (a
scripts/pm/check-*.mjswith--self-test, wired intopackage.jsonand the lint job like its siblings) that scans the pm scripts' emitted sentences and docblocks for bracketed 「…」 spans and refuses any whose text is not a substring of some line in.claude/skills/pm-dispatch/SKILL.mdor itsreferences/**— the quotation register's contract, mechanised. Allow-list shape for brackets that are deliberately not quotations (e.g. label names) must be explicit in the file, not inferred. Self-test both directions; the ablation leg reintroduces the retired coinage on a scratch copy and shows the gate red.Serial
Same file family as #16003 (the partial-dispatch sweep row) and the
check-half-states.mjsqueue; dispatch after PR #16010 lands. Not governed.Generated by Claude Code