Filed by the dev executing the director-charter ruling on #16172 as an out-of-scope finding: the ruling was executed in .claude/skills/pm-dispatch/references/lanes/director.md only (the one file that flight held). Every sentence below lives in a file another flight holds, so none of them was touched. ⛔ No domain:* and no assignee — the skills seat triages this.
What the ruling says
The director seat is a decision function: any number of summons run concurrently, no closing brief is owed before another summon starts, and a second summon neither waits for, stands down nor supersedes another. The takeover (接管) and incumbent (在任者) notions are retired for that seat.
The generic protocol text that still assumes exactly one occupant
.claude/skills/pm-dispatch/references/seat-post-protocol.md — the file the director charter points at with 「四段照旧」. Its status vocabulary has no word for a seat with N summons open, which is the specific gap the executing brief asked to be reported:
3:见 SKILL.md 〈座位贴协议〉;本文是接管、移交、回收那一刻要查的协议细则。
7:- 四段的现值由在任座位在写侧刷新时收缩;⛔ 岗位说明 PR 不代改贴正文。
9:- 状态词表:`🟢 <github-login>` 在任、`🟢 Routine`、`⏳ vacant`、`⏸️ paused`。
11:- assignee = 在任 PM 的 GitHub 账号,退场或回收时摘除;无 assignee = 空缺,与标题互为校验。
13:- 当前 PM 段登记三元:GitHub 账号(`get_me` 自查)、会话 ID 或 Routine ID、上任时刻。
14:- 审计与认领评论的作者字段是平台盖章的硬读数,接管仲裁与活性判定优先用它对账正文。
16:- 接管压缩:接任 PM 把交接的有效内容按四段模板重述为新正文,编辑历史即存档。
34:- 收班序列:贴正文与标题刷新在先,简报评论是最终一笔;继任的释放判据 = 简报在。
38:- 标题词表不扩,收班座位恒 `⏳ vacant`;留守登记(谁、哪些尾巴)= 说明段一行。
Line 9 is the load-bearing one: the four words are 🟢 <github-login> / 🟢 Routine / ⏳ vacant / ⏸️ paused, and line 38 forbids extending the vocabulary. A director seat post with three summons open can be written under none of them, and line 11's assignee-title cross-check reads such a post as a half state. The charter line landed for #16172 says the status block carries one line per summon with no occupant, which the generic protocol cannot currently express.
The mutex and takeover sentences in the files other flights hold
.claude/skills/pm-dispatch/SKILL.md:
78:- 开轮互斥:fire 开始、首个写动作之前读四个读数,未收班活动任一未满一轮 ⇒ 自退。
87:- 收班简报是前任不再写的显式声明,是释放标记不是锁:简报即最新事件 ⇒ 立即坐席。
88:- 维护者明示召唤是仲裁:有简报径直坐席;无简报才走保守确认,确认终止即坐席。
272:- 接管/移交 = 改正文 + 审计评论(评论只作审计不承载状态),接管压缩是标准步骤。
280:- ⛔ 永不从贴的 `updated_at` 或标题推死活;活性只认在任者自己的产出。
.claude/skills/pm-dispatch/references/core-rules.md:
19:- 开轮互斥读四个读数:收班简报、开轮标记、本车道最新他会话认领、最新关闭卡的认领。
These stay TRUE for domain:* seats, which the ruling did not touch — line 88 is the generic arbitration rule and the ruling is explicitly about the director seat alone. What is open is whether each of them needs a director carve-out, since a director summon that runs line 78 today finds an active session with no closing brief and self-retires, which is exactly what the ruling says it must not do.
A stale quotation left by this edit
scripts/pm/check-skill-line-ratchet.mjs:720 quotes the director charter's authorization sentence verbatim inside the CEILINGS comment:
720: // file: 「项目总监 由人工定期指挥,负责处理 contract-review 类别的和需要决裁的。」) — a
The charter's line was reworded in the same stroke that folded the summon guard into it, so the quotation no longer matches the file it quotes. It is a comment, not a pin, and the ratchet is green either way; the file is held by another flight, so it is reported rather than fixed.
Dedupe
Listed all open issues over the REST list endpoint (3 pages, 300 entries) and grepped titles for seat / summon / mutex / occupancy / 座位 / director / handover / charter. The neighbours are #16172 (this ruling's own card), #16004 (the mutex's reading 3 misses a session re-engaged on a pm:queue card — a different reading, same mutex) and #16197; none of them is this. Control: the same grep returns live hits, so the empty result is a reading rather than a broken query.
Generated by Claude Code
Filed by the dev executing the director-charter ruling on #16172 as an out-of-scope finding: the ruling was executed in
.claude/skills/pm-dispatch/references/lanes/director.mdonly (the one file that flight held). Every sentence below lives in a file another flight holds, so none of them was touched. ⛔ Nodomain:*and no assignee — the skills seat triages this.What the ruling says
The director seat is a decision function: any number of summons run concurrently, no closing brief is owed before another summon starts, and a second summon neither waits for, stands down nor supersedes another. The takeover (接管) and incumbent (在任者) notions are retired for that seat.
The generic protocol text that still assumes exactly one occupant
.claude/skills/pm-dispatch/references/seat-post-protocol.md— the file the director charter points at with 「四段照旧」. Its status vocabulary has no word for a seat with N summons open, which is the specific gap the executing brief asked to be reported:Line 9 is the load-bearing one: the four words are
🟢 <github-login>/🟢 Routine/⏳ vacant/⏸️ paused, and line 38 forbids extending the vocabulary. A director seat post with three summons open can be written under none of them, and line 11's assignee-title cross-check reads such a post as a half state. The charter line landed for #16172 says the status block carries one line per summon with no occupant, which the generic protocol cannot currently express.The mutex and takeover sentences in the files other flights hold
.claude/skills/pm-dispatch/SKILL.md:.claude/skills/pm-dispatch/references/core-rules.md:These stay TRUE for
domain:*seats, which the ruling did not touch — line 88 is the generic arbitration rule and the ruling is explicitly about the director seat alone. What is open is whether each of them needs a director carve-out, since a director summon that runs line 78 today finds an active session with no closing brief and self-retires, which is exactly what the ruling says it must not do.A stale quotation left by this edit
scripts/pm/check-skill-line-ratchet.mjs:720quotes the director charter's authorization sentence verbatim inside the CEILINGS comment:The charter's line was reworded in the same stroke that folded the summon guard into it, so the quotation no longer matches the file it quotes. It is a comment, not a pin, and the ratchet is green either way; the file is held by another flight, so it is reported rather than fixed.
Dedupe
Listed all open issues over the REST list endpoint (3 pages, 300 entries) and grepped titles for seat / summon / mutex / occupancy / 座位 / director / handover / charter. The neighbours are #16172 (this ruling's own card), #16004 (the mutex's reading 3 misses a session re-engaged on a
pm:queuecard — a different reading, same mutex) and #16197; none of them is this. Control: the same grep returns live hits, so the empty result is a reading rather than a broken query.Generated by Claude Code