Skip to content

fleet(queue): alert when the repo-queue broker transport is down — lanes currently starve silently at the Step 0 gate #6369

Open

Description

@dezren39

Problem

When the repo-queue broker transport fails, every worker lane exits silently at its Step 0 gate — by design — so a total queue outage produces no alert and no visible signal; the fleet just starves until someone notices.

Evidence: incident #5708 (2026-11-04). Root cause recorded on #5708: the broker host (laptop amd-6) was down 16:58–18:17 CST (orderly shutdown per wtmp, 1h19m), spanning the whole 17:11–17:20 CST failure window Lane G observed (proxy closed during CONNECT to 100.99.113.103:4801). The only reason the outage is tracked at all is that Lane G manually filed #5708. No automated check surfaced it.

Ask

Add earlier detection for repo-queue transport outages:

  • A check that runs on a cadence independent of lane shifts (e.g. the hourly repo-fleet-monitor, or a small standalone probe) that exercises fleet queue health end-to-end from the sandbox.
  • On repeated failure (e.g. 2 consecutive probes, or ~10 minutes), it surfaces an alert in the main chat and/or files ONE deduped incident issue (search open issues for an existing transport-incident issue first, like incident: repo-queue broker tunnel down 2026-11-04 23:11 UTC — worker lanes cannot claim (session proxy CONNECT closed) #5708 was filed by hand).
  • Recovery is also surfaced once (transport back up), so a silent gap in lane reports is distinguishable from a healthy idle queue.

Acceptance criteria

  • Simulated/observed broker-transport failure produces a visible alert within ~15 minutes, without any lane needing to file by hand.
  • No duplicate incident issues for the same outage window (dedupe against open transport-incident issues).
  • The check itself does not depend on the queue it monitors (it must be able to report the queue being down).

Secondary observation (no separate ask)

At the 2026-11-04 18:17 CST boot, queue-broker.service failed twice with cannot bind 100.99.113.103:4801: AddrNotAvailable (Tailscale address not yet assigned) and was listening by the 3rd systemd restart at 18:18:11 CST — self-healing in ~16s, recorded here for context only.

Activity

  1. added
    priority/highImportant and time-sensitive
    area/infraInfrastructure, deployment, and operations
    kind/infrastructureInfrastructure / host-portability work
    on Nov 5, 2026
  2. developing-today commented on Nov 5, 2026

    @developing-today
    Contributor
  3. added
    queue/queuedHas a queued task in the Supabase agent queue
    task/triageQueue packet kind: verify, reproduce, and route this item
    work/assignedQueue worker lifecycle state
    queue/claimedQueue worker lifecycle state
    and removed
    queue/queuedHas a queued task in the Supabase agent queue
    on Nov 6, 2026
  4. dezren39 commented on Nov 6, 2026

    @dezren39
    MemberAuthor

    🤖 Agent note · picked up

  5. dezren39 commented on Nov 6, 2026

    @dezren39
    MemberAuthor

    Triage — task 11087 (lane code-n, 2026-11-06)

    Verdict: CONFIRMED — real, not already handled, not superseded. Fix path scoped below; follow-up fix task enqueued from this triage.

    Evidence (fresh, this run)

    Why the gap still exists (current mechanisms checked)

    • fleet-watchdog (every 15m, built for issue Babysitter coverage gap: the cron fleet's own agent sessions have no real-time watcher #1358) watches cron job runs via live scheduler state and alerts on stuck/failing/silent jobs. It never exercises fleet queue health, so a transport outage whose symptom is lanes exiting silently at the Step 0 gate is not directly probed, no deduped transport-incident issue is filed, and there is no transport-specific recovery signal.
    • repo-fleet-monitor (every 2h) does call fleet queue health, but only inside duties that themselves depend on the queue — if the transport is down the monitor cannot do that work — and a 2h cadence cannot meet the ~15-minute alert acceptance criterion anyway.

    Scoped fix (recommended path)

    Add a transport probe duty to the existing fleet-watchdog (no new job — fewer jobs that do more):

    1. Each watchdog run executes fleet queue health --queue repo-health-code-pilot end-to-end from the sandbox and records the result in its state/log.
    2. On failure, re-probe once after ~90 seconds within the same run. Two consecutive in-run failures = outage (this filters the ~16s self-healing restart window noted in the secondary observation on issue fleet(queue): alert when the repo-queue broker transport is down — lanes currently starve silently at the Step 0 gate #6369, while still alerting inside one 15m watchdog cycle).
    3. On outage: alert in the main chat AND file ONE incident issue via gh (the reporting path — chat + gh — does not depend on the queue), deduped by searching open issues for an existing incident: repo-queue broker issue for the same outage window first (the incident: repo-queue broker tunnel down 2026-11-04 23:11 UTC — worker lanes cannot claim (session proxy CONNECT closed) #5708 pattern).
    4. On the first healthy probe after an alerted outage: post ONE recovery line, so a silent gap is distinguishable from a healthy idle queue.
    5. Mechanics: watchdog body changes follow the house rule — edit the repo copy first, commit, then apply the identical text via cron.update. No cadence/rate change is needed or proposed.

    Ordering / blockers

    🤖 Agent note · done (triage)

  6. added
    queue/queuedHas a queued task in the Supabase agent queue
    queue/claimedQueue worker lifecycle state
    work/assignedQueue worker lifecycle state
    and removed
    queue/claimedQueue worker lifecycle state
    work/assignedQueue worker lifecycle state
    queue/queuedHas a queued task in the Supabase agent queue
    on Nov 6, 2026
  7. dezren39 commented on Nov 6, 2026

    @dezren39
    MemberAuthor

    🤖 Agent note · handed off

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

    @dezren39
    MemberAuthor

    🤖 Agent note · handed off

  10. dezren39 commented on Nov 6, 2026

    @dezren39
    MemberAuthor

    🤖 Agent note · handed off

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    area/infraInfrastructure, deployment, and operationskind/infrastructureInfrastructure / host-portability workpriority/highImportant and time-sensitivequeue/parkedQueue task is parked (waiting on CI, time, or an event)status/parkedDeliberately paused with a recorded resume conditiontask/triageQueue packet kind: verify, reproduce, and route this itemwork/assignedQueue worker lifecycle state

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions