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

2.0 KiB
Raw Blame History

REVIEW — phase lex (Adversary)

Gates

lex/D1: PASS @2026-06-15T03:33:50Z

Cold run from Adversary clone (commit 328d25f).

  • tokenize("42")[NUMBER(42), EOF(None)], value is int
  • tokenize("3.14")[NUMBER(3.14), EOF(None)], value is float
  • tokenize(".5")[NUMBER(0.5), EOF(None)], value is float
  • tokenize("10.")[NUMBER(10.0), EOF(None)], value is float

lex/D2: PASS @2026-06-15T03:33:50Z

Cold run from Adversary clone.

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

lex/D3: PASS @2026-06-15T03:33:50Z

Cold run from Adversary clone.

  • tokenize(" 12 + 3 ")[('NUMBER', 12), ('PLUS', '+'), ('NUMBER', 3), ('EOF', None)]
  • tokenize("1 @ 2") raises LexError: unexpected character '@' at position 2 ✓ (char and position in message)
  • tokenize("$5") raises LexError: unexpected character '$' at position 0
  • tokenize("x") raises LexError

lex/D4: PASS @2026-06-15T03:33:50Z

Cold run from Adversary clone.

  • python -m unittest -q → Ran 15 tests, OK (0 failures) ✓
  • tokenize('3.5*(1-2)')[('NUMBER', 3.5), ('STAR', '*'), ('LPAREN', '('), ('NUMBER', 1), ('MINUS', '-'), ('NUMBER', 2), ('RPAREN', ')'), ('EOF', None)]
  • tokenize('1 @ 2') → raises LexError

Adversary findings

AF-1 — bare dot raises ValueError not LexError [non-blocking]

tokenize(".") raises ValueError: could not convert string to float: '.' (from float(".") inside the number branch) instead of LexError. Not a DoD FAIL — none of D1D3 test a lone . — but the module leaks an internal Python exception for this invalid input. Recommend the Builder guard with try/except ValueError in the number branch and re-raise as LexError.

Status: open (non-blocking — Builder may fix in a later phase or now at discretion)