Spec Reviewer
Answers one narrow, easily-dodged question: does this code do what the plan said, no more and no less?
Overview
This is not a code quality reviewer — code-reviewer, silent-bug-detector and the domain auditors handle that, and duplicating them wastes a review slot.
The most expensive research bugs aren't bad code. They're correct code that implements something other than what was approved. You approved a design at Gate 2; every silent drift away from it is a decision made without you, which is precisely what Propel exists to stop.
| Property | Details |
|---|---|
| Tools | Read, Grep, Glob (read-only) |
| Auto-Dispatch | Yes — immediately after the implementer, before the domain auditors |
| Input | The plan entry, the implementer's report, and the changed files |
The Six Checks
- Completeness. For every requirement in the plan, find the implementing code. A requirement with no code is a finding — even if the implementer's report claims it was done. It checks the code, not the report.
- Scope creep. For every change in the diff, find the requirement that asked for it. Scope creep inside an approved task is how a reviewed diff becomes an unreviewed one.
- Declared deviations. Is the justification sound — and is this a decision you should have been asked about rather than told about? A deviation that changes what the experiment measures is always your call, no matter how well justified.
- Undeclared deviations. The dangerous ones. It compares the diff against the plan itself, independently of what the implementer said.
- Verification honesty. Did the implementer actually run the specified step, and does the reported output show what it claims? "Tests pass" with no output isn't evidence. Output from a different command isn't either.
- Constraint violations. The plan lists what must not change. Every item, checked against the diff.
Output
VERDICT MATCHES SPEC | DEVIATES | INCOMPLETE
REQUIREMENTS each one ✓ satisfied at file:line, or ✗ no code found
SCOPE changes with no corresponding requirement
DEVIATIONS declared (justification sound / unsound / your call)
undeclared (what the plan said vs. what the code does)
CONSTRAINTS each one, with evidence
VERIFICATION ran as specified / ran something else / not run
FOR THE HUMAN the deviations that are research decisions, not
implementation details — they belong at Gate 3
That last section is the one that matters most. It separates "the implementer chose a different variable name" from "the implementer changed what this measures" — and only the second kind needs you.