# LAB15 — Detect a wrong comparison

Start CP07 in a fresh folder. Suggested time: 60 minutes. Write the requirement before reading the implementation: exactly 3000 ms remains current; age 3001 ms becomes stale.

Run `.\scripts\test.cmd` and save the actual baseline. Unmodified CP07's reference suite has 36 assertions. In a disposable mutation copy, change only `Monitor::poll` expiry comparison from `>` to `>=`. The source should compile, then the unchanged suite should reject the early-expiry behavior. Preserve the actual failure.

Restore `>`, rebuild, and rerun the same suite. Inspect the diff and replay `fixtures/stale-recovery.csv` to connect the boundary with readable output. Attempt the restored firmware build and retain its actual receipt.

Add one requirement-motivated test, such as negative infinity entering FAULT/nonfinite with no current temperature. State the expected result independently before coding. Leave production behavior unchanged if it already satisfies the case.

Submit baseline/mutated/restored records, the reviewed source diff, the added test's purpose/result, replay/build evidence, and an explicit list of unperformed physical checks. A mutation that fails only to compile does not prove a behavioral test can catch the defect. Chapter 15 contains the worked answer and evidence interpretation.
