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
Filed bydomain:spec seat 4 (session_01AmH9bKvGoLjiY86Q4Z3og2, seat post #18917) from a maintainer conversation on 2026-09-21. ⛔ Not a claim, ⛔ not a ruling — routing and grading are triage's.
Status at 2026-09-21T03:43Z: decisions A and C are SETTLED by the ruling below. B and D are open.
The question
How much of the PM gate apparatus should hold a hard landing gate, how much at-tier contract review is worth its agent cost, and which of the existing instruments are kept, simplified or retired — at a stage where dev time should go to product features and the instruments should stop consuming continuous development.
What the maintainer said, verbatim and untranslated
READY, clean, 30 green / 5 skipped / 0 red, at-tier review PASS — blocked 12 hours by 7 tells its own review ruled false
true positives from that instrument, across 8 rounds
0
lane queue composition
92 cards: 81 product, 11 tooling
comment-to-total ratio in the five large instruments
39%–52% — half of the bulk is prose about the instrument
while this card sat open
the tooling tree gained its 27th file, close-cards.mjs, 1,145 lines, landed the same day (#19479)
⭐ The finding that changes the cost of fixing this
The two limbs that have actually blocked landings are not CI gates. Measured: grep -rl across .github/workflows/ returns no file referencing check-widening-tells or check-clause2-carriers. They refuse only because the skill text tells the seat to treat a non-zero exit as a landing blocker:
.claude/skills/pm-dispatch/SKILL.md:649 — 「开 PR check-clause2-carriers --pair N 0 才请审」
⇒ Loosening them is an edit to two sentences under .claude/** (Tier S, landed by the owning seat). It touches no workflow, no product code, and cannot make CI red. The 12 hours #19314 lost were spent on a rule, not on a test.
Every instrument, with its verdict
CI = referenced by a workflow, so it can fail a PR. SEAT = run only by the dispatch loop, so it blocks only through skill text.
instrument
lines
changes
born
in 14d
wired
verdict
check-governed-merges
6,146
31
08-18
9
CI + the register
KEEP, unchanged. Answers a definite question — is this path governed, at what tier. Correct every time it was exercised.
check-governed-queue-guard
4,535
18
08-25
9
CI
KEEP. Enforced #19351 correctly at the queue; the one defect found in it was stale prose, not enforcement.
dispatch-gates
28,769
163
08-10
34
CI ×13 workflows
KEEP, FREEZE. The most-changed file in the tree and the most load-bearing — 13 workflows import it. ⛔ No refactor, no new gate families; changes only when a workflow it already serves breaks.
check-half-states
36,717
121
08-10
52
CI ×8, report-only
SIMPLIFY. The largest file in the repo's tooling and the fastest-churning (52 changes in 14 days). It blocks nothing, so it costs no throughput — it costs dev time. Proposal D1 below.
check-clause2-carriers
9,985
42
08-31
33
SEAT
SPLIT. Keep C6 (does a review of record exist for this head) — a definite question, cheap, catches a real hole. Demote C5 (widening tells) to report-only — already dispatched.
check-widening-tells
6,107
18
09-07
18
SEAT
REPORT-ONLY + FREEZE DEVELOPMENT. 0 true positives, 5 open false-positive cards, 14 days old and never stable. It stays as a hint printed beside the review; ⛔ no further dev on it, and 「the checker mis-fired again」 findings are closed by one sentence from a seat, not by a PR.
the other 21 scripts/pm/*.mjs
29,629
—
—
—
mixed
NO SWEEP. ⛔ Deleting instruments is itself instrument work. They are frozen where they sit; each is revisited only when it actually fails.
The principle behind the column, stated so the next case is decided without another card:
An instrument that answers a question with a definite answer (is this path governed? does a review of record exist? is this branch shaped as the contract requires?) may hold a hard gate. An instrument that guesses at intent — 「is this diff widening a contract」, which its own header says it cannot prove — may print, and may never refuse.
Why 「不停的开发」 happens, and the only rule that stops it
Every one of the 18 changes to check-widening-tells was a false positive being patched. A guessing instrument generates its own maintenance: each mis-fire looks like a bug in the instrument, so it earns a card, a dev, a review and a PR. A definite instrument does not: all five open false-positive cards in this lane name check-widening-tells, and none names the register.
⇒ The rule: a report-only instrument gets no dev time for being wrong. A wrong hint costs one sentence in a review record. Only a gate earns a fix when it is wrong, which is another reason to have few gates.
The independence question, answered honestly
⚠️ The maintainer's counter is correct and is recorded: 「agent 车队都是ai,不会有人去看」. The reviews are AI reading AI; this is not human oversight. What it is, measured: an independent second read with an adversarial brief. Every catch below was missed by the agent that wrote the diff and found by a different agent given the same diff and a "find what is wrong with it" brief.
the regenerated upgrade guide still promised upgrading 「from any past major」 while --from 15 throws; upgrading.mdx:218's --to 16 became an empty range; a wrong conversion count headed for the customer-facing CHANGELOG
a rules line that dropped its ALL quantifier, partitioning surfaces instead of pull requests; a self-test line printed on every run naming the wrong actor
no
⇒ The catches concentrate in things that ship to users and to agents — docs, CHANGELOG, rules text. For that class 「后续总会测试出来」 does not hold: no test suite goes red because a document lies.
The 11 tooling cards are not dispatched, including 「the checker mis-fired again」 findings.
At-tier review only for what ships to users or agents — docs, CHANGELOG, published schemas, rules text. ⇒ This settles A as A1: internal-code defects go to tests and user reports.
Still open — the maintainer's to settle
B / D1. How far check-half-states is cut. 36,717 lines, 52 changes in 14 days, report-only, 8 workflows depend on it. It is the single largest consumer of instrument dev time in the repo. Options:
action
cost
risk
D1a(this seat's recommendation)
freeze it — no new rows, no refactor; a row is fixed only when a workflow that consumes it breaks
zero dev time, zero PRs
its known-stale rows stay stale — H43 is measured tier-blind: governedTierFor occurs 0 times in the whole 36,717-line file, against 10 in the register and a control symbol (GOVERNED_APPROVERS) that greps 7 hits in the same file
D1b
cut it to the rows a workflow actually reads, delete the rest
one dev PR on a 36k-line file, touching 8 workflows
a deletion PR on the most-depended-on report is itself a throughput risk
D1c
leave it as is
zero decision cost
it keeps earning ~4 commits a week
D2. Whether the freeze is written into the skill — i.e. whether .claude/skills/pm-dispatch/ gains one line saying 「仪器只在挡住真实工作时才改;只报告的仪器报错不配 dev」. Writing it is Tier S and cheap; not writing it means the next seat re-derives this conversation from scratch.
What this seat does now
The six are in force from 2026-09-21T03:43Z. D1a is the default absent a ruling on B/D — frozen, not cut, because cutting is more instrument work. ⛔ Stated so that silence is not read as agreement with something never chosen.
Filed by
domain:specseat 4 (session_01AmH9bKvGoLjiY86Q4Z3og2, seat post #18917) from a maintainer conversation on 2026-09-21. ⛔ Not a claim, ⛔ not a ruling — routing and grading are triage's.Status at 2026-09-21T03:43Z: decisions A and C are SETTLED by the ruling below. B and D are open.
The question
How much of the PM gate apparatus should hold a hard landing gate, how much at-tier contract review is worth its agent cost, and which of the existing instruments are kept, simplified or retired — at a stage where dev time should go to product features and the instruments should stop consuming continuous development.
What the maintainer said, verbatim and untranslated
What was measured
scripts/pm/**totalpackages/spec/src, non-test)scripts/pm/**, 127 touch nothing butscripts/pm/**(8.9% of all commits are pure instrument work)packages/**check-widening-tells.mjs:102-104close-cards.mjs, 1,145 lines, landed the same day (#19479)⭐ The finding that changes the cost of fixing this
The two limbs that have actually blocked landings are not CI gates. Measured:
grep -rlacross.github/workflows/returns no file referencingcheck-widening-tellsorcheck-clause2-carriers. They refuse only because the skill text tells the seat to treat a non-zero exit as a landing blocker:.claude/skills/pm-dispatch/SKILL.md:649— 「开 PRcheck-clause2-carriers --pair N0 才请审」.claude/skills/pm-dispatch/references/contract-review.md:41/:43⇒ Loosening them is an edit to two sentences under
.claude/**(Tier S, landed by the owning seat). It touches no workflow, no product code, and cannot make CI red. The 12 hours #19314 lost were spent on a rule, not on a test.Every instrument, with its verdict
CI= referenced by a workflow, so it can fail a PR.SEAT= run only by the dispatch loop, so it blocks only through skill text.check-governed-mergescheck-governed-queue-guarddispatch-gatescheck-half-statescheck-clause2-carrierscheck-widening-tellsscripts/pm/*.mjsThe principle behind the column, stated so the next case is decided without another card:
Why 「不停的开发」 happens, and the only rule that stops it
Every one of the 18 changes to
check-widening-tellswas a false positive being patched. A guessing instrument generates its own maintenance: each mis-fire looks like a bug in the instrument, so it earns a card, a dev, a review and a PR. A definite instrument does not: all five open false-positive cards in this lane namecheck-widening-tells, and none names the register.⇒ The rule: a report-only instrument gets no dev time for being wrong. A wrong hint costs one sentence in a review record. Only a gate earns a fix when it is wrong, which is another reason to have few gates.
The independence question, answered honestly
--from 15throws;upgrading.mdx:218's--to 16became an empty range; a wrong conversion count headed for the customer-facing CHANGELOGpackages/cliintegration test the dev never ran@exampledocblock left by a removed field⇒ The catches concentrate in things that ship to users and to agents — docs, CHANGELOG, rules text. For that class 「后续总会测试出来」 does not hold: no test suite goes red because a document lies.
SETTLED — the six the maintainer agreed to
Ruled 2026-09-21: 「决策卡创建完告诉我,六条我同意」.
file:lineevidence, the at-tier review rules on it.--pairby seat fiat.toolsuniverse rule can only REMOVE findings — what would a runtimetoolcreate actually be judged by? (ruling #203/4 group B) #19477, spec(lint): wire the inert runtime-create rules foraction/hook/report/skill/email_template/mapping— six types, one edit (ruling #203/4 group A+C) #19474, [finding]datasourceis a 14thallowRuntimeCreate: truetype with zero liveruntimeTypesdeclarations — invisible to #19275's census because its registry entry is the only MULTI-LINE one #19389, The /packages read doors' declared request schemas and their actual query reads diverge in BOTH directions —?limit=and?cursor=are declared and never read,?type=is read and never declared #17667.Still open — the maintainer's to settle
B / D1. How far
check-half-statesis cut. 36,717 lines, 52 changes in 14 days, report-only, 8 workflows depend on it. It is the single largest consumer of instrument dev time in the repo. Options:governedTierForoccurs 0 times in the whole 36,717-line file, against 10 in the register and a control symbol (GOVERNED_APPROVERS) that greps 7 hits in the same fileD2. Whether the freeze is written into the skill — i.e. whether
.claude/skills/pm-dispatch/gains one line saying 「仪器只在挡住真实工作时才改;只报告的仪器报错不配 dev」. Writing it is Tier S and cheap; not writing it means the next seat re-derives this conversation from scratch.What this seat does now
The six are in force from 2026-09-21T03:43Z. D1a is the default absent a ruling on B/D — frozen, not cut, because cutting is more instrument work. ⛔ Stated so that silence is not read as agreement with something never chosen.
Generated by Claude Code