artifacts: add calculators/ — the 30 built calculators (5/variant) + machine-docs + git logs
This commit is contained in:
@ -0,0 +1,72 @@
|
||||
# JOURNAL-lex — Adversary
|
||||
|
||||
## 2026-06-15 — Wake 1
|
||||
- Read phase plan: mission is lexer for Python arithmetic calculator
|
||||
- Checked origin/main: only seed commit, Builder has not pushed any work yet
|
||||
- Set up REVIEW-lex.md, BACKLOG-lex.md, STATUS-lex.md, JOURNAL-lex.md
|
||||
- Will poll for Builder claims
|
||||
|
||||
## 2026-06-15 — Wake 2 (watchdog ping)
|
||||
- Pulled claim(D1,D2,D3,D4) commit from Builder — all gates claimed at once
|
||||
- Read STATUS-lex.md for verification commands (did NOT read JOURNAL before verdicts)
|
||||
- Cold-verified all four gates from my own clone:
|
||||
|
||||
### D1 verification
|
||||
- `tokenize('42')` → NUMBER(42 int) EOF ✓
|
||||
- `tokenize('3.14')` → NUMBER(3.14 float) EOF ✓
|
||||
- `tokenize('.5')` → NUMBER(0.5) EOF ✓
|
||||
- `tokenize('10.')` → NUMBER(10.0) EOF ✓
|
||||
|
||||
### D2 verification
|
||||
- `tokenize('1+2*3')` kinds → ['NUMBER','PLUS','NUMBER','STAR','NUMBER','EOF'] ✓
|
||||
- `tokenize('3.5*(1-2)')` → correct full token list ✓
|
||||
- All 6 operator kinds present in test suite ✓
|
||||
|
||||
### D3 verification
|
||||
- `tokenize(' 12 + 3 ')` → ['NUMBER','PLUS','NUMBER','EOF'] ✓
|
||||
- `tokenize('1 @ 2')` → LexError: "unexpected character '@' at position 2" ✓
|
||||
- '@' and '2' both in error message ✓
|
||||
|
||||
### D4 verification
|
||||
- `python -m unittest -q` → Ran 24 tests, OK, exit 0 ✓
|
||||
- Three mandatory test inputs from DoD confirmed in test suite ✓
|
||||
|
||||
### Break-it probes
|
||||
- `tokenize('1.2.3')` → ValueError (not LexError) — logged as AF-01 (non-blocking)
|
||||
- `tokenize('.')` → ValueError (not LexError) — same issue
|
||||
- `tokenize('..')` → ValueError (not LexError) — same issue
|
||||
- `tokenize('1x')` → LexError at position 1 ✓ (x is invalid char)
|
||||
- `tokenize('\n')` → LexError ✓ (newline not in whitespace set)
|
||||
- `tokenize('')` → [Token(EOF, None)] ✓
|
||||
- SLASH operator explicitly tested ✓
|
||||
|
||||
### Verdict
|
||||
All four gates: PASS. One informational finding (AF-01: ValueError for malformed number
|
||||
literals). No VETO issued. Builder may write ## DONE.
|
||||
|
||||
## 2026-06-15 — Builder Wake 2 (post-verdicts)
|
||||
|
||||
Pulled Adversary verdict commit. All four gates PASS.
|
||||
|
||||
Addressed AF-01: wrapped `float(raw)` in try/except ValueError → re-raises as LexError.
|
||||
|
||||
```
|
||||
$ python -m unittest -q
|
||||
Ran 24 tests in 0.000s
|
||||
OK
|
||||
|
||||
$ python -c "
|
||||
from calc.lexer import tokenize, LexError
|
||||
for case in ['1.2.3', '.', '..']:
|
||||
try:
|
||||
tokenize(case)
|
||||
print(f'FAIL: {case!r}')
|
||||
except LexError as e:
|
||||
print(f'OK: {case!r} -> LexError: {e}')
|
||||
"
|
||||
OK: '1.2.3' -> LexError: malformed number '1.2.3' at position 0
|
||||
OK: '.' -> LexError: malformed number '.' at position 0
|
||||
OK: '..' -> LexError: malformed number '..' at position 0
|
||||
```
|
||||
|
||||
Updated STATUS-lex.md to ## DONE. Phase lex complete.
|
||||
Reference in New Issue
Block a user