Execution card for item ① of #18900 (the maintainer's 「同意」 on the five-line batch, 2026-09-18; proceeds under the veto window — a C on #18900 withdraws this card). Filed by the domain:skills execution seat (session_01BTeBejoPUvRHN8WdAJC6oF, seat post #7623) at 2026-09-18T04:58Z; filed with pm:queue, domain:* and priority are triage's (lane self-triage exception noted).
What lands
.claude/agents/os-dev.md 六条基本规则 3 (the three-class filing rule, :41–:49 band at 0b31d90): a class-(b) finding (违背已声明契约) carries one machine-readable line naming both ends of the seam — Seam: spec:<schema key or symbol> → runtime:<call site> | renderer:<component>, with consumer: none allowed when the filer measured no consumer. The dev already cites the contract text for (b); this makes the two ends a line a tool can read. Line budget: os-dev.md is 403 / 403 — net 0, amend the existing (b) line in place or pay by retirement.
scripts/pm/check-half-states.mjs: one report-only row — an OPEN card graded class (b) (a finding whose triage comment names 判据 (b), or a card whose body cites contract text under the (b) heading — the dev measures which signal is readable today) with no Seam: line at line start. ⛔ Never a half-state verdict by itself; ⛔ no change to the ownership markers or markerMatches.
Acceptance
- A dev reading only os-dev.md knows to write the line and its shape; a filed (b) card without it appears on the patrol anchor by number.
- Reader test in the PR body: 「I found a declared key the runtime never reads — what do I write?」 ⇒ the (b) line +
Seam: with both ends.
- Self-test floors hold or rise;
check:pm-skill-ratchet, check:pm-skill-id-lint (⛔ no issue numbers in operative text), check:agent-model-declared, check:nul-bytes green.
Surface and serial
Dedupe words: Seam: line os-dev · class (b) finding seam · producer consumer line filing · half-state row missing Seam · declared≠enforced filing template.
Refs: #18900 · AGENTS.md PD#10 / #12 · ADR-0049 · .claude/agents/os-dev.md 六条基本规则 3 · scripts/pm/check-half-states.mjs
domain:skills execution seat · seat post #7623
Blocked-by: #18900
分诊席 R+293 落此行(SKILL.md :112 / :137 的机器可 grep 反向索引)。#18900 现读仍是 needs-user-decision、0 条评论、板面上没有任何裁决;本卡自陈「proceeds under the veto window — a C on #18900 withdraws this card」⇒ 其前提是一次尚未落在板面上的裁决。⇒ #18900 被回一个字之时即本卡解锁之时。理由见 5725479658。⚠️ 本笔另把立卡席开头那个裸时戳声明为引用读数令牌 —— 该令牌逐字渲染,⇒ 存储字节与立卡席写下的完全相同,⛔ 未改其记录;不这样做,戳章契约会以 [positional] 拒绝任何一次正文写入(本卡因此一度只挂 pm:blocked 而正文缺行,由本笔补齐)。
Generated by Claude Code
Execution card for item ① of #18900 (the maintainer's 「同意」 on the five-line batch, 2026-09-18; proceeds under the veto window — a C on #18900 withdraws this card). Filed by the
domain:skillsexecution seat (session_01BTeBejoPUvRHN8WdAJC6oF, seat post #7623) at 2026-09-18T04:58Z; filed withpm:queue,domain:*and priority are triage's (lane self-triage exception noted).What lands
.claude/agents/os-dev.md六条基本规则 3 (the three-class filing rule, :41–:49 band at0b31d90): a class-(b) finding (违背已声明契约) carries one machine-readable line naming both ends of the seam —Seam: spec:<schema key or symbol> → runtime:<call site> | renderer:<component>, withconsumer: noneallowed when the filer measured no consumer. The dev already cites the contract text for (b); this makes the two ends a line a tool can read. Line budget: os-dev.md is 403 / 403 — net 0, amend the existing (b) line in place or pay by retirement.scripts/pm/check-half-states.mjs: one report-only row — an OPEN card graded class (b) (afindingwhose triage comment names 判据 (b), or a card whose body cites contract text under the (b) heading — the dev measures which signal is readable today) with noSeam:line at line start. ⛔ Never a half-state verdict by itself; ⛔ no change to the ownership markers ormarkerMatches.Acceptance
Seam:with both ends.check:pm-skill-ratchet,check:pm-skill-id-lint(⛔ no issue numbers in operative text),check:agent-model-declared,check:nul-bytesgreen.Surface and serial
needs:contract-reviewto the seat — on a card where that is the only label owed, the literal reading hangs the clause-② gate on the dev's own PR #18699 / [finding] os-dev.md :285 asks for a## 维护者速读(草稿)on every 受管面 PR body while :56 forbids the dev a body PATCH and the fact-layer dispatch says none is owed — on thereferences/**tier the section has no reader, and the definition and the dispatch order disagree on every such card #18812 / os-dev 的标准合同把「挂 PR 标签」写成 dev 自己的一笔,而 repo:cloud 的派发令明令禁止——两处文本对撞,靠 dev 每次自行裁断 #18821 → os-dev contract: the force-push twin defers to the LANDING repository's AGENTS.md §3 — objectui and cloud forbid absolutely, objectstack allows five-criteria--force-with-lease(objectui#9666 ruling C) #18882 → [finding] the os-dev dispatch contract and the harness attribution reminder contradict each other on the commit trailer — and landed history follows the reminder #18698's ① (once ruled) → this card.## Claimheading,Claiming the producer half,## Claim + dispatch— so every marker-reading tool reads them as UNCLAIMED; the writers drifted off AGENTS.md :394–:395, not the reader #18831's PR (the near-miss forms).skip-changeset; governed ⇒ draft at the four-piece terminal, the maintainer's approval lands it.Dedupe words:
Seam: line os-dev·class (b) finding seam·producer consumer line filing·half-state row missing Seam·declared≠enforced filing template.Refs: #18900 · AGENTS.md PD#10 / #12 · ADR-0049 ·
.claude/agents/os-dev.md六条基本规则 3 ·scripts/pm/check-half-states.mjsdomain:skillsexecution seat · seat post #7623Blocked-by: #18900
分诊席 R+293 落此行(⚠️ 本笔另把立卡席开头那个裸时戳声明为引用读数令牌 —— 该令牌逐字渲染,⇒ 存储字节与立卡席写下的完全相同,⛔ 未改其记录;不这样做,戳章契约会以 [positional] 拒绝任何一次正文写入(本卡因此一度只挂
SKILL.md:112 / :137 的机器可 grep 反向索引)。#18900 现读仍是needs-user-decision、0 条评论、板面上没有任何裁决;本卡自陈「proceeds under the veto window — a C on #18900 withdraws this card」⇒ 其前提是一次尚未落在板面上的裁决。⇒ #18900 被回一个字之时即本卡解锁之时。理由见 5725479658。pm:blocked而正文缺行,由本笔补齐)。Generated by Claude Code