← Atlas Class

Scheduler / IPC

Queued work with dependency tracking and inter-agent messaging. Forced by latency: pipeline work needs mid-task discovery routed back, not silently swallowed.

A scheduler/IPC primitive queues work with dependency tracking and routes inter-agent messages so that mid-task discoveries reach the orchestrator in time to unblock the pipeline, rather than being silently swallowed.

How It Works

The Claude Code runtime exposes three cooperating surfaces. TaskList tracks work items and their state. SendMessage passes typed messages between agents -- including shutdown_request to terminate a worker cleanly. TeamCreate binds workers into a named group whose members can exchange messages synchronously, waiting for orchestrator acknowledgment before continuing.

These primitives land in explicit sequence. Version 2.1.32 proved the baseline pattern: agent teams with phase and role pivots outperformed fire-and-forget subagents on pipeline workloads. Version 2.1.71 added CronCreate/CronDelete tools plus /loop as a user-facing form -- the first surface an agent itself can call to schedule recurring work without a human re-prompting. Version 2.1.139 added /goal, a persistent completion condition that survives turn boundaries in interactive, -p, and Remote Control modes, turning each agent from one-shot into autonomous.

CLAUDE_CODE_DISABLE_BACKGROUND_TASKS is an instance of this primitive class: it is the instance-level flag that turns the scheduler surface off entirely, confirming the feature is modular and runtime-controlled.

"teams let them ask instead of thrash"

What the Runtime Test Found

The 2026-02-12 teams-vs-fire-and-forget test (28 tasks, 6 waves, ~47 files) produced the clearest evidence for when scheduling and IPC matter.

Wave 3 showed the failure mode of omitting IPC: a Sonnet combinator agent assumed @f3/vendor-alchemy-effect did not yet exist (it had been typechecking since Wave 1). It produced structurally correct but functionally empty stubs with // TODO: implement when vendor pkg exists. No message, no question -- the ambiguity resolved to a confident wrong assumption.

Wave 6 showed the fix. A Sonnet worker encountered a structural gap -- FullStackConfig had no slot for the runner service. It sent a message; the orchestrator replied "extend config later, don't block"; the worker continued to verification. The round-trip took seconds and unblocked the pipeline. Fire-and-forget would have skipped the gap silently or made the same wrong-assumption error as Wave 3.

Message latency was low; shutdown via SendMessage(type: "shutdown_request") was clean; the worker retained context across all three sequential tasks in the wave -- a capability fire-and-forget discards by design.

Why It Matters

The fundamental constraint is latency asymmetry. Static DAGs -- tasks fully specifiable in the dispatch prompt -- have no need for mid-run routing. But integration tasks, where one system's assumptions meet another system's reality, generate unknowns the prompt could not anticipate. Without a return channel, the agent must either guess (Wave 3 outcome) or halt. Scheduling + IPC converts that binary into a third option: route the question, receive an answer, continue.

The 2.1.32-to-2.1.169 arc hardened this substrate progressively: worktree isolation (2.1.50) removed the git index-lock collisions that made parallel workers unsafe; agent_id/parent_agent_id OTEL attributes (2.1.139) made parent/child routing traceable; dynamic workflows (2.1.154) scaled the pattern to tens-to-hundreds of coordinated background agents.

Caveats

Epistemic status: changelog-derived / not runtime-verified beyond the 2.1.32 baseline test. The Wave 6 finding is runtime-verified (2026-02-12). Cron scheduling, /goal persistence, and OTEL tracing attributes are changelog-derived and have not been independently reproduced in this lab. Idle notification spam (five pings in thirty seconds after task completion) is a known side effect of team workers -- system behavior, not agent behavior. Cost parity with sequential fire-and-forget was observed for three-task sequences; behavior at fleet scale (tens-to-hundreds of agents) remains unverified.

Members 8 across 2 versions
Evidence & receipt
  • fileAGENTIC-ESCALATION-ARC.md
◇ ed25519 receipt
idprimitive-class_beb08bdd2b51112d0fad9fd6
alged25519
pubkey9b87705613b1e2fd064d57fa75a6b679d2856ceafad6b1daa8f982493871b6dd
sigefb62216b1cf78e09735292d32fac6228c27a235352c1986684e81d54261b86ed0f62966f64505f3346903f251092747fd1ba183ac4f2f9880b134dbf5834a02

Signed with an ed25519 key held off the repo. Anyone can verify against the published public key; nobody without the secret key can forge it. Click verify: it recomputes the signature in your browser. The signature proves integrity and authorship of this exact content — not a third-party timestamp or that the underlying claim is objectively true. signedAt is when the @f3/attest pipeline ran, not when the work happened; the evidence refs carry the source dates.