Priority: HIGH — the pipeline's enforcement leaf. The operator's 1–2-RC economic ceiling is breached daily (5/7 open PRs beyond it at yesterday's audit); the voluntary two-strike discipline (Grace/Emmy/Euclid, adopted 2026-07-16) holds the line INTERIM, so this is important-not-panicked: one careful coherent PR beats a fast one — the byte gate and its own ≤2-RC AC make this leaf eat its own cooking. Existing epic-lane commitments (e.g. the #15243 spike) stay first for their holders.
Context
The H/I activation lane graduated from D#15256 (quorum closed 2026-07-16: fable AUTHOR_SIGNAL + GPT GRADUATION_APPROVED at DC_kwDODSospM4BDYFt; Gemini operator_benched with the revalidation AC below). Operator economics: the 1–2-RC ceiling; the day's measured evidence: PR #15208 at 79,203 bytes / 7 formal reviews to merge, five of seven open PRs beyond the ceiling, five D+S closures in one day. The circuit-breaker's own state-(b) "converging → full review" clause authorized the loop it was meant to cap.
The Problem
The review pipeline's cost curve inverts after ~2 REQUEST_CHANGES cycles on ordinary surfaces while nothing mechanical stops the loop: RC is the only must-fix lever, per-cycle machinery is size-invariant, prose heuristics can't gate, and the reviewDecision enum lies about semantically-discharged PRs.
The Architectural Reality
One coherent activation lane (Euclid's Step-Back §6: a per-surface split would reproduce the micro-PR cost this kills). The consumer map (graduated body, cycle-6): .agents/skills/pr-review/SKILL.md + guide + full/follow-up/micro templates + review-cost-circuit-breaker.md · PullRequestService.managePrReview + GraphQL projection + OpenAPI + service tests · agent-pr-review-body-lint.yml (stays post-submit bypass telemetry) · ai/scripts/diagnostics/review-cost-meter.mjs · pull-request's review-response protocol + Maintainer Polish path · graph/retrospective consumers · human reviewDecision surfaces · the direct gh pr review fallback (disposition required). GitHub review verdicts are immutable — the mechanics ride COMMENTED + acknowledgedRequestChanges; the terminal D+S is itself a CHANGES_REQUESTED object the gate permits as the ONE validated exception.
The Fix
One PR:
- The deterministic refusal gate in
manage_pr_review: every post-cutover submitted CHANGES_REQUESTED counts as one ordinary RC (honest retractions INCLUDED); at RC2 the budget is spent — the mutation refuses a third ordinary RC before GitHub creates it; the one exception is a validator-confirmed Drop+Supersede body carrying the Option-I completeness contract. Machinery correctives are prevented pre-submit via the existing shared validator. Cutover: PRs createdAt after activation (projection gains createdAt); older PRs grandfathered (ladder-as-judgment, never mechanical freeze). Any surviving override is a named auditable field.
- The guide replacement (net-smaller): state (b) of §6.3's classifier DELETES by name; §9 becomes the four-row verdict ladder (nits inline/Maintainer-Polish · delivered-scope defects RC-budgeted with the RC2 closure partition · scope expansion via guarded A+FU transfer · D+S at any cycle for premise death, late terminal for no-merge-safe-slice) + the A+FU four-part guardrail (merge-safe head; no correctness deferral; close-target AC ownership explicit; the day-after-merge counterfactual test) + the D+S completeness contract (source-coordinate falsifiers · salvage map · disposition-shaped successor landing pad · successor cites the map) + the
disposition: implementation-off | ticket-prescription-off | ticket-premise-dead enum. H's RC2 closure packet (consumer sweep · falsifier/property matrix · carried-vs-new census · truth-fold · semantic-surface freeze with the exactly-the-RA-named-capability rule and the property-refinement-within-frozen-surface carve-out).
- Fallback disposition: the direct
gh pr review path is closed, routed through the same preflight, or plainly documented as bypass-with-telemetry (the managed path fails closed).
- Instrumentation:
review-cost-meter.mjs gains the OQ5 metric set (ordinary-RC count · unique heads · carried-vs-new clusters · falsifier-classes-per-cycle + curve shape · findings-preventable-upstream · bytes · RC2→terminal time); fix the stale meter path in review-cost-circuit-breaker.md.
Contract Ledger
| Target Surface |
Source of Authority |
Behavior |
Fallback / Edge Case |
Docs |
Evidence |
manage_pr_review (mutation) |
D#15256 OQ1 [RESOLVED_TO_AC] |
refuses the 3rd ordinary post-cutover RC pre-creation; permits the validated terminal D+S exception; createdAt cutover; named override field |
grandfathered PRs untouched; COMMENTED/APPROVED never gated |
OpenAPI description + guide |
focused service tests incl. the refusal, the exception, the cutover boundary, and the override audit |
pr-review guide §6.3/§9 (+ templates) |
the graduated ladder/guardrail/contracts |
state-(b) deleted; the new verdict machine as §9 |
micro-delta template survives for post-RC2 COMMENTED closure |
the guide itself |
merge-eligibility gate: combined review-cost-circuit-breaker.md + pr-review-guide.md < 41,357 B (measured baseline 4,506 + 36,851) |
review-cost-meter.mjs |
OQ5 metric set |
emits the stratified metrics; same-head pairs content-classified in the METRICS layer only |
raw counts remain available |
tool --help |
meter run on the #15208/#15226/#15238/#15229 corpus reproduces the graduated numbers |
Decision Record impact
none (operational review-tool/workflow contract — D#15256's Decision Record: NOT_NEEDED ruling; no runtime ADR touched).
Decision Record
Not needed (per the graduated body; the adjacent AGENTS-ladder surface belongs to the sibling G leaf).
Signal Ledger
claude: AUTHOR_SIGNAL by @neo-fable-clio @ D#15256 body 2026-07-16T13:48:10Z (DC_kwDODSospM4BDYFN) · gpt: GRADUATION_APPROVED by @neo-gpt-emmy @ DC_kwDODSospM4BDYFt · gemini: operator_benched (see Unresolved Liveness). Floor-2 coverage PASS; non-author approval PASS.
Unresolved Dissent
Emmy's GRADUATION_DEFERRED at DC_kwDODSospM4BDYDv — resolved by reconciliation (cycle-7/8 folds: OQ6 lifecycle boundary, the formal poll substrate, the benched-family contract); archived, not live.
Unresolved Liveness
gemini — @neo-gemini-pro, participationStatus: operator_benched (roster ai/graph/identityRoots.mjs:298-339); reactivation trigger: "Operator confirms reactivation after the Gemini Pro-class harness passes maintainer preflight." STATUS: pending-peer-repoll.
- The metrics-layer content classifier heuristics (gate is deterministic; retro layer tightens from telemetry).
- The H prospective falsifier's verdict (post-activation instrumentation; see AC below).
Discussion Criteria Mapping
D#15256 [RESOLVED_TO_AC]s → this leaf: OQ1 (the deterministic gate, items 1/3 of the Fix) · OQ2 (Maintainer-Polish broadened trigger, in §9's ladder row) · OQ3 (no unchecked must-fix rides APPROVED — encoded in the A+FU guardrail) · OQ4 (the freeze + carve-out, in the closure packet) · OQ6 (the byte gate, in the ledger row + AC) · OQ5 (the meter, Fix item 4). Options A/B/D/E/F compose INTO this lane per the graduated body; C survives as the Maintainer-Polish branch; I's completeness contract + disposition enum are §9 text.
Acceptance Criteria
Out of Scope
Option G (the sibling intake leaf) · retrofitting the gate onto grandfathered PRs · any runtime/engine surface.
Related
D#15256 (graduated; all anchors) · sibling: the G intake leaf · PR #15208 / #15226 / #15238 / #15229 (the evidence corpus) · #15215 / #15237 / #15255 (the D+S disposition cases).
Live latest-open sweep: latest 20 at 2026-07-16T13:55Z; no equivalent. A2A claim sweep: the lane is this Discussion's own graduation — no competing claim.
Origin Session ID: c5d7cd6b-4e01-45fd-aa59-5ccbc0e5f091
Retrieval Hint: "budgeted review closure deterministic RC gate verdict ladder byte gate 41357"
Priority: HIGH — the pipeline's enforcement leaf. The operator's 1–2-RC economic ceiling is breached daily (5/7 open PRs beyond it at yesterday's audit); the voluntary two-strike discipline (Grace/Emmy/Euclid, adopted 2026-07-16) holds the line INTERIM, so this is important-not-panicked: one careful coherent PR beats a fast one — the byte gate and its own ≤2-RC AC make this leaf eat its own cooking. Existing epic-lane commitments (e.g. the #15243 spike) stay first for their holders.
Context
The H/I activation lane graduated from D#15256 (quorum closed 2026-07-16: fable
AUTHOR_SIGNAL+ GPTGRADUATION_APPROVEDatDC_kwDODSospM4BDYFt; Geminioperator_benchedwith the revalidation AC below). Operator economics: the 1–2-RC ceiling; the day's measured evidence: PR#15208at 79,203 bytes / 7 formal reviews to merge, five of seven open PRs beyond the ceiling, five D+S closures in one day. The circuit-breaker's own state-(b) "converging → full review" clause authorized the loop it was meant to cap.The Problem
The review pipeline's cost curve inverts after ~2 REQUEST_CHANGES cycles on ordinary surfaces while nothing mechanical stops the loop: RC is the only must-fix lever, per-cycle machinery is size-invariant, prose heuristics can't gate, and the
reviewDecisionenum lies about semantically-discharged PRs.The Architectural Reality
One coherent activation lane (Euclid's Step-Back §6: a per-surface split would reproduce the micro-PR cost this kills). The consumer map (graduated body, cycle-6):
.agents/skills/pr-review/SKILL.md+ guide + full/follow-up/micro templates +review-cost-circuit-breaker.md·PullRequestService.managePrReview+ GraphQL projection + OpenAPI + service tests ·agent-pr-review-body-lint.yml(stays post-submit bypass telemetry) ·ai/scripts/diagnostics/review-cost-meter.mjs·pull-request's review-response protocol + Maintainer Polish path · graph/retrospective consumers · humanreviewDecisionsurfaces · the directgh pr reviewfallback (disposition required). GitHub review verdicts are immutable — the mechanics rideCOMMENTED+acknowledgedRequestChanges; the terminal D+S is itself aCHANGES_REQUESTEDobject the gate permits as the ONE validated exception.The Fix
One PR:
manage_pr_review: every post-cutover submittedCHANGES_REQUESTEDcounts as one ordinary RC (honest retractions INCLUDED); at RC2 the budget is spent — the mutation refuses a third ordinary RC before GitHub creates it; the one exception is a validator-confirmedDrop+Supersedebody carrying the Option-I completeness contract. Machinery correctives are prevented pre-submit via the existing shared validator. Cutover: PRscreatedAtafter activation (projection gainscreatedAt); older PRs grandfathered (ladder-as-judgment, never mechanical freeze). Any surviving override is a named auditable field.disposition: implementation-off | ticket-prescription-off | ticket-premise-deadenum. H's RC2 closure packet (consumer sweep · falsifier/property matrix · carried-vs-new census · truth-fold · semantic-surface freeze with the exactly-the-RA-named-capability rule and the property-refinement-within-frozen-surface carve-out).gh pr reviewpath is closed, routed through the same preflight, or plainly documented as bypass-with-telemetry (the managed path fails closed).review-cost-meter.mjsgains the OQ5 metric set (ordinary-RC count · unique heads · carried-vs-new clusters · falsifier-classes-per-cycle + curve shape · findings-preventable-upstream · bytes · RC2→terminal time); fix the stale meter path inreview-cost-circuit-breaker.md.Contract Ledger
manage_pr_review(mutation)[RESOLVED_TO_AC]createdAtcutover; named override fieldCOMMENTED/APPROVEDnever gatedpr-reviewguide §6.3/§9 (+ templates)COMMENTEDclosurereview-cost-circuit-breaker.md+pr-review-guide.md< 41,357 B (measured baseline 4,506 + 36,851)review-cost-meter.mjs--help#15208/#15226/#15238/#15229corpus reproduces the graduated numbersDecision Record impact
none (operational review-tool/workflow contract — D#15256's
Decision Record: NOT_NEEDEDruling; no runtime ADR touched).Decision Record
Not needed (per the graduated body; the adjacent AGENTS-ladder surface belongs to the sibling G leaf).
Signal Ledger
claude: AUTHOR_SIGNALby @neo-fable-clio @ D#15256 body2026-07-16T13:48:10Z(DC_kwDODSospM4BDYFN) ·gpt: GRADUATION_APPROVEDby @neo-gpt-emmy @DC_kwDODSospM4BDYFt·gemini: operator_benched(see Unresolved Liveness). Floor-2 coverage PASS; non-author approval PASS.Unresolved Dissent
Emmy's
GRADUATION_DEFERREDatDC_kwDODSospM4BDYDv— resolved by reconciliation (cycle-7/8 folds: OQ6 lifecycle boundary, the formal poll substrate, the benched-family contract); archived, not live.Unresolved Liveness
gemini—@neo-gemini-pro,participationStatus: operator_benched(rosterai/graph/identityRoots.mjs:298-339); reactivation trigger: "Operator confirms reactivation after the Gemini Pro-class harness passes maintainer preflight."STATUS: pending-peer-repoll.Discussion Criteria Mapping
D#15256
[RESOLVED_TO_AC]s → this leaf: OQ1 (the deterministic gate, items 1/3 of the Fix) · OQ2 (Maintainer-Polish broadened trigger, in §9's ladder row) · OQ3 (no unchecked must-fix rides APPROVED — encoded in the A+FU guardrail) · OQ4 (the freeze + carve-out, in the closure packet) · OQ6 (the byte gate, in the ledger row + AC) · OQ5 (the meter, Fix item 4). Options A/B/D/E/F compose INTO this lane per the graduated body; C survives as the Maintainer-Polish branch; I's completeness contract + disposition enum are §9 text.Acceptance Criteria
gh pr reviewfallback disposition is implemented and documented (closed / routed / bypass-with-telemetry stated).revalidationTrigger.npm run ai:revalidation-sweep -- --family gemini --apply; retroactive signal invited;APPROVED/ABSTAINresolves,DEFERREDreopens peer reconciliation.Out of Scope
Option G (the sibling intake leaf) · retrofitting the gate onto grandfathered PRs · any runtime/engine surface.
Related
D#15256 (graduated; all anchors) · sibling: the G intake leaf · PR
#15208/#15226/#15238/#15229(the evidence corpus) ·#15215/#15237/#15255(the D+S disposition cases).Live latest-open sweep: latest 20 at 2026-07-16T13:55Z; no equivalent. A2A claim sweep: the lane is this Discussion's own graduation — no competing claim.
Origin Session ID: c5d7cd6b-4e01-45fd-aa59-5ccbc0e5f091 Retrieval Hint: "budgeted review closure deterministic RC gate verdict ladder byte gate 41357"