2.8 KiB
2.8 KiB
REVIEW — review phase (Adversary verdicts)
Status: PASS — comprehensive cold-verification complete
review(D-all): PASS @ 2026-06-16T00:57:12Z
lex phase DoD — ALL PASS
- lex/D1 PASS —
.5→0.5,10.→10.0,3.14→3.14,42→42, all correct kinds/values - lex/D2 PASS —
+ - * / ( )all produce correct kinds;1+2*3→NUMBER PLUS NUMBER STAR NUMBER EOF - lex/D3 PASS — whitespace skipped;
'1 @ 2'raisesLexError: unexpected character '@' at position 2 - lex/D4 PASS — 14 tests, 0 failures (now part of 60-test suite)
parse phase DoD — ALL PASS
- parse/D1 PASS —
1+2*3→BinOp('+', Num(1), BinOp('*', Num(2), Num(3)))✓ - parse/D2 PASS —
8-3-2→BinOp('-', BinOp('-', Num(8), Num(3)), Num(2));8/4/2→BinOp('/', BinOp('/', Num(8), Num(4)), Num(2))✓ - parse/D3 PASS —
(1+2)*3→BinOp('*', BinOp('+', Num(1), Num(2)), Num(3))✓ - parse/D4 PASS —
-5→Unary('-', Num(5));-(1+2)and3*-2correct ✓ - parse/D5 PASS —
'1 +','(1','1 2',')(',''all raiseParseError✓ - parse/D6 PASS — 20 tests, 0 failures
eval phase DoD — ALL PASS
- eval/D1 PASS —
2+3*4→14,(2+3)*4→20,8-3-2→3,-2+5→3,2*-3→-6 ✓ - eval/D2 PASS —
7/2→3.5;1/0raisesEvalError, not bareZeroDivisionError✓ - eval/D3 PASS (after fix) —
_normalize()applied in all branches:4.0→4,10.→10,-4.0→-4,0.0→0,4/2→2,7/2→3.5 ✓ - eval/D4 PASS — CLI prints result to stdout, exit 0; errors to stderr, exit 1, no traceback ✓
- eval/D5 PASS — 60 tests, 0 failures (4 new tests for float-literal normalization added by Builder)
review phase DoD — ALL PASS
- D1 PASS — every prior DoD item cold-verified from fresh clone ✓
- D2 PASS —
python -m unittest -q→Ran 60 tests in ...s OK✓ - D3 PASS — cross-feature probes all pass:
-(-(1+2))→ 3 ✓2+3*4-5/5→ 13 ✓1 @ 2,1/0,(1+all error to stderr, exit 1, no traceback ✓- whitespace+floats+parens:
3.5*(1-2)works ✓ - float-literal normalization:
4.0→4,10.→10,-4.0→-4 ✓
- D4 PASS — FINDING-1 fixed and re-verified; no standing VETO ✓
FINDING-1 — CLOSED
Status: RESOLVED @ 2026-06-16T00:57:12Z
Fix: Builder extracted _normalize() helper in calc/evaluator.py and applied it before
every return in evaluate() (Num, Unary, and BinOp branches). 4 new tests added to
calc/test_evaluator.py to lock in behavior.
Re-verification:
python calc.py "4.0" → 4 ✓
python calc.py "10." → 10 ✓
python calc.py "-4.0" → -4 ✓
python calc.py "0.0" → 0 ✓
python -m unittest -q → Ran 60 tests in ...s OK ✓
Builder may now write ## DONE to machine-docs/STATUS-review.md.