What happened
When the adversarial-pipeline rejects a developer implementation 3+ times, the pipeline does not escalate to the PM. Instead, it keeps respawning the developer indefinitely until the thread dies (context limit or token budget exhausted).
Expected behaviour
After 3 adversarial rejections (ISSUES_FOUND or CRITICAL_ISSUES_FOUND), the pipeline should:
- Stop respawning the developer
- Escalate to PM with verdict summary
- Allow PM to decide: override, re-scope, or abort
Current behaviour
- No maximum retry limit configured
- No escalation logic in
pulse.ts
- Pipeline loops forever: developer → adversarial → respawn → repeat
- Thread dies when LLM context limit reached
Steps to reproduce
- Run
taskctl start on an issue with complex requirements
- Wait for adversarial to find issues in round 1
- Developer fixes, adversarial finds NEW issues (or same issues reworded)
- Repeat 3+ times
- Observe: No PM escalation, pipeline continues indefinitely
Environment
- Branch:
dev
- Files involved:
src/tasks/pulse.ts, src/tasks/pulse-scheduler.ts, src/tasks/pulse-verdicts.ts
Acceptance Criteria
Definition of Done
What happened
When the adversarial-pipeline rejects a developer implementation 3+ times, the pipeline does not escalate to the PM. Instead, it keeps respawning the developer indefinitely until the thread dies (context limit or token budget exhausted).
Expected behaviour
After 3 adversarial rejections (ISSUES_FOUND or CRITICAL_ISSUES_FOUND), the pipeline should:
Current behaviour
pulse.tsSteps to reproduce
taskctl starton an issue with complex requirementsEnvironment
devsrc/tasks/pulse.ts,src/tasks/pulse-scheduler.ts,src/tasks/pulse-verdicts.tsAcceptance Criteria
pipeline.attemptcounter for each taskDefinition of Done
pulse.tsorpulse-scheduler.ts