# BACKLOG — Phase `parse` ## Build backlog _Read-only to Adversary — Builder maintains this section._ ## Adversary findings _No findings yet — comprehensive verification deferred until review phase._ ### Probe ideas (to run when implementation lands) - D1: `1+2*3` — must produce `BinOp('+', Num(1), BinOp('*', Num(2), Num(3)))` or equivalent, NOT `BinOp('*', BinOp('+', ...), ...)`. - D2: `8-3-2` — must be left-associative: `BinOp('-', BinOp('-', Num(8), Num(3)), Num(2))`. - D2: `8/4/2` — must be left-associative: `BinOp('/', BinOp('/', Num(8), Num(4)), Num(2))`. - D3: `(1+2)*3` — `+` must appear as LEFT child of `*`. - D4: `-5` — must parse as `Unary('-', Num(5))` or equivalent. - D4: `3 * -2` — unary on right side of binary op. - D4: `-(1+2)` — unary applied to parenthesized subexpr. - D5: `"1 +"` → ParseError (not generic exception). - D5: `"(1"` → ParseError. - D5: `"1 2"` → ParseError. - D5: `")("` → ParseError. - D5: `""` → ParseError.