You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
A lead cannot see its own workers: parent_agent_id is null on EVERY record in the registry
Etan, 2026-08-19, watching ~10 live worker panes in one workspace: "List agents shows you 0 when there are actually, like, almost 10 of yours… What the actual fuck?"
Measured on this machine, same minute:
list_agents({mine:true}) -> count: 0
list_agents({parent_agent_id:"cmuxlayerClaude"}) -> count: 0
registry on disk (~/.local/state/cmux-agents/**/*.json):
total records 336
records with ANY parent_agent_id 0 <-- all 336 are parentless
Meanwhile six of this lead's workers have open PRs (#478#483#486#487#489#494) and their panes are visible on screen. Every one of them was created by spawn_agent from this seat, and several spawn receipts returned parent_agent_id:"cmuxlayerClaude" at the time — the value is returned to the caller and then not persisted, or is dropped on the next reconcile/rewrite.
Why this is load-bearing, not cosmetic
mine:true is the documented way a lead enumerates its workers. It returns nothing, so a lead has no tool-level answer to "what did I spawn?" — it must track PR numbers by hand, which is exactly the coordination the layer exists to provide (AGENTS.md: "orc, the leads, and the other workers know what each other are doing… without anyone opening a pane").
Halt escalation walks the parent chain.nearestLiveHaltAncestor and the idle_without_done notification need a parent; with none stored, escalations have nowhere to go — which matches the fleet-wide inbox_monitor_not_alive and the "worker finished into silence" class this whole sprint is about.
Persist parent_agent_id at spawn and preserve it across reconcile, repair, discovery and revive — a value returned in a receipt but absent from the record is the same class of lie this repo has been fixing all week.
Make mine:true / parent_agent_id filters work off that stored value, and add a regression test that spawns a child and asserts the parent is present AFTER a sweep (not only in the spawn receipt).
Backfill where derivable (surface lineage, spawn events) or state plainly that historical records cannot be attributed.
A lead cannot see its own workers:
parent_agent_idis null on EVERY record in the registryEtan, 2026-08-19, watching ~10 live worker panes in one workspace: "List agents shows you 0 when there are actually, like, almost 10 of yours… What the actual fuck?"
Measured on this machine, same minute:
Meanwhile six of this lead's workers have open PRs (#478 #483 #486 #487 #489 #494) and their panes are visible on screen. Every one of them was created by
spawn_agentfrom this seat, and several spawn receipts returnedparent_agent_id:"cmuxlayerClaude"at the time — the value is returned to the caller and then not persisted, or is dropped on the next reconcile/rewrite.Why this is load-bearing, not cosmetic
mine:trueis the documented way a lead enumerates its workers. It returns nothing, so a lead has no tool-level answer to "what did I spawn?" — it must track PR numbers by hand, which is exactly the coordination the layer exists to provide (AGENTS.md: "orc, the leads, and the other workers know what each other are doing… without anyone opening a pane").nearestLiveHaltAncestorand theidle_without_donenotification need a parent; with none stored, escalations have nowhere to go — which matches the fleet-wideinbox_monitor_not_aliveand the "worker finished into silence" class this whole sprint is about.parent_agent_id:nullon a spawned child, attributed to caller resolution filtering a stale-donerecord — F1: one stale registrydonestate silently voids FOUR ratified contracts on the default path (U6, U8/#404, P11 closure, #378 guard) #457). This measurement shows it is not one instance: it is 336 of 336.Asks
parent_agent_idat spawn and preserve it across reconcile, repair, discovery and revive — a value returned in a receipt but absent from the record is the same class of lie this repo has been fixing all week.mine:true/parent_agent_idfilters work off that stored value, and add a regression test that spawns a child and asserts the parent is present AFTER a sweep (not only in the spawn receipt).donestate silently voids FOUR ratified contracts on the default path (U6, U8/#404, P11 closure, #378 guard) #457's caller-resolution fix: if the caller is resolved but the value is then dropped downstream, both halves need the test.— cmuxlayerClaude (lead) · claude-code/claude-fable-5