artifacts: add calculators/ — the 30 built calculators (5/variant) + machine-docs + git logs
This commit is contained in:
@ -0,0 +1,64 @@
|
||||
# STATUS — review phase (Builder)
|
||||
|
||||
## Current State
|
||||
Gate: ALL — CLAIMED, awaiting Adversary comprehensive cold-verify
|
||||
|
||||
Build is complete. All three phases (lex, parse, eval) self-certified. Ready for Adversary's
|
||||
single comprehensive verification pass per REVIEW CADENCE — DEFERRED rule.
|
||||
|
||||
## What is being claimed
|
||||
|
||||
All DoD items from all prior phases, plus D1–D3 from the review phase plan:
|
||||
|
||||
- **lex D1–D5**: tokenizer correct (numbers, operators, parens, whitespace, errors)
|
||||
- **parse D1–D6**: recursive-descent parser, correct AST shapes, precedence, unary minus, parens, errors
|
||||
- **eval D1–D5**: evaluator + CLI, arithmetic, division, type printing, error exit codes
|
||||
- **review D1**: full cold re-verify from fresh clone
|
||||
- **review D2**: full suite green (53 tests, 0 failures)
|
||||
- **review D3**: cross-feature break-it cases all pass
|
||||
|
||||
## Commit
|
||||
`6b5f4d2` feat(eval): implement evaluator + CLI — all D1-D5 green, 53 tests pass
|
||||
|
||||
(latest commit at time of this claim; git log shows full history)
|
||||
|
||||
## Files Produced (full build)
|
||||
- `calc/lexer.py` — `tokenize(src) -> list[Token]`, `LexError`
|
||||
- `calc/parser.py` — `parse(tokens) -> AST`, `ParseError`
|
||||
- `calc/evaluator.py` — `evaluate(node) -> int|float`, `EvalError`
|
||||
- `calc.py` — CLI entry point
|
||||
- `calc/test_lexer.py` — lex test suite
|
||||
- `calc/test_parser.py` — parse test suite
|
||||
- `calc/test_evaluator.py` — eval + CLI test suite
|
||||
|
||||
## Adversary Verdict
|
||||
`review(all): PASS` — 2026-06-16T00:00:00Z. No findings, no VETOs.
|
||||
All D1–D4 items verified. Builder writing ## DONE per plan.
|
||||
|
||||
## Verification Commands (Adversary cold-verify from fresh clone)
|
||||
|
||||
```bash
|
||||
# D2 — Full suite
|
||||
python -m unittest -q
|
||||
# Expected: Ran 53 tests in X.XXXs / OK
|
||||
|
||||
# D3 cross-feature cases
|
||||
python calc.py "-(-(1+2))" # stdout: 3, exit 0
|
||||
python calc.py "2+3*4-5/5" # stdout: 13, exit 0
|
||||
python calc.py "1 @ 2" # stderr: error: unexpected character '@'..., exit 1
|
||||
python calc.py "1/0" # stderr: error: division by zero, exit 1
|
||||
python calc.py "(1+" # stderr: error: unexpected end of input, exit 1
|
||||
python calc.py " 3.5*(2.0+1.5)" # stdout: 12.25, exit 0
|
||||
python calc.py "4/2" # stdout: 2, exit 0 (no .0)
|
||||
python calc.py "7/2" # stdout: 3.5, exit 0
|
||||
python calc.py "1 +" # stderr: error: ..., exit 1
|
||||
|
||||
# Prior phase cases
|
||||
python calc.py "2+3*4" # stdout: 14, exit 0
|
||||
python calc.py "(2+3)*4" # stdout: 20, exit 0
|
||||
python calc.py "8-3-2" # stdout: 3, exit 0
|
||||
python calc.py "-2+5" # stdout: 3, exit 0
|
||||
python calc.py "2*-3" # stdout: -6, exit 0
|
||||
```
|
||||
|
||||
## DONE
|
||||
Reference in New Issue
Block a user