Skip to content

Upgrade Atomic to the stable 0.9.44 release - #728

Merged
lavaman131 merged 1 commit into
mainfrom
atomic-0.9.44
Oct 25, 2026
Merged

lavaman131 merged 1 commit into
mainfrom
atomic-0.9.44

Conversation

@lavaman131

Copy link
Copy Markdown
Collaborator

Moves the Atomic harness to the stable 0.9.44 release.

Versions. catalog:harness pins @bastani/atomic 0.9.44. The lockfile resolves @bastani/atomic, @bastani/atomic-natives with its eight platform packages, and @bastani/pi-ai at 0.9.44, with no older @bastani package left. Atomic's @earendil-works pi packages stay at 1.4.0; undici moves from 8.10.2 to 8.12.3 with it.

What changed in Atomic, and what it means here.

  • Breaking change in @bastani/pi-ai: appendGrammarToolInputJsonDelta() no longer closes the input. Nothing in Chopin calls it, and the toolcall_delta events the adapter forwards still carry only the new text, so the adapter needs no code change.
  • Swarm defaults: a workflow now runs up to 1000 stages at once (defaultConcurrency, 3 before) and nests at most three levels (maxDepth, 4 before). A stage's subagent tool now runs up to 1000 children (parallel.*, 3 and 4 before). Without a pool, all of them run in the Chopin server process. I gave a Planner workflow maxDepth: 1 in the agent directory's extensions/workflow/config.json, and it failed with maxDepth exceeded, so Planner sessions do read that file. The self-hosting guide now lists the new defaults and names that file and the subagent one for throttling. Chopin sets none of these itself.
  • Intercom send/ask default to "steer": a message the Planner sends a busy stage now arrives after the stage's current tool calls finish, where 0.9.43 cancelled them. "interrupt" keeps the old behavior. The hosted agent guide says so. A busy Planner session still refuses incoming messages, and a message queued while it is idle still starts a turn that the adapter stops. Neither path changed.
  • Pool coordinator process: I ran a real Planner workflow with an operator-enabled pool. Its two children ran in separate worker processes, the pool's tables went into Chopin's journal with no default journal created, and the run card ended finished. With a child that crashes, the failed workers' logs stayed beside that journal inside the 0700 directory, and the card ended failed. The self-hosting guide describes the coordinator.
  • Journal group-commit, faster resume, delivery and completion-notice fixes: these are internal to Atomic. Chopin's journal path, pause and resume calls, and its stopping of turns Atomic starts by itself all work as before.

Connector. Not changed; it does not depend on Atomic.

Verification

  • bun test: 6734 pass, 22 skip, 0 fail
  • bun run types and bun run ci pass
  • The server Docker image builds. It starts healthy with HARNESS=atomic and loads Atomic 0.9.44 and pi-ai 0.9.44
  • Targeted bun run e2e (harness, run card, smoke, decisions deck): 35 passed

The harness catalog now pins @bastani/atomic 0.9.44, and the lockfile
resolves @bastani/atomic, @bastani/atomic-natives with its eight platform
packages, and @bastani/pi-ai at 0.9.44, with no older @Bastani package
left. Atomic's @earendil-works pi packages stay at 1.4.0; undici moves to
8.12.3 with it.

The breaking change in @bastani/pi-ai, appendGrammarToolInputJsonDelta()
no longer closing the input, does not reach Chopin: nothing here calls
it, and the toolcall_delta events the adapter forwards still carry only
the new text. Nothing else the adapter calls changed shape, so it needs
no code change.

Two changes do affect a Chopin server, and the guides now say so. A
workflow now runs up to 1000 stages at once (3 before), nests at most
three levels (4 before), and a stage's subagent tool runs up to 1000
children (3 and 4 before), all in the server process without a pool.
A Planner workflow under a maxDepth of 1 in the agent directory's
extensions/workflow/config.json failed with "maxDepth exceeded", so
Planner sessions read that file, and the self-hosting guide names it and
the subagent file for throttling. Intercom messages the Planner sends a
busy stage now arrive after its tool calls instead of cancelling them,
unless sent as an interrupt; the hosted agent guide says so.

Worker pools now run under a coordinator process. A real Planner
workflow with an operator-enabled pool ran its two children in
separate worker processes, kept the pool's tables in Chopin's journal
and no default journal, and finished; with a child that crashes it kept
the failed workers' logs beside that journal, inside the 0700 directory,
and the run card ended failed.

Messages a busy Planner session receives over Intercom are still
refused, and one queued on an idle session still starts a turn the
adapter stops, so nothing changes there.

Assistant-model: Claude Opus 5.5 (fast)
Assistant-workflow: inline (fast subagents)
Assistant-verification: bun test (6734 pass, 22 skip, 0 fail), bun run types, bun run ci
Assistant-verification: real Planner workflow with a local worker pool finished on worker processes, journaled where Chopin chose; a crashing child failed the run and kept its worker logs there
Assistant-verification: a workflow maxDepth set in the agent directory's workflow config limited a Planner's workflow
Assistant-verification: docker build of the server image; container started healthy with HARNESS=atomic and imports Atomic 0.9.44
Assistant-verification: targeted bun run e2e (35 passed)
User-preference: Keep Atomic and its transitive packages on the same release everywhere
Co-authored-by: Alex Lavaee <alexlavaee@microsoft.com>
@lavaman131 lavaman131 self-assigned this Oct 25, 2026
@lavaman131
lavaman131 merged commit 73dbcf3 into main Oct 25, 2026
24 checks passed
@lavaman131
lavaman131 deleted the atomic-0.9.44 branch October 25, 2026 18:31
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant