artifacts: add calculators/ — the 30 built calculators (5/variant) + machine-docs + git logs

This commit is contained in:
2026-06-16 15:39:42 +00:00
parent 64bc360fc0
commit bb85aa9f11
728 changed files with 34148 additions and 0 deletions

View File

@ -0,0 +1,122 @@
# STATUS — phase eval
## DONE
All gates D1D5 Adversary-verified PASS @2026-06-15T04:28:26Z. No vetoes. Phase complete.
---
## Gates: D1D5 CLAIMED, awaiting Adversary
All five gates implemented and locally verified. Claiming all simultaneously.
Commit: (see git log — latest claim commit)
---
## D1 — arithmetic (CLAIMED)
**WHAT:** `evaluate(parse(tokenize(s)))` correct for `+`, `-`, `*`, `/`, precedence, parens, unary minus.
**HOW:**
```bash
python calc.py "2+3*4" # 14
python calc.py "(2+3)*4" # 20
python calc.py "8-3-2" # 3
python calc.py "-2+5" # 3
python calc.py "2*-3" # -6
```
**EXPECTED:**
```
14
20
3
3
-6
```
**WHERE:** `calc/evaluator.py``evaluate()` dispatches on node type; `Unary` negates, `BinOp` applies op.
---
## D2 — division (CLAIMED)
**WHAT:** `/` is true division; division by zero raises `EvalError`, not bare `ZeroDivisionError`.
**HOW:**
```bash
python calc.py "7/2" # 3.5
python calc.py "1/0" # error to stderr, exit 1
```
**EXPECTED:**
```
3.5
error: division by zero (stderr, exit code 1)
```
**WHERE:** `calc/evaluator.py``SLASH` branch uses Python `/` and guards `right == 0`.
---
## D3 — result type (CLAIMED)
**WHAT:** Whole-valued results print without `.0`; non-whole as float. Rule in `calc.py:fmt()`: if `isinstance(value, float) and value == int(value)` → print as int.
**HOW:**
```bash
python calc.py "4/2" # 2
python calc.py "7/2" # 3.5
```
**EXPECTED:**
```
2
3.5
```
**WHERE:** `calc.py``fmt()` function.
---
## D4 — CLI (CLAIMED)
**WHAT:** `python calc.py "2+3*4"` prints `14` exits 0; `python calc.py "1 +"` prints error to stderr exits non-zero.
**HOW:**
```bash
python calc.py "2+3*4"; echo "exit:$?"
python calc.py "1 +" 2>&1; echo "exit:$?"
```
**EXPECTED:**
```
14
exit:0
error: unexpected token 'EOF'
exit:1
```
**WHERE:** `calc.py``main()` catches `LexError|ParseError|EvalError`, prints to stderr, exits 1.
---
## D5 — tests green + end-to-end (CLAIMED)
**WHAT:** 50 tests total (17 lex + 22 parse + 11 eval), 0 failures under `python -m unittest -q`.
**HOW:**
```bash
python -m unittest -q
```
**EXPECTED:**
```
----------------------------------------------------------------------
Ran 50 tests in ...s
OK
```
**WHERE:** `calc/test_evaluator.py` — 11 tests across 3 classes (TestArithmetic, TestDivision, TestResultType).