Skip to content

Babysitter coverage gap: the cron fleet's own agent sessions have no real-time watcher #1358

Open

Description

@dezren39

The gap (found in fleet review, 2026-10-27)

The babysitter (openchamber-babysitter, every 20m) watches OpenCode/OpenChamber sessions: verdicts, stall detection, nudges. But the fleet's other working sessions — the cron agent runs themselves (lane shifts, producers, monitor, steward, dispatcher) — have no real-time watcher at all.

What covers them today: the fleet monitor's hourly reconciliation, which finds claim evaporation after the fact (labels repaired, handoffs posted), and the lane gate/lock discipline. On 2026-10-26 that meant evaporation on the opencode/openchamber queues was discovered up to an hour late — task 1149 (#530) burned multiple attempts before its final one died at 7/7 — and several shift reports never arrived in chat at all (now tracked as the certification problem, #1131). Detection latency, not detection absence, is the gap.

Scope (assess, then build or formally accept)

  • Assess a lightweight run-watch for cron executions: a run sitting in its execute phase far beyond its job family's p90 duration (baselines exist in run history) gets flagged within ~20 minutes — e.g. a small periodic check over scheduler run state, or a heartbeat convention lane runs touch at checkpoint time that a watcher can staleness-test.
  • The watcher's output should be the same shape as the monitor's repairs (flag + evidence), just faster; intervention stays with the existing owners (monitor repairs, lanes re-claim).
  • Alternatively, if the assessment shows the hourly bound is acceptable — e.g. because migration 0012 + lane discipline made evaporation cheap and rare — record that reasoning here with the evaporation census numbers that support it, and close this as a documented acceptance.

Acceptance criteria

  • An assessment exists (comment on this issue) with run-duration baselines per job family and the observed detection latencies for the 2026-10-26 evaporation cases.
  • Either a run-watch mechanism is built and demonstrated flagging a stale run inside ~20 min, or the hourly bound is explicitly accepted with the supporting numbers recorded.
  • The decision is reflected in the babysitter/monitor instruction files (who watches what, at what latency).

Filed by Muse (operator) 2026-10-27, from the cadence/scope review with Drew.

Activity

  1. added
    kind/featureNew feature or capability request
    priority/normalOrdinary priority (the default)
    queue/queuedHas a queued task in the Supabase agent queue
    area/infraInfrastructure, deployment, and operations
    effort/mMedium: expected under 1 day of work
    meta/enrichedIntake review done: acceptance criteria, links, and normalized labels added
    on Oct 27, 2026
  2. developing-today commented on Oct 27, 2026

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

    @dezren39
    MemberAuthor

    Mechanism built (2026-10-27, Drew's 'improve #2'): fleet-watchdog job, every 15 min — checks every fleet job's scheduler state for stuck runs (per-family age thresholds), failure streaks (≥2), silent jobs (no run in 2× cadence), and watcher gaps (any babysitter or fleet-monitor failure, or a >2-cycle gap, is highest priority). Alert-only by design: it never restarts or edits a job (auto-restart can duplicate side effects); alerts land in the fleet/token chat and the watchdog log. This issue stays open for its assessment half: whether the 15-minute alert bound + hourly monitor reconciliation is sufficient, or the fleet needs run-phase heartbeats pushed from the jobs themselves.

  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 Nov 2, 2026
  5. 75 remaining items

  6. 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 4, 2026
  7. dezren39 commented on Nov 4, 2026

    @dezren39
    MemberAuthor

    agent-note:v1
    event: parked
    task: 6496 (repo-health-code-pilot; worker repo-worker-code)
    state: parked until 2026-11-04T08:37Z (30 minutes)
    lane: bf419306-c4ef-470f-a553-beabf93239de
    verified: #1358 remains OPEN with no open PR or hard-stop label; #2132 remains OPEN and its 48-hour comparison is still assigned to task 8468 per its latest note; #2153 remains OPEN with the conductor cutover reported complete. The laptop has cached fleet-watchdog/conductor/babysitter logs through 2026-11-04 01:26 CST, but they contain sampled summaries, not per-family run-history rows or the exact 2026-10-26 evaporation/alert timestamps. No fleet scheduler timer or local muse.db/run-history source is present, and repo-queue.py has no run-history verb. Also, #530 is an unrelated merged UTS-46 PR, so the packet's task 1149 / #530 reference needs its repository URL to disambiguate.
    blocker: Cannot produce defensible p90 baselines, detection latencies, or the accept-or-extend decision without the scheduler history and timestamped events; no instruction files were edited and no numbers were invented.
    resume: Provide a credential-free scheduler-history export with per-family run durations and timestamps for each 2026-10-26 run start, evaporation, monitor discovery, and watchdog alert; include task 1149's repository URL. Resume after task 8468 posts or dispositions the #2132 cost comparison, then decide on #1358 and update the watcher instructions.

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

    @dezren39
    MemberAuthor

    🤖 Agent note · handed off

  10. dezren39 commented on Nov 4, 2026

    @dezren39
    MemberAuthor

    agent-note:v1
    {"kind":"handoff","task":6496,"lane":"code-v","execution_lane":"opencode","state":"parked","note":"task 6496 handed off to opencode claimant by lane code-v. Fresh revalidation: issue #1358 OPEN, no hard-stop labels, no open PR for this issue per prior progress. Prior park evidence preserved: scheduler run-history source for baselines/detection latencies was not found locally or on the laptop — claimant resumes the assessment from task progress."}

  11. 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 4, 2026
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 requestmeta/enrichedIntake review done: acceptance criteria, links, and normalized labels addedpriority/normalOrdinary priority (the default)queue/parkedQueue task is parked (waiting on CI, time, or an event)source/creatorFiled by the new-issue-creator jobstatus/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