diff --git a/dev/dev-agent.sh b/dev/dev-agent.sh index 031460f..477de5f 100755 --- a/dev/dev-agent.sh +++ b/dev/dev-agent.sh @@ -773,16 +773,8 @@ case "${_MONITOR_LOOP_EXIT:-}" in ;; crashed) # Belt-and-suspenders: _on_phase_change(PHASE:crashed) handles primary - # cleanup, but ensure labels and files are cleaned up if callback was - # interrupted (e.g. set -e propagation). + # cleanup (escalation, notification, labels, worktree, files). restore_to_backlog - if [ -z "${PR_NUMBER:-}" ]; then - cleanup_worktree - fi - rm -f "$PHASE_FILE" "${PHASE_FILE%.phase}.context" \ - "$IMPL_SUMMARY_FILE" "$THREAD_FILE" "$SCRATCH_FILE" \ - "/tmp/ci-result-${PROJECT_NAME}-${ISSUE}.txt" - [ -n "${PR_NUMBER:-}" ] && rm -f "/tmp/review-injected-${PROJECT_NAME}-${PR_NUMBER}" ;; done) # Belt-and-suspenders: callback in phase-handler.sh handles primary cleanup, diff --git a/dev/phase-handler.sh b/dev/phase-handler.sh index f67a36d..e7e1568 100644 --- a/dev/phase-handler.sh +++ b/dev/phase-handler.sh @@ -725,13 +725,10 @@ $(printf '%s' "$REFUSAL_JSON" | head -c 2000) echo "{\"issue\":${ISSUE},\"pr\":${PR_NUMBER:-0},\"reason\":\"crashed\",\"ts\":\"$(date -u +%Y-%m-%dT%H:%M:%SZ)\"}" \ >> "${FACTORY_ROOT}/supervisor/escalations-${PROJECT_NAME}.jsonl" - # Restore backlog label so issue can be retried + # Restore backlog label, clean up worktree + temp files restore_to_backlog - if [ -n "${PR_NUMBER:-}" ]; then - log "keeping worktree (PR #${PR_NUMBER} still open)" - else - cleanup_worktree - fi + [ -z "${PR_NUMBER:-}" ] && cleanup_worktree + [ -n "${PR_NUMBER:-}" ] && log "keeping worktree (PR #${PR_NUMBER} still open)" rm -f "$PHASE_FILE" "$IMPL_SUMMARY_FILE" "$THREAD_FILE" "${SCRATCH_FILE:-}" \ "/tmp/ci-result-${PROJECT_NAME}-${ISSUE}.txt" [ -n "${PR_NUMBER:-}" ] && rm -f "/tmp/review-injected-${PROJECT_NAME}-${PR_NUMBER}"