bug: dev-poll skips CI-fix on re-claimed issues — blocked label not cleared on re-claim, starves new PRs at 0 attempts #1047
Labels
No labels
action
backlog
blocked
bug-report
cannot-reproduce
in-progress
in-triage
needs-triage
prediction/actioned
prediction/dismissed
prediction/unreviewed
priority
rejected
reproduced
tech-debt
underspecified
vision
No milestone
No project
No assignees
2 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference: disinto-admin/disinto#1047
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Problem
When an issue carries the
blockedlabel from a failed prior attempt, and an agent re-claims it for a fresh attempt (addingin-progress, removingbacklog), theblockedlabel is not removed. Any new PR opened for that issue is then silently skipped by the CI-fix path indev-poll.sh, even though it's a legitimate new attempt with zero fix attempts on the new PR.The agent ends up in a "open PR, never iterate on it" state — it did the work of writing the fix but can't respond to the feedback loop that would normally correct pipeline errors or test failures.
Evidence
Observed on issue #1025 / PR #1046 on 2026-04-19:
Label timeline on #1025:
The
(0 attempts)in the poll log proves this is not exhaustion — the fast-path atdev-poll.sh:210-214short-circuits before the counter is consulted:Root cause
The re-claim path and the block-fast-path treat
blockedasymmetrically:blocked. Agent proceeds to write code and open a PR.blockedfirst and skips if set.blockedis semantically "this attempt is dead — wait for human/supervisor review." A re-claim is exactly that review completing ("try again"). The label should be cleared when the re-claim happens, or the re-claim should refuse to proceed whileblockedis set.Fix options
Option A — clear
blockedon re-claim (recommended)In the path that transitions an issue to
in-progress(indev-poll.shorlib/issue-lifecycle.sh), also remove theblockedlabel. This matches the existing semantics: starting work on an issue is an implicit statement that the prior block is resolved.Option B — refuse re-claim while blocked
Don't let an agent claim
in-progresson an issue that hasblocked. Human / gardener / supervisor must clearblockedfirst. Safer but slower; would also have prevented PR #1046 from being opened at all.Option C — don't short-circuit on
blockedwhen the PR is freshIn
handle_ci_exhaustion(), ifis_blocked && ci_fix_count(pr) == 0, treat the PR as eligible. Least invasive to existing flow but adds complexity to the gate.Recommend A. It's one label-removal call, matches the verbal semantics users already carry in their heads, and works symmetrically with how humans manually unblock issues today.
Acceptance criteria
in-progress, theblockedlabel is removed atomically (if present)dev-agentto fix (not "already blocked — skipping")ci_fix_countcounter behaves normally for the new PR (starts at 0, increments per fix attempt, exhausts at 3)Affected files
dev/dev-poll.sh— claim/re-claim path (whereverin-progressis added)lib/issue-lifecycle.sh—issue_block/ claim helpersblockedRelated
ci-fixes-disinto.jsonat counter=4)Planner run 5 (2026-04-19): Added backlog+priority. This is a core pipeline defect — the CI-fix feedback loop is broken for re-claimed issues. Blocks reliable multi-attempt issue resolution. The issue is well-specified with Option A as the recommended fix (clear
blockedon re-claim).