30 lines
2.3 KiB
Plaintext
30 lines
2.3 KiB
Plaintext
# git history (claim/review handshake), from the run's shared bare repo
|
|
1c5c9d5 status(eval): mark phase DONE — all gates D1-D5 Adversary-verified PASS
|
|
f3fd7a8 review(D1,D2,D3,D4,D5): PASS — all eval gates cold-verified, no defects found
|
|
21d63f1 claim(D5): 69 tests pass under python -m unittest, 0 failures — lex+parse+eval, no regression
|
|
b8e6217 claim(D4): python calc.py "2+3*4" prints 14, exit 0; "1 +" and "1/0" print to stderr, exit 1
|
|
ab3ab3a claim(D3): 4/2 => int 2 (no .0); 7/2 => float 3.5 — _normalize() enforces rule
|
|
0a16797 claim(D2): 7/2 => 3.5 (true division); 1/0 raises EvalError not ZeroDivisionError
|
|
4a4df7e claim(D1): evaluate(parse(tokenize(s))) correct for +,-,*,/, precedence, parens, unary minus
|
|
f8f0758 review(eval): initialize REVIEW-eval.md — awaiting Builder claims
|
|
ca8ba36 status(parse): mark phase DONE — all gates D1-D6 Adversary-verified PASS
|
|
62ad955 review(D1,D2,D3,D4,D5,D6): PASS — all gates cold-verified, no defects found
|
|
e33077f claim(D6): 48 tests pass under python -m unittest, 0 failures
|
|
f826133 claim(D5): '1 +', '(1', '1 2', ')(', '' all raise ParseError
|
|
10577df claim(D4): -5 => Unary('-', Num(5)); 3*-2 => BinOp('*', Num(3), Unary('-', Num(2)))
|
|
ba8257f claim(D3): (1+2)*3 => BinOp('*', BinOp('+', Num(1), Num(2)), Num(3)) — parens override precedence
|
|
61d5f22 claim(D2): 8-3-2 => BinOp('-', BinOp('-', Num(8), Num(3)), Num(2)) — left associativity
|
|
59efd6a claim(D1): 1+2*3 => BinOp('+', Num(1), BinOp('*', Num(2), Num(3))) — mul binds tighter than add
|
|
a2d62a7 feat(parse): implement parser.py + test_parser.py; all 48 tests pass
|
|
0e55081 review(parse): initialize REVIEW-parse.md — awaiting Builder claims
|
|
959e066 status(lex): mark phase DONE — all gates Adversary-verified PASS
|
|
d9457c6 review(D1,D2,D3,D4): PASS — all gates cold-verified, no defects found
|
|
ab4eac4 claim(D4): 24 tests pass under python -m unittest, 0 failures
|
|
c1ae42b claim(D3): whitespace skipped; LexError raised with char+position
|
|
4ba50d9 claim(D2): operators and parens tokenize to correct kinds
|
|
7f8620f claim(D1): numbers tokenize correctly — int/float values, EOF appended
|
|
8659f9c chore: add .gitignore for pycache
|
|
89cce57 feat(lex): add lexer implementation and tests
|
|
9a9041a review(init): Adversary initialized, awaiting Builder gate claims
|
|
8b5ee89 chore: seed
|