Skip to content

[bug] The Coder Lead refuses to delegate, citing a runner that is online — subordinate_status reports no connectivity at all #259

Description

@serge-ivo

Live test, 2026-08-06

Asked the Coder Lead (5fab318d) to delegate a read-only typecheck to any one of its four repo
coders. It replied:

  • FAS platform — idle, coding session completed. No active runner.
  • FWS platform — idle, coding session completed. No active runner.
  • FGS platform — coding session failed/orphaned. No active runner.
  • PAS Coder — idle, coding session completed. No active runner.

None of the four agents have a live coding session right now, so I cannot delegate the typecheck
job to any of them. You need to start a coding session (and run pags up) on at least one agent
before I can delegate anything.

Both halves of that are wrong.

1. The runner was online — and subordinate_status never mentions runners

coding_diagnostics for FAS (964594b6), same moment:

runnerOnline: true   runnerStatus: online   relayConnected: true   reachable: true
runnerVersion: 0.4.32   lastSeenAt: 2026-08-06 05:33:36   health.ok: true
activeSessions: 0

pags up was running the whole time. The Lead inferred "No active runner" from
activeSessions: 0 — two different things.

It had no choice but to guess, because the tool it read gives it nothing about connectivity.
observeSubordinates (lib/connectors/supervision.ts:94) composes exactly three sources:

subordinateSummaries(...)        // roster + SUBSCRIPTION state
recentWorkForInstances(...)      // board/work items
recentRunsForInstances(...)      // loop runs

No relayConnected, no runtime row, no node. So a supervisor asked "can they work?" has no
grounded answer, and fills the gap with the nearest available signal.

2. A live session is NOT a precondition for delegating

delegate_goal's handler has no runtime check and no session check — it starts a run. The
executor creates its own session.

Proven on this very instance two hours earlier: the FAS Coder had zero active sessions, called
start_work, and the Pilot created csess_a3f04e45 at 03:44:50 and ran the job. The Lead's stated
precondition is contradicted by its own subordinate's history.

Why this matters

This is the third instance of the same class (#254 told it cannot act, #255 not told what it owns),
and the most expensive: the supervisor refused work it could have done and told the user to
perform setup that was already done. A supervisor that under-reports capability is worse than no
supervisor — the human now has to verify every refusal.

Fix

Give the supervisor the signal. Add per-subordinate connectivity to the subordinate_status
view — live relay state (not the stale instance_runtimes row; see #238), node name, and runner
version. relayConnected already exists and is what coding_diagnostics uses.

Correct the precondition. delegate_goal's description should state that delegation does not
require a live session — the executor starts one — and that the only real blocker is no connected
runner for a subordinate whose work needs one. A cloud-only subordinate needs no runner at all.

Distinguish the two states in the summary. "idle, no active session" and "no runner connected"
must not render as one line, because the first is normal and the second is blocking.

Verification

  • With pags up running and no sessions, the Lead delegates successfully.
  • With the runner genuinely offline, it says so specifically and names the machine.
  • subordinate_status output contains a connectivity field per subordinate; the model is never
    asked to infer it.

Activity

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

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions