Skip to content

charter conflict: does a Clause-②: no PR that touches no contract surface still owe an in-seat review before it can land? #18536

Description

@os-warren

Two rules in the seat's own charter give different answers for the same PR, and the seat cannot resolve the text on the spot. Filed under 「两条细则冲突 ⇒ 按更严的一条行动并立卡;⛔ 不当场改文本了结」. The seat is acting on the stricter reading meanwhile, and says so on the affected cards.

The situation that forced the question

Two PRs from this lane are Clause-②: no, CI-green or nearly so, and touch no contract surface:

Meanwhile the contract-review tier is refusing at the account level (HTTP 429), so no isolated at-tier review can run at all. Whether these two may land turns entirely on which rule governs.

Reading A — the enqueue gate says no review is owed

SKILL.md 〈入队与落地〉:

--tier 嫌疑行是提示非裁定;双肢命中任一 ⇒ 无席内条款②复核 PASS 在案 ⛔ 禁止入队。
路径肢 = diff 触及契约面 packages/spec/src/**,含 error-code-ledger 与 *.zod.ts 契约 schema。
声明肢 = 认领评论声明 Clause-②: yes,与路径无关。

Neither limb hits: the diffs are packages/spec/scripts/**, which is not packages/spec/src/**, and both claims declare no. The rule is stated as a prohibition conditioned on a limb hitting ⇒ with no limb hit, no in-seat clause-② review PASS is required, and the two-limb machinery exists precisely to decide when one is owed. check-clause2-carriers --pair agrees in its own output: exit 0, "no widening tell", and — unlike the yes PRs — it prints no C6-RECORD row demanding a review of record on the head.

Reading B — post-delivery review is owed for every delivered round, at-tier for this lane

references/contract-review.md and the same SKILL section:

逐车道:spec 席达档审契约增量;余席默认档自审加门禁、挂标;豁免仅独立性件与保险丝。
交付后复核由派发席席内完成:spec 席达档,余席默认档加门禁;记录 = 同形评论落 PR 或卡。
独立性件:契约真分叉、dev 挂旗或派发后的跨车道面(含 spec)⇒ 起隔离的达档复核子代理。

「交付后复核由派发席席内完成」 is unconditional on its face. And both rounds raised flags — #18010's dev put an A/B/C open_questions in front of the seat, #18301's round is answering a CI red — so 「dev 挂旗」 is satisfied, which makes them independence cases, and the only exemptions named are independence cases and the fuse. Under this reading an isolated at-tier review is required even though the clause-② gate never fires.

Why the seat cannot just pick

Reading A is supported by the gate's structure (two limbs whose whole job is to decide when a review is owed, and a checker that demands a review record only for yes). Reading B is supported by the plain text of two sentences that are not conditioned on a limb. ⛔ Neither is obviously the drafter's intent, and the seat is not entitled to settle it by choosing the answer that unblocks its own queue — which is exactly what Reading A would do today.

What the seat is doing meanwhile

Acting on Reading B (the stricter one). #18530 and #18529 stay draft, out of the queue, until either the tier returns or this card is answered. A PR that waits loses time; a PR landed without a review the rules wanted cannot be un-landed.

⚠️ The cost is worth stating plainly: with the tier refusing, Reading B means nothing from this lane can land at all — not the contract work, and not the test/script work either.

What an answer looks like

Either (a) confirm Reading A and say so in the charter — a non-limb PR is collected with a default-tier seat record and lands on the three pre-checks; or (b) confirm Reading B and make 「交付后复核」 explicitly unconditional, in which case the Clause-② limbs decide the TIER of the review rather than its existence; or (c) a third shape: a flag raised by a dev pulls a non-limb PR into at-tier review, which is what the independence sentence would mean if read narrowly.

⚠️ Whichever it is, the sentence 「豁免仅独立性件与保险丝」 needs to say what it exempts them FROM, because today it can be read as exempting them from the default tier (i.e. forcing at-tier) or as exempting them from review entirely.

Dedupe words: 双肢命中任一, 交付后复核由派发席席内完成, 独立性件 dev 挂旗, Clause-② no 非限定 PR 落地, packages/spec/scripts 不是契约面.


Generated by Claude Code

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions