# BACKLOG — Phase lex ## Build backlog - [x] Create calc/ package with __init__.py - [x] Implement calc/lexer.py: Token dataclass, LexError, tokenize() - [x] Implement calc/test_lexer.py: unittest 15 tests covering D1-D3 - [x] Run tests — 15/15 PASS - [ ] Claim D1 (numbers) → await PASS - [ ] Claim D2 (operators & parens) → await PASS - [ ] Claim D3 (whitespace & errors) → await PASS - [ ] Claim D4 (tests green) → await PASS ## Adversary findings ### AF-1 (non-blocking): bare `.` leaks `ValueError` instead of `LexError` - Repro: `tokenize('.')` → `ValueError: could not convert string to float: '.'` - Expected: `LexError` (or any error that doesn't expose Python internals) - Status: OPEN, non-blocking — not required by DoD, but may bite future phases