From d8708e6be15fa6e3deb0914d373d71299ffca41d Mon Sep 17 00:00:00 2001 From: John Preston Date: Tue, 25 Aug 2026 21:31:29 +0400 Subject: [PATCH] [ai] Do not review a task that wrote no code The initial five-lens fanout applied unconditionally, so an already-satisfied verification task convened six reviewers with no diff to read and they reviewed its measurement contract instead. Restrict the fanout to tasks that produced a source diff, bound the no-diff path to one review round, and send contract defects to the evidence loop as check repairs. --- .../perform-task/references/pipeline.md | 42 ++++++++++++++++--- 1 file changed, 36 insertions(+), 6 deletions(-) diff --git a/.agents/skills/perform-task/references/pipeline.md b/.agents/skills/perform-task/references/pipeline.md index f669ed822b..2b7accbdaa 100644 --- a/.agents/skills/perform-task/references/pipeline.md +++ b/.agents/skills/perform-task/references/pipeline.md @@ -368,10 +368,31 @@ affected by the task. ### Initial review fanout -The initial review always includes one independent **general** reviewer and all -five standard lenses. Start them together when capacity permits; under a slot -limit, keep the complete set queued and start the next lens as soon as a slot -opens. The general reviewer and lenses do not read one another's findings. +The initial review of a task **that produced a source diff** includes one +independent **general** reviewer and all five standard lenses. Start them +together when capacity permits; under a slot limit, keep the complete set +queued and start the next lens as soon as a slot opens. The general reviewer +and lenses do not read one another's findings. + +A task on the `already-satisfied` path has no diff, and the fanout does not +apply to it — see `### Already-satisfied outcome`. Review exists to judge code +this task wrote; where it wrote none, the general reviewer alone confirms the +current code and the evidence contract, and a lens runs only when the existing +subject named in assessment needs its risk-specific judgement. Do not convene +lenses to review a measurement contract. A defective oracle is not a review +finding: it fails or vacuously passes its own check, and the evidence loop +repairs it in place, which is cheaper and more reliable than a review round +arguing about it in advance. + +Bound that path hard. One review round decides it. If the general reviewer +requires changes, make them and re-review only what changed; a second required- +changes verdict whose findings are all in the measurement contract ends the +review and hands the remaining items to the evidence loop as check repairs. A +verification task must never run a third review round, and never a convergence +assessment on a contract it can simply execute. The cost of getting this wrong +is not theoretical: a no-diff task that runs the full fanout to convergence +spends hours reviewing a test design before taking a single measurement, and +ends where it began — with the code unchanged and the behaviour confirmed. The general reviewer reads every changed file in full and owns correctness, completeness, adjacent integration, unintended regressions, proportionality, @@ -547,8 +568,17 @@ When inspection finds the requested outcome already present, do not manufacture a source edit. Assessment records that candidate outcome and designs direct evidence. The mandatory general review independently confirms the relevant current code and the evidence contract; specialists run only when the existing -subject needs their risk-specific judgement. Run the ordinary evidence loop -against `RUN_REF == BASE_REF`. +subject needs their risk-specific judgement, and the initial five-lens fanout +does not run at all. Run the ordinary evidence loop against +`RUN_REF == BASE_REF`. + +A task expected to land here — anything whose job is to verify code that +already shipped — spends its budget on measuring, not on deliberating. Get to +the first run quickly: a proportionate plan, one general review, then execute. +The single review round bound in `### Initial review fanout` governs; the +adaptive machinery for sizing an implementation's risk has no subject here, +because nothing is being implemented. If measurement is cheap enough to take, +taking it always beats reasoning about whether it would pass. Approval without a source commit requires all of: