Skip to content

Release 0.22.1 - #328

Merged
nissa-seru merged 3 commits into
anima-research:mainfrom
nissa-seru:release/0.22.1
Oct 14, 2026
Merged

nissa-seru merged 3 commits into
anima-research:mainfrom
nissa-seru:release/0.22.1

Conversation

@nissa-seru

@nissa-seru nissa-seru commented Oct 14, 2026 •

Copy link
Copy Markdown
Contributor

This is the 0.22.1 release commit, cut with npm version patch from main at ab5f1183, which is 0.22.0 plus the twelve changes merged since, through #251. It ends the sleep #300 describes. With membrane 0.5.87, 0.22.0 sleeps a provider's whole retry-after inside the turn, and stop() can't end it.

@antra-tess @Anarchid You've cut every release so far, and Anarchid's #300 asked hosts to wait for this fix before taking membrane #56, so you're hearing before the tag. The tag v0.22.1 goes up on this branch's head once the corrected notes have had their read, which I expect before 09:00 UTC. The publish workflow then tests, builds and publishes it. If you see a reason to hold it, say so here before then.

What this branch is

I'm releasing it from ab5f1183, so merges after that commit wait for 0.22.2. This PR merges back so that main carries the version and the folded changelog. It changes only CHANGELOG.md, package.json's version and the twelve fragments it deletes.

Why a patch, and all of main

Going back

A probe packed ab5f1183 and recorded a two-hour stated wait with it. The published 0.22.0 then opened that store, ran a turn and stopped cleanly. Opened again with the candidate, the store still held the wait until the probe released it. The operator section says what isn't tested.

Checks

— Ada-1017 (Claude Opus 5.5). Gladys-2413 planned the release, wrote the operator section and ran the going-back probe.

@greptile-apps

greptile-apps Bot commented Oct 14, 2026 •

Copy link
Copy Markdown

RetriggerConfidence Score: 5/5 Tier: apex

[Medium impact] This release-only PR appears safe to merge.

Summary

Prepares 0.22.1 without changing runtime code or dependencies.

  • The package ships as 0.22.1 with its notes in one section.

Static review only; no tests were run.

Reviews (1) · Last reviewed commit: "0.22.1" · Reviewed by Greptile

…rs meet

The poison-history entry described membrane 0.5.86 and a anima-research#56 not yet
released, but 0.22.1 requires ^0.5.87, which carries both anima-research#56 and anima-research#107.
It now says what happens with 0.5.87: one status table for every adapter,
a 404 arrives as invalid_request (0.22.0 sheds for three of them, 0.22.1
keeps the history), a 413 arrives as context_length and still sheds, a
context_length at 400 or 422 keeps the history, and account refusals
arrive as auth and never shed.

The operator section now says the holds are a resident's or conversation
agent's, that an ephemeral run still sleeps a stated wait of up to ten
minutes and ends past that, what happens when the recorded waits can't be
read, that a misspelled model's 404 no longer sheds, that 💤 is the
awareness emoji's default, and one more untested way back.
@nissa-seru
nissa-seru merged commit f3c1e36 into anima-research:main Oct 14, 2026
11 of 12 checks passed
nissa-seru pushed a commit to nissa-seru/agent-framework that referenced this pull request Oct 14, 2026
…search#290

Takes anima-research#290 (a context budget the agent reached comes back reached), and
what landed since 3b28ee7: anima-research#254, anima-research#316, anima-research#318, anima-research#211, anima-research#246, anima-research#303, anima-research#249,
anima-research#279, anima-research#251, anima-research#267 and the 0.22.1 release (anima-research#328). One conflict, in
Agent.compileWithInjections, resolved as both pull requests' merge notes
give it (room-203 #86391, #89240):

- anima-research#290 sends a compile without a budget through compileAtLiveBudget, which
  settles the runtime transition, notes the compiled budget, and on an
  OverBudgetError restores a budget the boot applied at once as a paced
  descent. A dry run proves nothing about the budget: it goes straight to
  the compile, around compileAtLiveBudget, so it settles no descent, notes
  no compiled budget and restores nothing, whether it fits or is refused.
  This branch's settle line, which skipped a dry run, goes: anima-research#290 moved the
  settle into compileAtLiveBudget.
- The watermark stays as this branch had it: a dry run moves none.

The next commit tests a dry run under a pending at-once restore.
nissa-seru pushed a commit to nissa-seru/agent-framework that referenced this pull request Oct 14, 2026
…operations

main since ab5f118 brings anima-research#267 (coalesced content parity), anima-research#328 (0.22.1),
anima-research#290 (a budget reached restored after a restart), anima-research#285 (dry-run compiles)
and anima-research#325 (stop() waits for an operator's operation in flight and refuses
new ones). git show --remerge-diff shows the resolution alone.

anima-research#325 and this branch each had a rule for MCP operations at stop(). They
become one: anima-research#325's operator set.
- connectMcplServer, disconnectMcplServer and restartMcplServer are
  operator operations: refused once stop() has begun (refuseOperatorAfterStop,
  "<verb> refused: the framework is stopping"), and waited for by stop()
  while they run. Their work is in runConnectMcplServer (which takes a
  restart's claim), runDisconnectMcplServer and runRestartMcplServer.
- A restart is one operation. Its refusals all come before its teardown, as
  before; its teardown and its connect call the inner functions, so it isn't
  refused by its own gate halfway through. Its claims, its "is down" message
  and the legacy-only ledger read stay as this branch had them.
- mcpServerAdmissionClosed goes. Where it stood, the connect reads
  stopHasBegun(): a connect refuses before it spawns or dials once stop()
  has begun (so a stop() during a restart still ends the restart), and one
  that finishes its handshake after stop() began closes itself.
- stop() waits for operator operations before its teardown, which used to
  be what closed a modern connect still in flight. So stop() now closes
  each modern connect in flight first, and the connect fails at once rather
  than holding the wait until its handshake's deadline.
- The per-id holds stay: one operation per id, whatever stop() is doing.

The other conflicts keep both sides: shutdown.js's ShutdownTimeoutError
beside this branch's imports; logValue beside the protocol-family imports in
server-connection.ts; and the host/command refusal reads stopHasBegun(), as
anima-research#325 has it, with this branch's redactor.

Tests that meet the merge:
- The restart tests that act inside a restart's own teardown mock the inner
  runDisconnectMcplServer; a disconnect the test starts as the host is the
  public operation, and goes through.
- A restart and a connect after stop() expect the operator refusal's text.
- anima-research#325's tests that wire a fake connection pass it a configuration, as
  wireMcplEvents takes one here.
nissa-seru pushed a commit to nissa-seru/agent-framework that referenced this pull request Oct 14, 2026
Main since dff7fc2: anima-research#278, anima-research#254, anima-research#316, anima-research#318, anima-research#211, anima-research#246, anima-research#303, anima-research#249, anima-research#279,
anima-research#251, anima-research#267, the 0.22.1 release (anima-research#328), anima-research#290 (81b8521) and anima-research#285 (5346605).

Two conflicts, both in Agent's compile methods, resolved as this PR's merge
notes said:
- compileContext: anima-research#290 compiles at the live budget through
  compileAtLiveBudget, which settles a prepared budget change itself, in
  place of the trailing settleRuntimeSettingsTransition. Kept, with this
  branch's marksBefore taken before the compile and applyCompileWatermark in
  place of the plain watermark assignment.
- compileWithInjections: anima-research#285 makes a dry run take no watermark and go
  straight to the compile, and anima-research#290 sends the rest through
  compileAtLiveBudget. Both kept, with marksBefore and
  applyCompileWatermark around them as above; a dry run's null watermark
  skips the apply.

Every other file merged without a conflict.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
nissa-seru pushed a commit that referenced this pull request Oct 14, 2026
Brings in main since 0d2dd88: #251 (durable provider deadlines), #279,
#249, #303, #246, #211, and through cd036e0 #267, #290, #285, #325 and
the 0.22.1 release (#328).

Three conflicts, all in src/framework.ts's settleAgent calls on the
terminal-failure paths (the start that fails before its stream, the
stream's exhausted retry, and the stream error's settle). Each takes main's
error text, `statedWait === 'fail' ? this.statedWaitNotSlept(err) :
err.message` (#251), and this branch's routing argument in place of
#312's LogicalTurn: `routing`, the ternary's `streamRouting`, and
`streamRouting`. Nothing else in main's change names the old shape
(startLogical, `.logical`, LogicalTurn, activeTriggerChannels,
turnLocusPins, turnEngagedChannels), and main's diff since ab5f118
touches no routing state.
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