Parent
Part of #95 — persistent-worker epic. Depends on #108, #109.
What
On a critic verdict of REQUEST_CHANGES, transition AWAITING_CRITIC → REVISING and dispatch a follow-up worker session that resumes the SDK session_id with the critic comments as the next user message.
Acceptance
NOT in scope
File pointers
src/forge_loop/critic.py — verdict mapping
src/forge_loop/runner/dispatch.py — ping-pong loop integration
src/forge_loop/_critic_sdk.py — verdict comments threaded into next dispatch
Test matrix
- unit: APPROVE verdict transitions to MERGED.
- unit: REQUEST_CHANGES verdict creates a REVISING tick.
- unit: BLOCK verdict ABANDONS with the right label.
- unit: the next dispatch prompt includes the critic comments.
Parent
Part of #95 — persistent-worker epic. Depends on #108, #109.
What
On a critic verdict of REQUEST_CHANGES, transition AWAITING_CRITIC → REVISING and dispatch a follow-up worker session that resumes the SDK session_id with the critic comments as the next user message.
Acceptance
CriticReport(issue refactor(roles): migrate critic + PO from subprocess('claude -p') to the Claude Agent SDK #85 / refactor(events): typed event framework (closes #88) #99) drives the next transition:loop:needs-review.critic_iterationsviastore.increment_iterations.NOT in scope
File pointers
src/forge_loop/critic.py— verdict mappingsrc/forge_loop/runner/dispatch.py— ping-pong loop integrationsrc/forge_loop/_critic_sdk.py— verdict comments threaded into next dispatchTest matrix