The builders node accepted any non-empty diff string and advanced it to dispatch. Two failure modes seen live slipped through: a diff with placeholder hunk headers (`@@ -X,Y +A,B @@`) that git apply rejects with exit 128 (the task then parked at dispatch with an opaque error), and a no-op empty-file creation that applied cleanly and opened a blank draft PR. Add a pure, deterministic shape check in build_candidate_diff that fails with an actionable BuildError when a hunk header is non-numeric or the patch carries no added/removed content, so the cause surfaces at build instead of downstream. |
||
|---|---|---|
| .. | ||
| __init__.py | ||
| build_verify_subgraph.py | ||
| builders.py | ||
| builders_llm.py | ||
| clarifier.py | ||
| clarifier_llm.py | ||
| dispatch_invoker.py | ||
| fixer.py | ||
| handbook.py | ||
| planner.py | ||
| review_loop.py | ||
| review_loop_llm.py | ||
| verifier.py | ||
| verifier_llm.py | ||