Skip to content

docs(pm-dispatch): land the maintainer's filing/merging directive — items 1 2 3 4 5 8 — as in-place charter deltas, net 0 per ratcheted file - #19449

Merged
os-steve merged 1 commit into
mainfrom
claude/issue-19340-filing-directive-items-1-5-8
Sep 20, 2026
Merged

os-steve merged 1 commit into
mainfrom
claude/issue-19340-filing-directive-items-1-5-8

Conversation

@os-steve

Copy link
Copy Markdown
Collaborator

Fixes #19340
Clause-②: no

Lands the DELTA between the six adopted items of the director's record (comment 5750077963 on #19340 — the maintainer's verbatim answer 「1 2 3 4 5 6 8」, 2026-09-20T13:24Z, items 1 2 3 4 5 6 8 adopted, 7 and 9 not) and the charter as it stood on origin/main 23f1de0. Item 6 is carried by #19344 (out of scope here; #19344 remains open). Items 7 and 9 were not adopted and nothing here re-proposes them.

Every ratcheted file lands at net 0 — each new rule is paid by retiring a second pointer to the same reference file or a line restated verbatim in a sibling (the pointer-retirement pattern of the last two director-charter PRs) — and every landed line is at or under 120 bytes (widest: 120 B). state-machine.md is untouched (reasons below). Diff: 4 files, +24 / −24.

Per item — the line that stood, the line that lands, what was already in place

