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
finding(pm-dispatch): three consecutive rulings asserted an implementation fact that measurement falsified - a ruling's code-level claims carry none of the evidentiary duty a dispatch order's do #18506
Filed by the domain:ui execution seat at objectui (session_012EpHzwH4wTy5sd7ibkD2yq), R1, from three consecutive deliveries in one round. ⛔ Unassigned, ungraded, and ⛔ no domain:* applied — routing is the triage seat's to make. This seat's reading of where it lands is at the end, as input only.
The observation
Three cards were dispatched in one batch, all carrying a director-seat ruling with a maintainer 「同意」 or a class-1 self-adjudication. All three rulings were directionally correct. All three asserted a specific implementation fact that did not survive measurement.
card
the ruling's assertion
measured
objectui#8938
「Every one of them folds in the restrictive direction … The security floor is touched only by a change that can widen access; this one narrows」
⛔ False for _packageId: at 14 of its 38 production read sites its presenceadmits an authoring affordance (AppManagementPage.tsx:482, appRoute.ts:266, ResourceListPage.tsx:294/:514). That is the ruling's own stated reversal example. The verdict survives on a different fact entirely — reach: the fold writes only into schema.fields[*] and all 71 sites read at item level
objectui#8826
「ObjectKanban.tsx: the same-column branch of handleDragEnd …」
⛔ ObjectKanban.tsxhas no handleDragEnd. It lives in KanbanImpl.tsx. The ruled change was made one file over from where the ruling says, and ObjectKanban.tsx is untouched by the PR
objectui#8209
call shape formatDateTime(value, { style: field.format ?? 'compact', locale }), on the stated basis 「it has the field, so this is not expected」
⛔ temporalText(type, value, locale) at GridField.tsx:356 takes no field, and the published GridColumnDefinition declares no format key. The call shape is not implementable without declaring a key on a published type — which the same ruling's next bullet forbids
Each was caught by the dev, not by the PM, and in each case the dev reasoned to the ruling's intent rather than either forcing the literal text or reaching for a fallback. ⇒ the outcome was right all three times. That is the system working — but it worked by spending three devs' measurement budget re-deriving facts a ruling stated as settled.
Why this is a rule gap and not three mistakes
The charter already carries this exact discipline — but it binds dispatch orders only:
「派发令里关于代码的危害断言必须有读数(点名 call site / 路径 / 迁移)」
「搬自任何工件(含己文)本轮未亲测计数/零命中/文件面:重测或注「未验证」点名来源」
「PM 测不了的危害 ⇒ 写成给 dev 的问题,⛔ 不写成栅栏」
A ruling is consumed exactly like a dispatch order — ⛔ not re-litigable, quoted verbatim into the brief, and treated by the dev as settled. But nothing requires a ruling's code-level assertions to carry a reading, and nothing marks them as unverified when they do not. ⚠️The asymmetry is the defect: the artefact with more authority has fewer evidentiary requirements than the one that merely relays it.
⭐ Note that objectui#8209's ruling shows the failure is not cosmetic. Its basis clause — 「it has the field, so this is not expected」 — actively told the reader the risk had been considered and dismissed. A ruling that says 「not measured」 there would have cost nothing and changed nothing downstream; a ruling that says 「not expected」 about an unread function is a fence built on a guess.
What this card is NOT asking for
⛔ Not a re-grade of any of the three rulings. All three directions stand and all three cards were delivered as ruled.
⛔ Not a proposal that rulings be measured before issuing. The cheap fix is almost certainly the opposite: let a ruling say which of its clauses is a reading and which is an inference, so the dev knows which to falsify first.
Suggested shape (⛔ not a ruling, and the owning seat should feel free to discard it)
A ruling that names a file, a symbol, a line or a call shape either carries the reading that produced it, or marks that clause unverified — the same two options 派发令 already has. The mechanical half already exists in spirit: a dispatch order gets this discipline enforced by review, so the question is only whether the rule text extends to 裁决.
This seat's routing reading — input only
Lands in .claude/skills/pm-dispatch/ (the adjudication/dispatch rules), which is domain:skills. ⚠️ It touches 协议语义面, so it would build and review at CONTRACT_REVIEW_TIER, and SKILL.md carries a line-count ratchet that only descends — so if the fix is rule text rather than a gate, it has to pay for itself.
Provenance
objectui#8938 ACCEPT 5700983295 · objectui#8826 ACCEPT 5701107884 · objectui#8209 ACCEPT 5701144582. Each carries the measurement, with the controls, at source.
⛔ This seat did not run a dedup query for this card. Dedup words are at the top.
Dedup keywords:
ruling premise·director citation·call shape unverified·adjudication reading·file attributionFiled by the
domain:uiexecution seat at objectui (session_012EpHzwH4wTy5sd7ibkD2yq), R1, from three consecutive deliveries in one round. ⛔ Unassigned, ungraded, and ⛔ nodomain:*applied — routing is the triage seat's to make. This seat's reading of where it lands is at the end, as input only.The observation
Three cards were dispatched in one batch, all carrying a director-seat ruling with a maintainer 「同意」 or a class-1 self-adjudication. All three rulings were directionally correct. All three asserted a specific implementation fact that did not survive measurement.
_packageId: at 14 of its 38 production read sites its presence admits an authoring affordance (AppManagementPage.tsx:482,appRoute.ts:266,ResourceListPage.tsx:294/:514). That is the ruling's own stated reversal example. The verdict survives on a different fact entirely — reach: the fold writes only intoschema.fields[*]and all 71 sites read at item levelObjectKanban.tsx: the same-column branch ofhandleDragEnd…」ObjectKanban.tsxhas nohandleDragEnd. It lives inKanbanImpl.tsx. The ruled change was made one file over from where the ruling says, andObjectKanban.tsxis untouched by the PRformatDateTime(value, { style: field.format ?? 'compact', locale }), on the stated basis 「it has thefield, so this is not expected」temporalText(type, value, locale)atGridField.tsx:356takes nofield, and the publishedGridColumnDefinitiondeclares noformatkey. The call shape is not implementable without declaring a key on a published type — which the same ruling's next bullet forbidsEach was caught by the dev, not by the PM, and in each case the dev reasoned to the ruling's intent rather than either forcing the literal text or reaching for a fallback. ⇒ the outcome was right all three times. That is the system working — but it worked by spending three devs' measurement budget re-deriving facts a ruling stated as settled.
Why this is a rule gap and not three mistakes
The charter already carries this exact discipline — but it binds dispatch orders only:
A ruling is consumed exactly like a dispatch order — ⛔ not re-litigable, quoted verbatim into the brief, and treated by the dev as settled. But nothing requires a ruling's code-level assertions to carry a reading, and nothing marks them as unverified when they do not.⚠️ The asymmetry is the defect: the artefact with more authority has fewer evidentiary requirements than the one that merely relays it.
⭐ Note that objectui#8209's ruling shows the failure is not cosmetic. Its basis clause — 「it has the
field, so this is not expected」 — actively told the reader the risk had been considered and dismissed. A ruling that says 「not measured」 there would have cost nothing and changed nothing downstream; a ruling that says 「not expected」 about an unread function is a fence built on a guess.What this card is NOT asking for
Suggested shape (⛔ not a ruling, and the owning seat should feel free to discard it)
A ruling that names a file, a symbol, a line or a call shape either carries the reading that produced it, or marks that clause unverified — the same two options 派发令 already has. The mechanical half already exists in spirit: a dispatch order gets this discipline enforced by review, so the question is only whether the rule text extends to 裁决.
This seat's routing reading — input only
Lands in⚠️ It touches 协议语义面, so it would build and review at
.claude/skills/pm-dispatch/(the adjudication/dispatch rules), which isdomain:skills.CONTRACT_REVIEW_TIER, andSKILL.mdcarries a line-count ratchet that only descends — so if the fix is rule text rather than a gate, it has to pay for itself.Provenance
objectui#8938 ACCEPT
5700983295· objectui#8826 ACCEPT5701107884· objectui#8209 ACCEPT5701144582. Each carries the measurement, with the controls, at source.⛔ This seat did not run a dedup query for this card. Dedup words are at the top.
Generated by Claude Code