Lesson 4: Verify like a reviewer, not a spectator
Objective
Both suites pass, and you hold a written record of what the green runs do
and do not prove — plus a reviewed diff you would defend to a colleague.
Why this lesson exists
“All tests pass” is where most AI-assisted work stops — and where most
silent bugs start. A suite proves the contract lines it asserts; it says
nothing about the rows nobody wrote a test for. Verification is a report
you write, not a feeling you have.
The lesson
Run the full pair in the integrated terminal yourself — not through the
agent — so you see the raw output:
python verify.py starter # the implementation you supervised
python verify.py solution # the reviewed reference
Both green means the contract is satisfied as written. Now do the review
the suite cannot do for you:
- Walk a skin end-to-end. Pick a
scenario/<skin>/ folder and run
the tool on it: python starter/report_tool.py scenario/<skin>. Read
the produced report against the input file — recompute one group total
by hand.
- Review the accumulated diff. In Source Control, compare against the
baseline commit from Lesson 3 (or run
git diff <baseline> in the
terminal). Read it top to bottom. Every hunk should map to a contract
line you named in Lesson 2. Anything that does not is scope creep —
revert or justify it. Also check for untracked files the agent created
through terminal commands: those do not always appear in the chat’s
changed-files list.
- Check the edges the tests skip. Feed the tool an empty CSV, a CSV
with only invalid rows, a missing file. The contract does not pin
these — your judgment does. Write down what it does.
If you want a second opinion, ask Copilot in plain words to critique the
change (its built-in Rubber Duck reviewer is read-only). Treat whatever it
finds as leads to check by running something, not as evidence.
Exercise
Write the three-line evidence record for this change:
- Verified: the commands you ran and what they proved.
- Not verified: the inputs and behaviors no test pins.
- Known limits: anything you saw that the contract never promised.
Keep it honest — “not verified” is a list of facts, not a confession.
Checkpoint
Run python verify.py. This checkpoint’s code prints once the starter
suite passes; the maintainer pair above must both be green for the gate to
mean what it says. You pass the lesson when you can answer:
- What did your by-hand recompute of a group total show?
- Name one input the suite does not pin and what the tool does with it.
- Which hunk, if any, would you ask a colleague to justify?
Expected evidence
Both green runs, your three-line evidence record, and the diff review
notes.