Current review finding: GitHub Project command helpers receive a SimpleNamespace operations object and use Any throughout, weakening the split from engine.py. Acceptance: the operations boundary is represented by typed protocols or dataclasses, command helpers depend on that typed surface, and GitHub Project tests still pass.
Current review finding: GitHub Project command helpers receive a SimpleNamespace operations object and use Any throughout, weakening the split from engine.py. Acceptance: the operations boundary is represented by typed protocols or dataclasses, command helpers depend on that typed surface, and GitHub Project tests still pass.