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
Restore the needs:contract-review label as the marker for a PR awaiting its at-tier contract review — the maintainer's direct instruction, quoted verbatim #19973
Filing gate: ③ a direct maintainer task, routed to domain:skills by the maintainer's own words. Filed by domain:spec execution seat 1 (session_013RDBh5DqXd2xnLwvHLgLFr, seat post #6017, signed off and acting only on this instruction). ⛔ Not a claim.
Where: the live PM chat of session_013RDBh5DqXd2xnLwvHLgLFr, 2026-09-24.
The question it answered, verbatim: 「您一句话就够了,比如:「恢复 needs:contract-review,只作等复核标记,不作闸门」。… 恢复吗?是 / 否。」
⚠️Scope. The maintainer's words say 「恢复」. The question they answered proposed a marker only, ⛔ not a gate. If the executing seat reads the instruction as restoring any of the retired gate machinery, it asks the maintainer, and ⛔ never widens the scope on its own reading.
What it changes
Ruling B on #19061 (record 5770886272, 2026-09-22, 「其他同意」) retired three layers:
the label's gate role and its hang/clear discipline on two carriers;
the --pair pre-check;
the independence-pair requirement.
Its step ③ then removed the label from the tree (#19737). This instruction brings back the label only. The rest of ruling B stands:
⛔ no queue-guard refusal on the label;
⛔ no --pair;
⛔ no double carrier;
⛔ no independence requirement.
The enqueue gate still decides on the ## Contract review record, not on the label.
Why it was asked for, measured this shift
From 2026-09-23T12:00Z, every model: fable reviewer died on HTTP 429, thirteen tries in all. Twelve CI-green PRs waited on an at-tier record. That waiting state was visible only in seat post #6017's hand-written table. The maintainer had to ask for the list, and a handover to another PM needed the seat post read first. needs:contract-review was the one marker a PR-list filter could have shown. It was retired with the gate, and nothing replaced its visibility.
The seat's proposal for the semantics — ⛔ a proposal, not a ruling
Clear it when the PASS record lands on the head that will land, or when the PR merges or closes.
Named readers (a label exists only with one): the maintainer's PR-list filter, and each seat's patrol and handover.
⛔ No check reads it. Say so in the rule text, so the label does not drift back into a gate.
Surfaces the executing seat should re-read — derived here, ⛔ not a census
.claude/skills/pm-dispatch/SKILL.md, the state-model and label rows.
references/landing-operations.md, the line 「子代理起不来 ⇒ 复核缺席,PR 留 draft 队列外等档;唯一旁路是维护者亲审,逐次为准」, which is the natural place to name the marker.
references/contract-review.md.
scripts/pm/ensure-pm-labels.sh: the label is not in the roster today (git grep on origin/main: 0 hits).
The label object still exists: GET /labels/needs:contract-review answers 200. Re-read its description.
Four scripts on origin/main mention the label as retired, in comments: scripts/pm/check-half-states.mjs, check-skill-line-ratchet.mjs, check-widening-tells.mjs and clause2-line.mjs. Re-read each; ⛔ none of them becomes a reader of it as a gate.
Filing gate: ③ a direct maintainer task, routed to
domain:skillsby the maintainer's own words. Filed bydomain:specexecution seat 1 (session_013RDBh5DqXd2xnLwvHLgLFr, seat post #6017, signed off and acting only on this instruction). ⛔ Not a claim.The instruction, with provenance
session_013RDBh5DqXd2xnLwvHLgLFr, 2026-09-24.needs:contract-review,只作等复核标记,不作闸门」。… 恢复吗?是 / 否。」What it changes
Ruling B on #19061 (record
5770886272, 2026-09-22, 「其他同意」) retired three layers:--pairpre-check;Its step ③ then removed the label from the tree (#19737). This instruction brings back the label only. The rest of ruling B stands:
--pair;The enqueue gate still decides on the
## Contract reviewrecord, not on the label.Why it was asked for, measured this shift
From 2026-09-23T12:00Z, every
model: fablereviewer died on HTTP 429, thirteen tries in all. Twelve CI-green PRs waited on an at-tier record. That waiting state was visible only in seat post #6017's hand-written table. The maintainer had to ask for the list, and a handover to another PM needed the seat post read first.needs:contract-reviewwas the one marker a PR-list filter could have shown. It was retired with the gate, and nothing replaced its visibility.The seat's proposal for the semantics — ⛔ a proposal, not a ruling
## Contract reviewPASS under the current enqueue gate, and none is on file for its current head. Since fix(pm): the clause-② path limb and SUSPECT_TIER_GLOBS except spec test files #19948, that means the path limb (packages/spec/src/**non-test) orClause-②: yes.Surfaces the executing seat should re-read — derived here, ⛔ not a census
.claude/skills/pm-dispatch/SKILL.md, the state-model and label rows.references/landing-operations.md, the line 「子代理起不来 ⇒ 复核缺席,PR 留 draft 队列外等档;唯一旁路是维护者亲审,逐次为准」, which is the natural place to name the marker.references/contract-review.md.scripts/pm/ensure-pm-labels.sh: the label is not in the roster today (git greponorigin/main: 0 hits).GET /labels/needs:contract-reviewanswers 200. Re-read its description.origin/mainmention the label as retired, in comments:scripts/pm/check-half-states.mjs,check-skill-line-ratchet.mjs,check-widening-tells.mjsandclause2-line.mjs. Re-read each; ⛔ none of them becomes a reader of it as a gate.needs:contract-reviewwas stripped from #9235 twice inside 40 minutes, with no push in between #9251 recorded this label stripped from a PR twice in 40 minutes with no push between. finding(platform-readings): objectui's labeler runs withsync-labels: true, so a hand-applied PR label is silently removed on the next push — and the four-step read-back happens inside the window where it still looks fine #19179 records objectui's labeler running withsync-labels: true. Measure what strips PR labels on this repo today before relying on a single carrier..claude/**) ⇒ Tier H: the maintainer merges.Dedupe
mcp__github__search_issues, repo-scoped, 2026-09-24:needs:contract-reviewhangs on BOTH the PR and the card — symmetric hang and clear, so the gate is visible in the PR list #10972, [finding] A gate carried only by a PR label is not durable:needs:contract-reviewwas stripped from #9235 twice inside 40 minutes, with no push in between #9251, [finding] Two clause-② PRs were flipped ready and enqueued whileneeds:contract-reviewwas still on them (objectui#8723 01:58Z, #16998 02:00Z) — nothing in the merge queue reads the carrier #17040 and [finding] three PRs merged on 2026-09-09 still carryingneeds:contract-review— no H row names a merged PR or closed card that still wears a gate label #17510, all on the retired gate's mechanics.No open card carries this ask.