mirror of
https://github.com/paperclipai/paperclip.git
synced 2026-10-26 10:26:26 +01:00
Periodic reconciliation used to skip every `in_review` issue without a typed execution participant, so review feedback whose only remaining path was a pre-launch-failed comment run stayed silently stranded. Adds a narrow backstop for exactly that shape: agent-assigned `in_review`, no typed participant, interaction, approval, monitor, user owner, active run, or queued wake, and a failed latest run that carried user feedback context. It requeues one bounded normal-model replay for the original assignee, or opens one explicit recovery action naming the owner and next action once replay is exhausted or the assignee is no longer invokable. Dedupe against the immediate terminalization lane is structural: both lanes now derive the fingerprint, replay wake idempotency key, recovery-action kind/cause, and activity keys from one shared module, so a second parallel delivery lane cannot be opened even if the two lanes race. Legitimate waits stay untouched: pending Board confirmations, approvals, monitors and blockers, human-owned reviews, typed review participants, pause holds, paused/budget-gated assignees, system-originated wakes, and terminal issues. Exhausted delivery is still recorded for a held assignee because the recovery action carries a `manual_repair_required` wake policy and wakes nobody. Co-Authored-By: Paperclip <noreply@paperclip.ing>