Skip to content

Queue workers: give the non-code queues lane-style long-budget shifts (claim evaporation is a run-budget problem) #1130

Closed

Description

@dezren39

Problem

The three non-code queues (repo-health-opencode-pilot, repo-health-openchamber-pilot, repo-health-nix-pilot) are worked by short-budget arrangements — a 2-hourly agent-queue-worker cron and per-queue hook workers — while the code queue runs two staggered lane shifts (40-min cadence, ~90-min budget, bundle of up to 10, per-lane locks, atomic claims). The short-budget workers keep dying mid-task: they claim, label, do real work, and their run ends without a terminal verb (complete/park/block). The lease expires, labels and queue state diverge, and the fleet monitor spends a duty repairing the divergence instead of the fleet making progress.

Evidence (2026-10-26 alone)

Migration 0012 (2026-10-26) fixed the attempt accounting (park/resume no longer consumes attempts), but evaporation itself is a run-budget problem: a worker whose run can be cut at any resolve/timeout boundary will keep stranding claims no matter how the attempts are counted.

Proposal

Give each non-code queue the lane treatment the code queue proved out on 2026-10-26:

  • One cron-driven shift worker per queue (or one worker rotating queues per shift), 40–60 min cadence, ~90-min run budget, bundle of up to 5 tasks strictly one at a time.
  • Per-queue lock file; a lane gates out only on its own live lock.
  • Same worker instruction as the code lanes (claim → checkpoint on claim → outcome-early ordering → park instead of waiting on CI → verified terminal state before claiming the next), including the §10 anti-evaporation discipline.
  • Retire or repurpose the short-budget hook workers for those queues once the shifts are live (keep them as fallback, as the code hook was kept).

Acceptance criteria

  • Shift worker(s) exist for the opencode, openchamber, and nix queues with the lane properties above (cadence, budget, bundle, own-lock gating).
  • A full day of operation with zero claim evaporations on the non-code queues (monitor Duty 1 addendum finds no divergences to repair), or every evaporation traced to a named infrastructure cutoff with the task recovered by the next shift without operator help.
  • Tasks 1149 and 1157 reach terminal states through the new workers without further operator cap raises.
  • The fleet monitor's per-run evaporation-repair count for non-code queues trends to zero over the following week (measured at the queue-pilot interim check).

Filed by Muse (operator) 2026-10-26 at Drew's direction to keep improving the process. Related: migration 0012 (attempt accounting), the 2026-10-28 queue-pilot interim check.

Activity

  1. added
    kind/featureNew feature or capability request
    priority/highImportant and time-sensitive
    queue/queuedHas a queued task in the Supabase agent queue
    area/infraInfrastructure, deployment, and operations
    effort/mMedium: expected under 1 day of work
    on Oct 27, 2026
  2. developing-today commented on Oct 27, 2026

    @developing-today
    Contributor
  3. dezren39 commented on Oct 27, 2026

    @dezren39
    MemberAuthor

    Update (2026-10-27, Drew's scale-out direction): the lane half of this issue is being built now as #1335 under epic #1334 — A/B shifts for the opencode, openchamber, and nix queues on the code-lane pattern. This issue stays open for its remaining scope (the fallback 2-hourly worker's retirement criteria and the zero-repairs/day acceptance) and as the design record.

  4. added
    work/assignedQueue worker lifecycle state
    queue/claimedQueue worker lifecycle state
    and removed
    queue/queuedHas a queued task in the Supabase agent queue
    on Oct 27, 2026
  5. 16 remaining items

  6. added
    work/assignedQueue worker lifecycle state
    queue/claimedQueue worker lifecycle state
    queue/parkedQueue task is parked (waiting on CI, time, or an event)
    status/parkedDeliberately paused with a recorded resume condition
    and removed
    queue/queuedHas a queued task in the Supabase agent queue
    queue/claimedQueue worker lifecycle state
    on Nov 1, 2026
  7. dezren39 commented on Nov 1, 2026

    @dezren39
    MemberAuthor

    agent-note:v1
    task: 5529 (triage, lane A)
    state: triaged — IMPLEMENTED; closing with evidence
    checked_at: 2026-11-01T12:36Z

    Acceptance check against live state:

    • Shift workers exist for all three non-code queues with lane properties: repo-queue-worker-shift-opencode, repo-queue-worker-shift-openchamber, repo-queue-worker-shift-nix — each enabled, 40-min cadence, timeout_secs 5400 (~90-min budget), bundle of up to 10, per-queue lane lock (e.g. ~/hooks/state/repo-queue-openchamber-worker-a.lock), same lane-shift instruction + §10 anti-evaporation discipline as the code lanes. Lane B definitions exist for each queue (currently disabled — the proposal asked for one shift worker per queue, which is live).
    • Tasks 1149 and 1157 reached terminal states without further operator cap raises: 1149 done 2026-10-27T11:10Z (opencode), 1157 done 2026-10-27T09:12Z (openchamber). The other named evaporations also terminated: 1160 done 2026-10-27, 1177 done 2026-10-27, 1187 cancelled.
    • [~] Zero-evaporation day + week trend (criteria 2 and 4): these are measurements, owned by the fleet monitor's Duty 1 addendum and the queue-pilot interim check, not by a fix task. Current health: opencode queue queued=0 with 87 terminal events/24h; openchamber 112 terminal/24h — the queues drain under the lane shifts. If the monitor finds a fresh divergence trend on the non-code queues it re-files under its own duty; this issue's implementation ask is complete.

    Closing as implemented. The old 2-hourly agent-queue-worker cron remains enabled as a general pilot worker (fallback role, as the proposal allowed for the retired hook workers).

  8. removed
    status/parkedDeliberately paused with a recorded resume condition
    queue/parkedQueue task is parked (waiting on CI, time, or an event)
    work/assignedQueue worker lifecycle state
    on Nov 1, 2026
  9. dezren39 commented on Nov 1, 2026

    @dezren39
    MemberAuthor

    🤖 Agent note · done

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

area/infraInfrastructure, deployment, and operationseffort/mMedium: expected under 1 day of workkind/featureNew feature or capability requestpriority/highImportant and time-sensitivestatus:done

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions