Description
The AFK work-problems orchestrator can double-dispatch the same ticket to two concurrent iter sessions, risking a commit race with no framework control. Observed: an iter ran gate reviews for a ticket, then discovered on first edit ("file modified since read") that a concurrent session was writing the identical ratified fix to the same files; the race was avoided only by ad-hoc settle-check discipline.
Symptoms
- No per-ticket lock, no iter-liveness check before dispatch, no working-tree-dirty preflight abort.
- Cost: double gate-review spend, double implementation spend, near-miss commit/index race in a shared working tree.
Affected plugin / component
@windyroad/itil — work-problems orchestrator (Step 5 dispatch).
Fix direction
Step 5 dispatch should take a per-ticket advisory lock and/or preflight-abort when the working tree already carries edits matching the ticket's fix paths.
Cross-reference
Reported from a downstream adopter; tracked locally as P112.
Versions
- Local plugin:
@windyroad/* (cache: itil 0.57.1)
- Claude Code CLI: 2.1.201 (Claude Code)
- Node: v22.17.1
- OS: Darwin 25.3.0 x86_64
Description
The AFK work-problems orchestrator can double-dispatch the same ticket to two concurrent iter sessions, risking a commit race with no framework control. Observed: an iter ran gate reviews for a ticket, then discovered on first edit ("file modified since read") that a concurrent session was writing the identical ratified fix to the same files; the race was avoided only by ad-hoc settle-check discipline.
Symptoms
Affected plugin / component
@windyroad/itil— work-problems orchestrator (Step 5 dispatch).Fix direction
Step 5 dispatch should take a per-ticket advisory lock and/or preflight-abort when the working tree already carries edits matching the ticket's fix paths.
Cross-reference
Reported from a downstream adopter; tracked locally as P112.
Versions
@windyroad/*(cache: itil 0.57.1)