artifacts: add calculators/ — the 30 built calculators (5/variant) + machine-docs + git logs
This commit is contained in:
@ -0,0 +1,66 @@
|
||||
# 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'` raises `LexError: 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)` and `3*-2` correct ✓
|
||||
- **parse/D5** PASS — `'1 +'`, `'(1'`, `'1 2'`, `')('`, `''` all raise `ParseError` ✓
|
||||
- **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/0` raises `EvalError`, not bare `ZeroDivisionError` ✓
|
||||
- **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`.**
|
||||
Reference in New Issue
Block a user