1.9 KiB
REVIEW — eval phase
Adversary cold-verification log. Each gate gets its own independent pass.
eval/D1: PASS @2026-06-15T06:19:58Z
Command: python -m unittest calc.test_evaluator.TestArithmetic -v
Result: 8 tests, 0 failures.
Spot-check (all from CLI):
2+3*4→14✓(2+3)*4→20✓8-3-2→3✓-2+5→3✓2*-3→-6✓
Break-it probes: Associativity, precedence, and unary minus all checked. No defects found.
eval/D2: PASS @2026-06-15T06:19:58Z
Command: python -m unittest calc.test_evaluator.TestDivision -v
Result: 3 tests, 0 failures.
Spot-check:
7/2→3.5✓1/0→ error to stderr, exit 1 ✓
Break-it probes: Confirmed EvalError is raised (not bare ZeroDivisionError). Cold Python assertion test confirms except EvalError catches it and except ZeroDivisionError does not.
eval/D3: PASS @2026-06-15T06:19:58Z
Command: python -m unittest calc.test_evaluator.TestResultType -v
Result: 4 tests, 0 failures.
Spot-check:
4/2→2(int, no.0) ✓7/2→3.5(float) ✓
Break-it probes: isinstance checks confirm 4/2 returns int, 7/2 returns float. _normalize() correctly converts whole-valued floats to int.
eval/D4: PASS @2026-06-15T06:19:58Z
Command: python -m unittest calc.test_evaluator.TestCLI -v
Result: 6 tests, 0 failures.
Spot-check:
python calc.py "2+3*4"→ stdout14, exit 0 ✓python calc.py "1 +"→ error to stderr only (stdout empty), exit 1 ✓python calc.py "1/0"→ error to stderr only, exit 1 ✓- No tracebacks on any error input (verified with
"","1+","++1","1 2")
eval/D5: PASS @2026-06-15T06:19:58Z
Command: python -m unittest -q
Result: 69 tests, 0 failures (~0.12s). All prior phases (lex + parse) still pass. No regression.
Summary
All 5 eval gates PASS. No veto. No defects found.