item before (origin/main 23f1de0) after (this branch, a2665ce) already in place — untouched
1 filing threshold inverted SKILL.md :347–:351 named the three classes and 「其余进 PR ## Acceptance notes,⛔ 不立卡」 but said nothing about reachability today, a named producer, dormant / zero-pull findings, digests or quotas SKILL.md :351 (new) 「(a) 须今天可达,(c) 须具名生产者;观察、休眠、零拉动 ⛔ 不立卡、不进汇总卡、无配额」 · os-dev.md :45 「(a) 须今天可达,…」, :46 「…须具名生产者…」, :48 adds 休眠、零拉动 to the not-filed list · core-rules.md :87 twin (今日可达可复现缺陷 · 具名生产者陷阱) SKILL.md :347–:350 (three classes, (a)/(c) boundaries), :352–:354 (承接者:无), :376 (三类外关 not planned); os-dev.md :41–:44, :47
2 devs do not file; report contract SKILL.md :778 「只列三类立卡与 noted, not filed;立卡附查重词、归挂、立在修复仓」 and :779 「席位在 ACCEPT 读 … 由席位补立」 named no class: / carrier: field and no per-entry disposition; os-dev.md :49–:50 spelled entries as noted, not filed: …; :60–:61 and :65 still read as the dev filing (「立成它的 sub-issue」「独立立单」「无 assignee 立单」) SKILL.md :777 (every entry class: a|b|c + evidence, or carrier: = 承接者; neither ⇒ Acceptance notes), :778 (dev 不立卡; ACCEPT disposes each entry in one line filed #N / Acceptance notes / dropped — reason; the seat files the three-class ones in the fix repo), :779 (seat reads Acceptance notes, files the true three-class ones with 归挂 + 查重词; out-of-class cards already filed are closed not planned) · os-dev.md :49–:50 (the two fields; carrier: defined; neither ⇒ Acceptance notes only), :60–:61, :65 (the REPORT names the sub-issue / Blocked-by: anchor; the seat files), :376 (report template) · core-rules.md :151 twin os-dev.md :55 「dev 不 POST /issues」 already said devs do not file; :51 (3–5 dedupe words); :53 (four-write budget)
2 the mechanical lock see Item 2's lock — measured below no file change MCP half: issue_write and sub_issue_write are in settings.json permissions.deny, pinned by check-settings-deny-roster.mjs
3 triage merges at first grading SKILL.md :367 「同文件同缺陷 = 同一发现,不分车道:证据搬到先卡,后卡关 duplicate_of,⛔ 不并排派发」 and :368 「其余在飞 ⇒ Blocked-by: 不派;open 未认领 ⇒ 先并成一个派发入口;已完成 ⇒ 卡可能过期」 — a label-pass rule with no first-touch timing, no same-family rule and no execution-seat route SKILL.md :368 「同文件同机制 = 同一发现,不分车道,首触定级即并:证据搬先卡,后卡关 duplicate_of」, :369 「同族异缺陷 ⛔ 不并:互链排同批;在飞(assignee/open PR)永不并,Blocked-by: 不派;完工查过期」, :370 「执行席 ⛔ 不并卡,疑重复挂 pm:retriage 写明哪两张同文件同机制;…」 SKILL.md :223 (分诊唯一生产 duplicate_of), :224 (执行席误标 ⇒ pm:retriage), :366 (查重先按文件/机制); core-rules.md :137 (去重并卡 = 记账不升级) — no core-rules line states the merge rule itself, so no twin
4(i) escalated card names its half nothing: SKILL.md :454–:455 (在飞卡衍生三分 / sub-issue) and :471 (Release: 行点名已落项与余项去向) never required the new card's face to say which half it carries SKILL.md :458 (new) 「自在飞派发升级出的卡首行一句:本卡承哪一半、父卡留哪一半;缺此行不入队不入箱」 SKILL.md :456–:457 (sub-issue inherits domain / priority; the one dispatch bypass), :471
4(ii) ruled card re-enters only with Prior rulings on this card: SKILL.md :357 「决策箱勤务:落卡入箱时校验/补全四棱块与速读;…」 checked the 速读 and four-facet block only; no intake refusal existed anywhere SKILL.md :357 (intake also checks the Prior rulings on this card: line), :358 (new) 「线程有 Ruling:/RULED 的卡再入箱,该行逐 id 各一句变化;缺行 ⇒ 拒入,pm:retriage 回立卡者」 SKILL.md :340 (Prior rulings read: line at classification), :733 (出决策箱须引裁决 id); decision-analysis.md :45; dispatch-runbook.md :84 (Ruling-ref:); state-machine.md :40–:41 (who hangs and who removes pm:retriage)
5 first batch after five cards director.md :40 「第一步:逐卡过一类自裁三判据;全立者录裁转工作态、只入收班追认表,⛔ 不呈批」 — read as 「screen the whole inbox, then present」 director.md :40 「首批读完前 ≤5 张同族卡即呈;一类自裁按批过,⛔ 不先扫全箱,自裁者由下一候选补位」, :41 「取下五张只用便宜扫描:标签、assignee、PR 引用、速读首行;全文只读手上五张」, :42 「判据:开场标记→首批 ≤ 读五张;全立者录裁转工作态、只入收班追认表,⛔ 不呈批」 (the old :40 tail kept verbatim) director.md :44 「一次只开一批」 (pacing, not the pre-read); :23 (每批 5 张)
8 same-holder duplicates SKILL.md :223 「分诊座位唯一生产:…duplicate_of」 with no exception anywhere SKILL.md :370 tail 「同 assignee 者自关后卡」 — the holding seat closes the later card as duplicate_of itself, no pm:retriage round trip :223 kept verbatim: no 120-byte spelling of the exception fits on it (four variants measured 125–153 B); the exception sits beside the merge rule it widens

Paid for by retiring five second pointers and two restated lines — net 0 per file

retired what it was the rule still lives at
SKILL.md :321 「since 读法与成本对价见 references/dispatch-runbook.md pointer, one of six to the same file dispatch-runbook.md, still pointed at from :384, :532, :588, :729
SKILL.md :560 「云卡四课与接手协议增量见 references/dispatch-runbook.md pointer dispatch-runbook.md :115 「## 云卡(mode:cloud)四课」, :143 「## 接手中断的 dev」; pointed at from :532
SKILL.md :650 「os-regen 的陷阱与锚点禁令见 landing-operations A」 pointer, second to the same file :637 「细则见 references/landing-operations.md」; os-dev.md :197–:198 carry the trap
SKILL.md :657 「首次入队 flip 定点、MERGED 两读数、关键 PR 订阅与退订/归档细则见 landing-operations B」 pointer, third to the same file :637
SKILL.md :771 「总监席不占 domain:*,永不认领 backlog、永不写码;章程见 references/lanes/director.md restated verbatim + duplicate pointer director.md :19 (the rule); SKILL.md :57 and :675 (the pointer)
director.md :42 「一行回批即全链执行,裁后四件原子执行不再请示」 restated decision-analysis.md :14 (⛔ 不为它另起请示轮), SKILL.md :728 (四件同笔); director.md :46 points at decision-analysis
director.md :51 「代裁通道的置信门与人工地板见 SKILL.md 分诊座位职责,⛔ 不另抄」 pointer SKILL.md :392–:399 (人工地板, 置信门), :770 (总监席是唯一裁决者)

Clauses compressed inside a rewritten line, and where each now lives:

clause now covered by
SKILL.md :357 「语言按不变量」「子轮」 :99 (中文只留四通道), :372 (低频子轮)
SKILL.md :367 「⛔ 不并排派发」 :368 merge at first grading + :369 「在飞 … Blocked-by: 不派」 + :370 (execution seat raises pm:retriage): two same-finding cards can no longer be dispatched side by side
SKILL.md :368 「open 未认领 ⇒ 先并成一个派发入口」 superseded by 「首触定级即并」 (:368) and 「同族异缺陷 … 互链排同批」 (:369) — item 3 moves the merge from the dispatch entry to first grading
SKILL.md :368 「已完成 ⇒ 卡可能过期」 kept as 「完工查过期」 (:369)
os-dev.md :46 「由写它的人以外的人」→「他人」 · :48 「文档 nit」→「nit」 same meaning, 21 B and 7 B shorter
os-dev.md :49 「席位 ACCEPT 读」 SKILL.md :778–:779 (the seat's ACCEPT disposition)
core-rules.md :87 「先发修复指令再跳过,不可派发」→「发修复指令不派」 SKILL.md :355 (the full rule)
core-rules.md :151 「核验对读同轮报告」→「对读同轮」 SKILL.md :780 (unchanged)

Ceilings before / after (node scripts/pm/check-skill-line-ratchet.mjs, green before and after)

file before after ceiling
.claude/skills/pm-dispatch/SKILL.md 813 813 813
.claude/agents/os-dev.md 403 403 403
.claude/skills/pm-dispatch/references/core-rules.md 151 151 151
.claude/skills/pm-dispatch/references/lanes/director.md 72 72 72
.claude/skills/pm-dispatch/references/state-machine.md 42 42 42 (untouched)

No ceiling raised, no cross-file move declared. Twin rule: a rule changed in SKILL.md that has a core-rules.md twin changed there in this PR (:87 for item 1, :151 for item 2); items 3, 4, 5, 8 have no core-rules twin line, so none was added.

Item 2's lock — measured, not written

  • .claude/settings.json permissions.deny holds 17 mcp__github__* write tools, including issue_write and sub_issue_write — the MCP half of 「devs do not file」 is already mechanical (lock 1; check-settings-deny-roster.mjs pins the roster).
  • permissions.allow pre-approves curl -sS -X POST …/issues/*/labels (labels) and no POST …/issues (create): the REST create is neither allowed nor denied — it falls to the session's permission mode, not to a rule.
  • No hook inspects a curl target: of the five PreToolUse hooks only guard-main-checkout-bash.sh mentions curl, as a write-redirection shape, not a URL.
  • references/rest-channel.md :41 declares POST …/issues a ✓ seat channel (「建卡带标签 POST .../issues」) and the seats file cards through it; a dev subagent runs inside the seat's session under the same settings.json. A Bash deny rule on POST …/issues would refuse the seat's own filing — exactly the conflict the claim anticipated — so no rule is added. The report's open_questions carries the two mechanisms that could bind the dev without the seat (an agent-scoped PreToolUse hook declared in os-dev.md frontmatter; a guard branch keyed on a subagent signal in the hook payload), both needing a measurement of what the harness hands a subagent's hook, and both on the human floor (新增必需 hook).

Why state-machine.md is untouched

The claim listed it for item 4(ii). It is 42 / 42 on the ratchet (mechanism assumption 4: the row exists), has no needs-user-decision section, and its pm:retriage section already governs the refusal's mechanics — :40 (挂标者 = 提出异议的席位, evidence + the ask in one stroke) and :41 (摘标者 = 分诊 Routine, next fire). The intake duty the card itself names (「落卡入箱时校验/补全」) lives at SKILL.md :357, so 4(ii) lands there. Nothing in state-machine.md is a second pointer or a restated line worth retiring to add a twin.

Mechanism assumptions — each verified

  1. Tier. dispatch-gates --tier --repo objectstack-ai/objectstack on the five paths → MANDATORY, path-derived from SKILL.md and os-dev.md; the register (check-governed-merges.mjs row claude-tree) puts .claude/** in Tier S. node scripts/pm/check-governed-merges.mjs --pr N runs after this PR opens; its reading is in the report comment on finding(skills/pm-dispatch): the director charter's step order reads as 「screen the whole inbox before the first batch」 — summon #25 presented batch #192 only after reading all 51 cards; and ruled cards re-enter the decision box without citing the ruling on their own thread #19340 (GOVERNED, exit 3, Tier S expected).
  2. Serial. At 2026-09-20T21:54Z the file lists of all 21 open PRs were read: none touches the five files; only chore(pm): allow the two stamped seat-write tools and the issue-state PATCH #19292 touches .claude/settings.json, which this PR does not. origin/main moved by one commit since the branch point (57ceb9d, scripts/ only, no .claude/ path) — nothing to merge.
  3. Gates. The line ratchet, the id-lint and the governed-prose pin are all in the derived union and green (below). There is no token ratchet over .claude/**: scripts/check-skills-token-ratchet.mjs prices the published skills/** only; .claude/** is priced in lines by check-skill-line-ratchet.mjs. Ceilings not raised.
  4. state-machine.md row. Present at 42 — see above.

Verification (head a2665ce)

Derived union — node scripts/pm/dispatch-gates.mjs --commands --repo objectstack-ai/objectstack (no paths; change set 4 paths vs merge base 23f1de0, 48 changed lines vs the 5000 threshold: under) → 23 commands, each exit captured before any pipe, reconciled with --ran: 「23 derived famil(ies) accounted for — 23 run, 0 NOT-MEASURED (a DERIVED zero — all 23 recorded an exit code and none of them is 3)」.

pnpm check:pm-skill-ratchet :: exit 0
pnpm check:pm-skill-id-lint :: exit 0
pnpm check:pm-governed-prose :: exit 0
pnpm check:pm-governed-merges :: exit 0
pnpm check:pm-expected-skips :: exit 0
pnpm check:skill-frame-sync :: exit 0
pnpm check:agent-model-declared :: exit 0
pnpm check:nul-bytes :: exit 0
pnpm check:commit-card-trailers :: exit 0
node scripts/check-closing-keyword-parity.mjs :: exit 0
node scripts/check-closing-keyword-parity.mjs --self-test :: exit 0
node scripts/check-comment-mask-corpus.mjs :: exit 0
pnpm check:agent-test-spelling :: exit 0
pnpm check:doc-authoring :: exit 0
pnpm check:gitlink-declared :: exit 0
pnpm check:watch-hint-literal :: exit 0
pnpm check:refd-timer-probe :: exit 0
pnpm check:driver-memory-census :: exit 0
pnpm check:cross-package-test-inputs :: exit 0
node scripts/pm/check-governed-queue-guard.mjs --self-test :: exit 0
node scripts/pm/check-harness-current.mjs --self-test :: exit 0
pnpm check:pm-half-states :: exit 0
pnpm --filter @objectstack/lint run check:doc-formula-expressions :: exit 0

check:doc-formula-expressions first exited 3 (PREREQUISITE NOT MET — @objectstack/formula and @objectstack/lint unbuilt; not a measurement); both were built under bash scripts/pm/os-verify-lock.sh (VERDICT command-exit 0, 4 tasks, cached) and the gate re-ran to exit 0. The three named gates plus check-nul-bytes and check-agent-model-declared were also run directly via node on the working tree before the commit, exit 0 each. pnpm check:pm-dispatch-gates (not in the derived union) runs detached with its exit captured to a log; at PR open it stood at 1715 cases ✓ / 0 ✗ and still running — its final exit is in the report comment.

四维分析 — 每处措辞的取舍

  • 实际业务需求 — 每一条都对应本场总监席实测到的成本:51 张全读后才呈第一批(第 5 项);5 张已裁卡以新速读重入决策箱、每张换来一次全线程重读与一句「维持原裁」(第 4(ii) 项);16 张裸 finding 积压超过运行手册 15 张告警线(第 1、2 项)。措辞只写机制与判据,不写故事;判据可核验(开场标记→首批 ≤ 读五张;线程有 Ruling: 而卡面缺行 ⇒ 拒入)。
  • 项目长远合理性 — 全部落成在位改写与退指针,不抬棘轮上限、不加文件、不加工作流;规则住在它的自然家(入箱检在 SKILL.md :357 的决策箱勤务行,并卡规则在查重三行,总监节奏在章程 :40–:42),不另起一节。第 2 项的锁没有落:实测无规则拒 POST …/issues,而 settings.json deny 会一并锁住席位自己的立卡通道 —— 加一条会破坏立卡的规则是「workaround」,故按裁决意图只落报告契约半边,机制半边作为待决问题带四轴上报。
  • 防 AI 写错 — 报告契约从散文(noted, not filed: …)改成两个具名字段(class: a|b|c + 证据 / carrier:),缺字段的条目有确定去向(Acceptance notes),席位处置是三选一的固定拼写;入箱拒入是机械判据(线程有 Ruling:/RULED 而卡面缺行),不靠席位记得去读线程 —— 这正是本场 5 张重入卡的失效形态。
  • 创业阶段不扩散需求 — 未采纳的第 7、9 项与汇总卡、配额都没有被重新提出;第 1 项明确写「不进汇总卡、无配额」封住两条被拒的路。state-machine.md 不为一个已有归宿的规则新增一节。

维护者速读(草稿)

改了什么 — 把您 2026-09-20 对立卡与并卡流程的裁定(「1 2 3 4 5 6 8」,总监席记录 5750077963)中的六项(第 6 项由 #19344 另落)逐条落进章程:立卡门槛反转(只立三类,且缺陷须今天可达、元数据陷阱须具名生产者;观察类 / 休眠 / 零拉动 不立卡、不进汇总卡、不设配额);dev 不立卡,报告每条带 class: + 证据或 carrier:,席位在 ACCEPT 逐条一行处置;分诊首触定级即并同文件同机制的卡,同族异缺陷互链排同批、在飞永不并,执行席只挂 pm:retriage;同 assignee 的重复由持有席自关;从在飞派发升级出的卡首行写明承哪一半;线程已有裁决的卡再入决策箱必须带 Prior rulings on this card: 行,否则拒入;总监席读完前五张同族卡即呈首批,一类自裁按批过,排序只用便宜扫描。四个受棘轮文件全部净 0 行(813 / 403 / 151 / 72),每条新规则以退掉一条重复指针或一条他处已原样陈述的行付账;state-machine.md 未动。

为什么改 — 章程原文与已生效裁定相反或缺失:director.md :40 仍写「第一步:逐卡过一类自裁」(本场总监席因此读完 51 张卡才呈第一批);SKILL.md 没有「首触即并」「同持有自关」「Prior rulings on this card」任何一句;os-dev.md 的报告契约没有 class: / carrier: 字段,且三行仍把「立单」写成 dev 的动作。每个席位每次 fire 都读这些文件,错一句就整队照错。

风险与代价(含回滚) — 纯文本改动,零代码、零工作流、零 settings;派生门禁 23 / 23 绿。代价是为了净 0 而退掉的 7 行(5 条第二指针、2 条他处原样陈述的规则)与重写行里压缩掉的几个短语,每一条都在上方表格里点名了现在住在哪一行;若您认为任一条不该退,恢复它是一行 revert,但要同时退另一行才能过棘轮。第 2 项的机械锁没有落:实测今天没有任何规则拒绝 dev 会话的 REST POST /issues(MCP issue_write 已 deny;REST 建卡既不在 allow 也不在 deny),而在 settings.json 加 deny 会同时锁住席位自己的立卡通道,故作为待决问题上报而不硬加。

席位意见 —(留空,由席位定稿)

你要做的 — 本 PR 走 Tier S 席内复核落地,不需要您点击。唯一待您一字的是第 2 项机械锁的形态(报告 open_questions):A 以 os-dev.md frontmatter 的 agent 级 PreToolUse hook 只锁 dev 会话 / B 暂不加锁、只靠报告契约与 ACCEPT 处置 / C 其它。

Acceptance notes

  • noted, not filed: Prior rulings read: (tool-printed by check-prior-rulings.mjs, ids only; decision-analysis.md :45) and the ruled Prior rulings on this card: (hand-written, id + one sentence each) are now two spellings for one fact on a card face; the tool could print a stub of the second. 承接者: the skills seat (this lane), when a card asks for it — no PR heads for check-prior-rulings.mjs today.
  • noted, not filed: SKILL.md :223 still reads 「分诊座位唯一生产 … duplicate_of」 with the item-8 exception only at :370; no 120-byte spelling of the exception fits on :223 (four variants measured 125–153 B). 承接者: the next PR that touches :223.
  • noted, not filed: os-dev.md :48 keeps 「未演练漂移」 while the seat-side list (SKILL.md :351) says 「休眠」 — same class, two words. 承接者:无.
  • noted, not filed: the record's 「Tier H — the maintainer merges by hand」 for .claude/** is the superseded boundary; PR fix(pm): repair two carriers still spelling the superseded references-tier boundary #19379 repairs the two carriers still spelling it (out of scope here; fix(pm): repair two carriers still spelling the superseded references-tier boundary #19379 remains open).

Generated by Claude Code

…tems 1 2 3 4 5 8 — as in-place charter deltas

Filing threshold inverted (three classes qualified: reachable today, named
producer; observation/dormant/zero-pull findings not filed, no digest, no
quota); devs do not file — report entries carry `class: a|b|c` + evidence
or `carrier:`, the seat disposes each entry in one ACCEPT line; triage
merges at first grading (same file + same mechanism), same family is linked
and batched, in-flight never merged, execution seats raise `pm:retriage`
with the reading; same-assignee duplicates closed by the holding seat; an
escalated card names which half it carries; a ruled card re-enters the
decision box only with `Prior rulings on this card:`; the director presents
the first batch after the first five same-family cards, class-1 screening
per batch, cheap-scan ordering, verifiable criterion.

Net 0 lines in every ratcheted file: each new rule paid by retiring a
second pointer to the same reference file or a line restated verbatim in a
sibling. Every line at or under 120 bytes. state-machine.md untouched (no
`needs-user-decision` section; the intake duty's home is SKILL.md).

Claude-Session: https://claude.ai/code/session_017ETYWqMQD4qMtZzAGovWNi
Co-authored-by: Claude <noreply@anthropic.com>
@os-steve os-steve added the skip-changeset PR has no user-facing published change; bypasses the changeset gate label Sep 20, 2026 — with Claude
@github-actions github-actions Bot added size/s documentation Improvements or additions to documentation labels Sep 20, 2026

Copy link
Copy Markdown
Collaborator Author

Contract review

Served-tier: CONTRACT_REVIEW_TIER
Head-sha: a2665ce1a7074c3863cb63372fe86367d1f62bbb

① Derived judgments

  • Published accept set / public surface: none moves — four Tier S charter files (.claude/skills/pm-dispatch/SKILL.md 813 / 813, .claude/agents/os-dev.md 403 / 403, references/core-rules.md 151 / 151, references/lanes/director.md 72 / 72; +24 / −24, net 0 in every ratcheted file, widest landed line 120 B), state-machine.md untouched at 42 / 42. check-governed-merges --pr 19449: GOVERNED — Tier S (.claude/** by the register), this record is the landing carrier; queue landing by the seat. Judged correct.
  • The six ruled items, each read against the record 5750077963's words and the line that lands: 1SKILL.md :351 「(a) 须今天可达,(c) 须具名生产者;观察、休眠、零拉动 ⛔ 不立卡、不进汇总卡、无配额」 (the two refused shapes, digests and quotas, closed by name), os-dev.md :45 / :46 / :48, core-rules.md :87 twin. 2SKILL.md :777–:779 (every out_of_scope_findings entry class: a|b|c + evidence or carrier:; neither ⇒ Acceptance notes; dev 不立卡; the ACCEPT disposes each entry in one line filed #N / Acceptance notes / dropped — 因; the seat files the three-class ones in the fix repo), os-dev.md :49–:50 / :60–:61 / :65 / :376 (the report template), core-rules.md :151 twin; the mechanical lock MEASURED and not written — nothing refuses REST POST …/issues today, MCP issue_write is already denied, and a settings.json deny would bind the seats' own filing channel (rest-channel.md :41) — the conflict the claim anticipated, correctly carried as an open question rather than a rule that breaks filing. 3 — :368–:370 (同文件同机制 首触定级即并; 同族异缺陷 互链排同批; 在飞永不并; 执行席 pm:retriage naming the two cards). 8 — :370 tail (同 assignee 者自关后卡). 4(i) — :458 (an escalated card's first line names its half; missing ⇒ neither queue nor box). 4(ii) — :357 + :358 (Prior rulings on this card: at intake; a ruled thread re-entering without it is refused, pm:retriage to the filer) — landed in SKILL.md's decision-box duty line rather than state-machine.md, the deviation the seat accepts: the intake duty already lives at :357 and :40–:41 of the state machine govern only who hangs and removes the label. 5director.md :40–:42 (首批读完前 ≤5 张同族卡即呈; 一类自裁按批过, ⛔ 不先扫全箱; 便宜扫描取下五张; 判据 开场标记→首批 ≤ 读五张), the old :40 tail kept verbatim. Items 7 and 9 re-proposed nowhere. Judged correct.
  • Paid for by seven retirements the seat re-read on this head: five second pointers in SKILL.md (:321 · :560 · :650 · :657 — each file still pointed at from a surviving line, counted: dispatch-runbook.md ×4, landing-operations ×4 after) and :771 (its rule at director.md :19 「不占 domain:* 车道 … 永不认领 backlog、永不写码」, its pointer at SKILL.md :57 and :675); two in director.md — :42 (「一行回批即全链执行」 restated at decision-analysis.md :14 「⛔ 不为它另起请示轮」 and SKILL.md :728 「四件同笔」) and :51 (a pointer to SKILL.md :392–:399). Nothing retired lost a rule. Evidence, seat-run in a detached worktree: check-skill-line-ratchet.mjs exit 0, check-skill-id-lint.mjs exit 0 (27 files), check-governed-prose.mjs exit 0; merge-tree vs origin/main 57ceb9d: 0 conflicts; CI on a2665ce: 30 check runs, 1 still running, 0 red. The dev's derived union 23 / 23 exit 0 with --ran reconciled, check:pm-dispatch-gates 1883 cases exit 0 captured.

② Semver level

None — nothing published (.claude/** is in no released package's files[]); skip-changeset on the PR is the correct declaration. Judged correct.

③ Boundary flags

Two open_questions, both for the maintainer, ⛔ not landing blockers: (1) item 2's mechanical lock — A (an agent-scoped PreToolUse hook declared in os-dev.md frontmatter, after measuring that the harness fires agent-scoped hooks for subagents) / B (no mechanical lock: the report contract landed here plus the ACCEPT's api_writes audit) / C (a subagent-keyed branch in an existing guard); the seat's reading is B now and A only after the measurement — a shared deny is the one shape refused. (2) two spellings for prior rulings on a card face (Prior rulings read: tool-printed vs Prior rulings on this card: ruled) — B, leave as landed; a stub-printing card only when pulled. Both go to the seat post's 待您 list. All four mechanism assumptions confirmed (Tier S by the register, the record's Tier H being the superseded boundary PR #19379 repairs; 0 of 21 open PRs on the five files; the three gates in the union; the state-machine.md row present at 42). Deviations read and accepted. Four noted, not filed items, each with a carrier or 「承接者:无」 — the :223 exception spelling (no 120 B fit) and the 休眠 / 未演练漂移 word pair are recorded as seat items.

Implemented-by: claude/issue-19340-filing-directive-items-1-5-8
Reviewed-by: session_017ETYWqMQD4qMtZzAGovWNi

VERDICT: PASS


Generated by Claude Code

@os-steve
os-steve marked this pull request as ready for review September 20, 2026 22:48
@os-steve
os-steve added this pull request to the merge queue Sep 20, 2026
Merged via the queue into main with commit be488ce Sep 20, 2026
32 checks passed
@os-steve
os-steve deleted the claude/issue-19340-filing-directive-items-1-5-8 branch September 20, 2026 23:12
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentation Improvements or additions to documentation size/s skip-changeset PR has no user-facing published change; bypasses the changeset gate

Projects

None yet

1 participant