Summary
Two standing rules form an unsatisfiable conjunction for any PR that lands in a non-skills lane while touching skills/**:
| rule |
text |
| the governed ACCEPT fork |
「① 复核结论照常写在 issue 上;技能面 PR 的复核席须跑在契约复审档位。」 |
| the tier ruling (#17285, merged as PR #17294) |
the contract-review tier is reserved for the skills seat, the spec seat's clause-② review, and the maintainer-summoned director; 「triage and every other seat run the default tier」 |
⇒ A domain:cli (or domain:engine, domain:services, …) seat that reviews a skills/**-touching PR cannot satisfy the first rule without violating the second. There is no spelling of "run the review at contract-review tier" available to it.
How it was hit
PR #17462 (card #17134, domain:cli, p1) fixes os migrate meta --to's default. That change makes a prescribed acceptance step in the published skill skills/objectstack-upgrade/SKILL.md false — the skill told authors to run os migrate meta --from 17 and expect "Nothing to migrate", which the fix turns into "Applied 5 mechanical change(s)". Under the standing rule that a published claim this round turns false must be repaired, not filed, the delivery correctly repaired it (+8/-3, ratchet green, well inside every ceiling).
⇒ An ordinary lane card with no skills/** ambition acquired a governed surface as a consequence of being correct. That is not an edge case to design away — it is what the repair-don't-file rule produces, and it will recur.
The domain:cli seat then: took the governed four-piece path, recorded the review on the card, hung needs-user-decision, posted the final 维护者速读 on the PR, and requested review from both authorised approver accounts — and declared in writing that its review was default-tier and therefore NOT the at-tier review rule ① calls for. ⛔ It did not quietly claim the tier it lacks, and ⛔ it did not skip the rule silently.
Why this is a finding rather than a note
It is category (b): a declared rule that cannot be complied with. The failure is silent by construction — a seat that does not notice the conjunction will simply write "reviewed" and move on, and nothing mechanical reads the reviewer's tier. ⛔ No gate can catch it; the only signal is a seat reading both rules at once and saying so.
⚠️ It also has a plausible worse failure mode than the one observed: a seat that does notice might route around it by asking the dev to split the skills/** hunk into a separate PR — which the governed fork explicitly forbids handling by proportion (「混合 diff ⛔ 不按比例判;要拆让 dev 单独开 PR」 is about splitting, not about dodging the review), and which would leave the published skill false for however long the split PR waits.
Candidate resolutions (⛔ not a ruling — the skills seat decides)
- Narrow rule ① to the skills lane's own PRs, and let the maintainer's review be the gate for a governed surface reached from another lane — which is what the four-piece set already delivers.
- Add an explicit carve-out: a non-skills seat reviewing an incidental
skills/** hunk reviews at its own tier and must declare the tier in the ACCEPT (which is what happened here, ad hoc).
- Route the review: the reviewing seat hands the
skills/** hunk to the skills seat for an at-tier review before the four-piece set fires.
⚠️ Option 3 is the only one that preserves rule ① literally, and it is also the only one that adds a cross-seat hop to every incidental one-line skill repair. That trade is the decision.
Not duplicates (checked, including closed)
Searched the tier/contract-review family; the closest neighbours are #17285 (the ruling that creates one half of the conjunction — closed), #16905 (dropped the tier mandate for clause-② implementation, a different axis — closed), #16914 (stale clause-② prose in dispatch-gates — open, different subject), and #13587 (a one-off "review and land the skills/** half authored across a lane line" — closed, an instance rather than the rule gap). ⛔ None states this conjunction.
Filed by the domain:cli execution PM seat (#6024, session session_01DapQyvYrFb1MxSYe7BL2nt) out of PR #17462's governed-path review. ⛔ Not graded, no domain:*, no priority, no assignee — that is triage's. ⚠️ Suggested lane: this is protocol text ⇒ domain:skills.
Generated by Claude Code
Summary
Two standing rules form an unsatisfiable conjunction for any PR that lands in a non-skills lane while touching
skills/**:⇒ A
domain:cli(ordomain:engine,domain:services, …) seat that reviews askills/**-touching PR cannot satisfy the first rule without violating the second. There is no spelling of "run the review at contract-review tier" available to it.How it was hit
PR #17462 (card #17134,
domain:cli, p1) fixesos migrate meta --to's default. That change makes a prescribed acceptance step in the published skillskills/objectstack-upgrade/SKILL.mdfalse — the skill told authors to runos migrate meta --from 17and expect "Nothing to migrate", which the fix turns into "Applied 5 mechanical change(s)". Under the standing rule that a published claim this round turns false must be repaired, not filed, the delivery correctly repaired it (+8/-3, ratchet green, well inside every ceiling).⇒ An ordinary lane card with no
skills/**ambition acquired a governed surface as a consequence of being correct. That is not an edge case to design away — it is what the repair-don't-file rule produces, and it will recur.The
domain:cliseat then: took the governed four-piece path, recorded the review on the card, hungneeds-user-decision, posted the final 维护者速读 on the PR, and requested review from both authorised approver accounts — and declared in writing that its review was default-tier and therefore NOT the at-tier review rule ① calls for. ⛔ It did not quietly claim the tier it lacks, and ⛔ it did not skip the rule silently.Why this is a finding rather than a note
It is category (b): a declared rule that cannot be complied with. The failure is silent by construction — a seat that does not notice the conjunction will simply write "reviewed" and move on, and nothing mechanical reads the reviewer's tier. ⛔ No gate can catch it; the only signal is a seat reading both rules at once and saying so.
skills/**hunk into a separate PR — which the governed fork explicitly forbids handling by proportion (「混合 diff ⛔ 不按比例判;要拆让 dev 单独开 PR」 is about splitting, not about dodging the review), and which would leave the published skill false for however long the split PR waits.Candidate resolutions (⛔ not a ruling — the skills seat decides)
skills/**hunk reviews at its own tier and must declare the tier in the ACCEPT (which is what happened here, ad hoc).skills/**hunk to the skills seat for an at-tier review before the four-piece set fires.Not duplicates (checked, including closed)
Searched the tier/contract-review family; the closest neighbours are #17285 (the ruling that creates one half of the conjunction — closed), #16905 (dropped the tier mandate for clause-② implementation, a different axis — closed), #16914 (stale clause-② prose in
dispatch-gates— open, different subject), and #13587 (a one-off "review and land theskills/**half authored across a lane line" — closed, an instance rather than the rule gap). ⛔ None states this conjunction.Filed by the⚠️ Suggested lane: this is protocol text ⇒
domain:cliexecution PM seat (#6024, sessionsession_01DapQyvYrFb1MxSYe7BL2nt) out of PR #17462's governed-path review. ⛔ Not graded, nodomain:*, no priority, no assignee — that is triage's.domain:skills.Generated by Claude Code