2.1 KiB
B04 stop proof evidence
Final run: /tmp/b04-stop-green4.log, 3 passed in 0.44s.
Each new parameter node used 4/5 attempts (ledger alongside this file).
Old writer race and continuation scenarios were not executed.
- cancel: real StateGraph plus native LangChain SubagentTransformer and controlled FakeListChatModel stream; node finally settled, one terminal, physical writer rows zero.
- close_error: instance-local graph iterator aclose fails once, then blocks; repeated wait_stopped returns unknown, stop task remains alive, writer row remains one; release allows retry, terminal once, writer rows zero.
- slow_commit: real aiosqlite worker operation blocks, its waiting future is cancelled, operation still executes an INSERT; unknown retains writer; after release, stop commit barrier makes INSERT visible from a separate SQLite connection and physical writer rows become zero.
- Default no-registry abort compatibility:
/tmp/b04-stop-default-regression.log,1 passed, 48 deselected in 0.13s.
No event-stream replacement, global dependency monkeypatch, external network, business service, PostgreSQL, installation, git commit, or full suite used.
Support is pinned to LangGraph 1.2.6, checkpoint-sqlite 3.0.3, aiosqlite 0.22.1. Adapter retains the graph iterator before dependency abort can discard it, intercepts cancellation exception args for Pregel exit_task, and waits for pulls, exits, graph close, mux close and local producers. Database barrier runs after event generator closure (including exceptional state repair).
Limits: these three runs observed zero detached exit_task handles; ordinary Pregel exit completed inside the cancelled pull. The exit_task capture branch is source-grounded, not directly fault-triggered by these fixtures. A failed or cancelled internal exit has no reliable supported recovery interface and conservatively retains ownership. Unsupported dependency versions do likewise. No arbitrary detached writers, external update_state/raw SQL writers, external namespace entry, different registry, file replacement, or saver-level CAS claims.