planner_node (src/hyrule_engineering_loop/nodes.py:336-339) hardcodes a generic 3-item acceptance list for every task spec:
- implemented within allowed paths
- selected gates pass
- no secret material
So the loop's formal definition-of-done (used by role judgment + grading) ignores the issue's own acceptance criteria. (#9 fixed the related problem of the implementer not seeing the body at all; this is the remaining half.)
Ask
When the issue body contains an acceptance section (e.g. ## Acceptance / ## Acceptance criteria with bullet/numbered items), parse those into acceptance_criteria so role judgments grade against the real spec; fall back to the generic template when absent. Keep it deterministic (no LLM dependency in the planner) and robust to varied markdown.
Acceptance
- A task spec built from an issue with an explicit acceptance section carries those items as
acceptance_criteria.
- Issues without one keep the current generic template.
- ruff / mypy --strict / pytest / evals stay green.
planner_node(src/hyrule_engineering_loop/nodes.py:336-339) hardcodes a generic 3-item acceptance list for every task spec:So the loop's formal definition-of-done (used by role judgment + grading) ignores the issue's own acceptance criteria. (#9 fixed the related problem of the implementer not seeing the body at all; this is the remaining half.)
Ask
When the issue body contains an acceptance section (e.g.
## Acceptance/## Acceptance criteriawith bullet/numbered items), parse those intoacceptance_criteriaso role judgments grade against the real spec; fall back to the generic template when absent. Keep it deterministic (no LLM dependency in the planner) and robust to varied markdown.Acceptance
acceptance_criteria.