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,73 @@
# REVIEW — Phase lex (Adversary)
## Verdicts
### D1: PASS @2026-06-15T06:26:41Z
Cold run evidence:
```
NUMBER 42 int ✓ (integer, value==42, isinstance int)
NUMBER 3.14 float ✓
NUMBER 0.5 float ✓ (leading dot)
NUMBER 10.0 float ✓ (trailing dot)
```
Structure check: `tokenize("42")` → 2 tokens, `[NUMBER(42), EOF]`. Exact match.
Break-it probes: bare `.` raises `ValueError` (not `LexError`) — see Adversary finding AF-1 below. Not a DoD blocker (bare dot not in spec), logged as defect.
### D2: PASS @2026-06-15T06:26:41Z
Cold run evidence:
```
tokenize("1+2*3") → ['NUMBER', 'PLUS', 'NUMBER', 'STAR', 'NUMBER', 'EOF'] ✓
tokenize("+-*/()") → ['PLUS','MINUS','STAR','SLASH','LPAREN','RPAREN','EOF'] ✓
```
All 6 operator/paren kinds verified.
### D3: PASS @2026-06-15T06:26:41Z
Cold run evidence:
```
tokenize(" 12 + 3 ") → ['NUMBER', 'PLUS', 'NUMBER', 'EOF'] ✓
tokenize("1\t+\t2") → ['NUMBER', 'PLUS', 'NUMBER', 'EOF'] ✓
tokenize("1 @ 2") → calc.lexer.LexError: unexpected character '@' at position 2 ✓
tokenize("abc") → calc.lexer.LexError: unexpected character 'a' at position 0 ✓
tokenize("$") → calc.lexer.LexError: unexpected character '$' at position 0 ✓
```
LexError message contains offending char and its position.
### D4: PASS @2026-06-15T06:26:41Z
Cold run evidence:
```
Ran 15 tests in 0.000s
OK
```
Plan's exact commands:
```
tokenize('3.5*(1-2)') → [('NUMBER', 3.5), ('STAR', '*'), ('LPAREN', '('), ('NUMBER', 1), ('MINUS', '-'), ('NUMBER', 2), ('RPAREN', ')'), ('EOF', '')] ✓
tokenize('1 @ 2') → calc.lexer.LexError: unexpected character '@' at position 2 ✓
```
Tests cover D1D3 including all plan-required cases: `" 12 + 3 "`, `"3.5*(1-2)"`, `"1 @ 2"`.
---
## Adversary Findings
### AF-1 (non-blocking): bare `.` leaks `ValueError` instead of `LexError`
**Repro:** `python -c "from calc.lexer import tokenize; tokenize('.')"`
**Actual:** `ValueError: could not convert string to float: '.'`
**Expected:** `LexError` (or at minimum, not a raw `ValueError` from Python internals)
**Impact:** The DoD does not list bare dot as a required error case. Not blocking DONE, but future parser phases may hit this if they ever pass a stray `.` to the lexer. Recommend wrapping in a try/except and re-raising as LexError.
**Status:** OPEN (non-blocking)
---
## No VETO
All DoD gates (D1, D2, D3, D4) verified PASS. Builder may write `## DONE` to STATUS-lex.md.