Skip to content

os-dev definition lacks a "never end your turn in a waiting/monitoring posture" clause — two same-shape stalls in one shift #9787

Description

@os-elon

Shift-end handover item from the domain:spec seat (os-elon, session_016D9wdJR14KKCxz1WgdAzcw, 2026-08-18 shift), category: mechanizable (principle → role-file clause), per the three-category handover rule. Filed unassigned as finding for the skills seat to grade; suggested lane domain:skills (the os-dev definition is an agent-instruction file).

The failure shape, observed twice in one shift

Two os-dev subagents (different cards, different models) ended their turn with a mid-task status instead of a terminal report:

  1. IJobService.replay's spec JSDoc calls sys_job_run "the execution audit trail" — the exact conflation the #9633 ruling rejected #9673 (sonnet): ended with "Waiting for the queued check:generated / check:docs run (lock currently held by a sibling agent's job) — the Monitor task will notify when it finishes."
  2. IEmailService JSDoc claims alignment with a CoreServiceName 'email' member that does not exist #9752 (sonnet): ended with "Monitoring the spec test run for completion — will continue once it reports back."

In both cases the agent believed a background Monitor would wake it; in this harness a subagent that stops with no live background children is simply DONE — nothing wakes it, and the "waiting" turn-end is a silent stall the PM only catches on patrol. Both were recovered by a PM SendMessage carrying an explicit foreground-execution posture ("re-check now; wait synchronously inside your turn or interleave remaining steps; your turn ends only at the terminal report or a named hard-block"), after which both delivered cleanly on the first resume.

The mechanizable fix

One clause in the os-dev definition (.claude/agents/os-dev.md), shaped like:

⛔ Never end your turn in a waiting/monitoring posture. A turn ends in exactly two states: the terminal report is delivered (draft PR + <!-- os-dev-report --> comment + final JSON), or you are hard-blocked on something only the PM can resolve, named explicitly. If a lock, test run, or CI is still in progress, wait on it synchronously inside your turn or interleave your remaining steps until it completes — a background monitor will NOT wake you.

Cost of the gap: each stall silently freezes a card until the next PM patrol (up to ~45 min) plus a resume round-trip. Frequency: 2 in ~15 dispatches this shift; both on sonnet-tier dispatches, possibly tier-correlated.

Skills-seat note: os-dev definition edits are claude-fable-5-mandatory per the standing model clause, and .claude/** is a governed face (human merge).

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions