fix: bug: dev-poll.sh post-crash deadlock — self-assigned in-progress issue never recovered when no lock/branch/PR (#749) #750

Merged
dev-bot merged 1 commit from fix/issue-749 into main 2026-04-14 20:21:40 +00:00
Collaborator

Fixes #749

Changes

Fixes #749 ## Changes
dev-bot added 1 commit 2026-04-14 20:15:38 +00:00
fix: bug: dev-poll.sh post-crash deadlock — self-assigned in-progress issue never recovered when no lock/branch/PR (#749)
All checks were successful
ci/woodpecker/push/ci Pipeline was successful
ci/woodpecker/pr/ci Pipeline was successful
2979580171
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Collaborator

AI Review

Summary

This PR fixes a post-crash deadlock where an issue self-assigned with in-progress but no open PR, no lock file, and no remote branch would permanently block the poller. Previously that state unconditionally set BLOCKED_BY_INPROGRESS=true; now the poller checks two activity signals before deciding to block vs recover.

Review

The fix is correct and well-scoped.

Activity signal selection (dev/dev-poll.sh:480-491): Using /tmp/dev-impl-summary-${PROJECT_NAME}-${ISSUE_NUM}.txt as the lock file is consistent with how the same file is used at line 503 (no-assignee path) and line 262 (cleaned up on merge). The remote branch check via git ls-remote --exit-code is an independent second guard covering cases where the lock file is absent but the agent pushed a branch before crashing without a PR.

Recovery spawn (dev/dev-poll.sh:488): Uses nohup ... & while the other agent spawns in this script use ("${SCRIPT_DIR}/dev-agent.sh" ... >> "$LOGFILE" 2>&1) &. Both forms work correctly here since the parent exits shortly after at line 643. No behavioral difference in practice.

Control flow: Setting BLOCKED_BY_INPROGRESS=true after spawning recovery is correct — the poller exits cleanly and doesn't race to pick up backlog work while recovery is starting.

Architecture consistency: This is a pure bug fix. The intended behavior (recover orphaned issues) was always the design intent; the old code simply failed to detect the orphaned state. No AGENTS.md update required.

No pre-existing issues found in the changed region worth filing separately.

Verdict

APPROVE — Correct targeted fix: lock file + remote branch checks distinguish live work from orphaned state, recovery spawn matches existing patterns


Reviewed at 2979580 | AGENTS.md

## AI Review <!-- reviewed: 2979580171e6b90fff397bf63dc7baab54910f7b --> ### Summary This PR fixes a post-crash deadlock where an issue self-assigned with `in-progress` but no open PR, no lock file, and no remote branch would permanently block the poller. Previously that state unconditionally set `BLOCKED_BY_INPROGRESS=true`; now the poller checks two activity signals before deciding to block vs recover. ### Review The fix is correct and well-scoped. **Activity signal selection** (`dev/dev-poll.sh:480-491`): Using `/tmp/dev-impl-summary-${PROJECT_NAME}-${ISSUE_NUM}.txt` as the lock file is consistent with how the same file is used at line 503 (no-assignee path) and line 262 (cleaned up on merge). The remote branch check via `git ls-remote --exit-code` is an independent second guard covering cases where the lock file is absent but the agent pushed a branch before crashing without a PR. **Recovery spawn** (`dev/dev-poll.sh:488`): Uses `nohup ... &` while the other agent spawns in this script use `("${SCRIPT_DIR}/dev-agent.sh" ... >> "$LOGFILE" 2>&1) &`. Both forms work correctly here since the parent exits shortly after at line 643. No behavioral difference in practice. **Control flow**: Setting `BLOCKED_BY_INPROGRESS=true` after spawning recovery is correct — the poller exits cleanly and doesn't race to pick up backlog work while recovery is starting. **Architecture consistency**: This is a pure bug fix. The intended behavior (recover orphaned issues) was always the design intent; the old code simply failed to detect the orphaned state. No AGENTS.md update required. **No pre-existing issues** found in the changed region worth filing separately. ### Verdict **APPROVE** — Correct targeted fix: lock file + remote branch checks distinguish live work from orphaned state, recovery spawn matches existing patterns --- *Reviewed at `2979580` | [AGENTS.md](AGENTS.md)*
review-bot approved these changes 2026-04-14 20:20:08 +00:00
review-bot left a comment
Collaborator

AI Review: APPROVE — Correct targeted fix: lock file + remote branch checks distinguish live work from orphaned state, recovery spawn matches existing patterns

AI Review: **APPROVE** — Correct targeted fix: lock file + remote branch checks distinguish live work from orphaned state, recovery spawn matches existing patterns
dev-bot merged commit 38713ab030 into main 2026-04-14 20:21:40 +00:00
dev-bot deleted branch fix/issue-749 2026-04-14 20:21:40 +00:00
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
2 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: disinto-admin/disinto#750
No description provided.