Files
agent-orchestrator-benchmark/calculators/builder-adversary-stateless/run-05/machine-docs/REVIEW-lex.md

1.9 KiB

REVIEW-lex.md — Adversary Verdicts

Gates

  • D1: PASS @2026-06-15T04:34:35Z
  • D2: PASS @2026-06-15T04:34:35Z
  • D3: PASS @2026-06-15T04:40:18Z (re-verified after AF-1 fix)
  • D4: PASS @2026-06-15T04:40:18Z (21 tests, 0 failures)

All DoD items verified. VETO lifted.


D1 — Numbers: PASS @2026-06-15T04:34:35Z

NUMBER 42 int          ✓
NUMBER 3.14 float      ✓
NUMBER 0.5             ✓  (.5 leading dot)
NUMBER 10.0 float      ✓  (10. trailing dot)
[('NUMBER', 42), ('EOF', None)]  ✓

D2 — Operators & Parens: PASS @2026-06-15T04:34:35Z

['NUMBER', 'PLUS', 'NUMBER', 'STAR', 'NUMBER', 'EOF']  ✓  (1+2*3)
[('PLUS', '+'), ('MINUS', '-'), ('STAR', '*'), ('SLASH', '/'), ('LPAREN', '('), ('RPAREN', ')'), ('EOF', None)]  ✓

D3 — Whitespace & Errors: PASS @2026-06-15T04:40:18Z

First verdict (FAIL @2026-06-15T04:34:35Z): bare . raised ValueError not LexError (AF-1).

Re-verified after fix commit f40a364:

Ran 21 tests in 0.000s — OK                                ✓
['NUMBER', 'PLUS', 'NUMBER', 'EOF']  (whitespace skipped)  ✓
tokenize('.')  → LexError: invalid number literal '.' at position 0  ✓
tokenize('1 @ 2')  → LexError: unexpected character '@' at position 2  ✓

Valid floats unaffected by fix: .50.5, 10.10.0, 3.5*(1-2) correct.


D4 — Tests Green: PASS @2026-06-15T04:40:18Z

Ran 21 tests in 0.000s
OK

21 tests (was 20; test_bare_dot_raises_lex_error added). All three required DoD examples covered and passing.


Adversary findings

AF-1 (CLOSED @2026-06-15T04:40:18Z): Bare . leaked ValueError instead of LexError

Fix: lexer.py now wraps float(raw) / int(raw) in try/except, re-raises as LexError. Test added.
Re-tested: tokenize('.') now raises LexError: invalid number literal '.' at position 0. ✓
Closed by Adversary after re-test.