Filed by the domain:ui execution seat, session_011QreXiyMEqKLN4U5daMPVa (os-tesla), 2026-09-13T15:0xZ, as the durable carrier for a cross-seat request. ⛔ Not claimed. ⛔ No domain:*, no type and no priority applied — producing those is the triage seat's alone, and this card is deliberately filed without them rather than self-routed.
Suggested reader: the seat that owns the governed surface (skills/**) and can run the contract-review tier.
The one executable criterion
Review the skills/objectui/rules/protocol.md hunk of PR objectui#9400 at the contract-review tier, and record PASS or FAIL on that PR.
Why this is a card and not a comment
A cross-seat request is work — it needs a reading, a card and an authorization — so a review note or a seat-post knock ⛔ may never be its only carrier. This is that carrier.
Why the dispatching seat cannot do it itself
Two rules pull opposite ways and the stricter one wins:
- Clause ① puts a card that changes a protocol-semantic surface (
skills/** is one) at the contract-review tier;
- the seat charter says a seat other than
skills or spec ⛔ never spawns that tier.
⇒ the domain:ui seat built at the default judgement tier and applied the charter's own compensating control: the skills-face hunk is reviewed by a contract-review-tier seat, and the out-of-tier seat hands it over first. This is the handover. ⛔ The domain:ui seat neither reviewed nor endorsed that hunk; its ACCEPT (objectui#9108, comment 5654073520) is explicitly scoped to the code half.
What the hunk is
Ruling on objectui#9108 (maintainer 「同意」, 2026-09-13) made a config-bag key parked under props refused by name, loudly, instead of silently dropped. skills/objectui/rules/protocol.md currently states the old symptom ("silently dropped"), which becomes false the moment the refusal lands, so the ruling required the sentence to move in the same round.
- Measured size: 1 file, 6 added / 3 removed, net +3 — inside the net ≤ +4 line budget the dispatching seat set.
- The
❌ WRONG / ✅ CORRECT classification and both JSON example blocks are unchanged; only the symptom sentence moved.
- ⚠️ Carried over from the dev's own
out_of_scope_findings, because it bears on this review: the rule's ❌ WRONG example is props: { title: … }, a non-predicate key, which is still silently dropped rather than refused. That is correct and deliberate under the ruling (only the eight node-gate keys became loud), but it means the example does not demonstrate the half of the rule the sentence now describes. Worth a reviewer's judgement.
State of the PR
PR objectui#9400 is draft, parked awaiting a human merge (governed surface ⇒ ⛔ never the queue, ⛔ never a seat approval), carries needs-user-decision, and review is requested from both governed approvers. ⇒ this review is ⛔ not blocking a queue slot; it is the missing tier coverage on the record.
Refs: objectui#9108 (the card) · PR objectui#9400 · objectui#9144 (the closed PR whose detection half was reused).
Generated by Claude Code
Filed by the
domain:uiexecution seat,session_011QreXiyMEqKLN4U5daMPVa(os-tesla), 2026-09-13T15:0xZ, as the durable carrier for a cross-seat request. ⛔ Not claimed. ⛔ Nodomain:*, no type and no priority applied — producing those is the triage seat's alone, and this card is deliberately filed without them rather than self-routed.Suggested reader: the seat that owns the governed surface (
skills/**) and can run the contract-review tier.The one executable criterion
Review the
skills/objectui/rules/protocol.mdhunk of PR objectui#9400 at the contract-review tier, and record PASS or FAIL on that PR.Why this is a card and not a comment
A cross-seat request is work — it needs a reading, a card and an authorization — so a review note or a seat-post knock ⛔ may never be its only carrier. This is that carrier.
Why the dispatching seat cannot do it itself
Two rules pull opposite ways and the stricter one wins:
skills/**is one) at the contract-review tier;skillsorspec⛔ never spawns that tier.⇒ the
domain:uiseat built at the default judgement tier and applied the charter's own compensating control: the skills-face hunk is reviewed by a contract-review-tier seat, and the out-of-tier seat hands it over first. This is the handover. ⛔ Thedomain:uiseat neither reviewed nor endorsed that hunk; its ACCEPT (objectui#9108, comment5654073520) is explicitly scoped to the code half.What the hunk is
Ruling on objectui#9108 (maintainer 「同意」, 2026-09-13) made a config-bag key parked under
propsrefused by name, loudly, instead of silently dropped.skills/objectui/rules/protocol.mdcurrently states the old symptom ("silently dropped"), which becomes false the moment the refusal lands, so the ruling required the sentence to move in the same round.❌ WRONG/✅ CORRECTclassification and both JSON example blocks are unchanged; only the symptom sentence moved.out_of_scope_findings, because it bears on this review: the rule's❌ WRONGexample isprops: { title: … }, a non-predicate key, which is still silently dropped rather than refused. That is correct and deliberate under the ruling (only the eight node-gate keys became loud), but it means the example does not demonstrate the half of the rule the sentence now describes. Worth a reviewer's judgement.State of the PR
PR objectui#9400 is draft, parked awaiting a human merge (governed surface ⇒ ⛔ never the queue, ⛔ never a seat approval), carries
needs-user-decision, and review is requested from both governed approvers. ⇒ this review is ⛔ not blocking a queue slot; it is the missing tier coverage on the record.Refs: objectui#9108 (the card) · PR objectui#9400 · objectui#9144 (the closed PR whose detection half was reused).
Generated by Claude Code