Dashboard › opencode › Distillation
fecbf209-1319-41ee-a95b-d4553974932f["lore_tm_v1_rD1zG0hdR81fZ6qLmM98Mu6ngmerSPMIKC7RDroty5M","lore_tm_v1_K-mYoe3gn50VzzJHcGUt6P6t0THoLaac_OSuLyfV0n4","lore_tm_v1_gk4FIY9zbQgJ3J3BKJFtHD1NoJLx1xyq7lqizTHrPQ4","lore_tm_v1_hvQWlUphGtuVdycyMAf-tDLo9jhasFayEPn1ETxIXhw","lore_tm_v1_jauGQbe6BIqI2Y2-k8sAK7kjrf00in6COCiz3NyW2bw","lore_tm_v1_23DSbgl-Hvq--keStVpLLkOBeZZ5gXDZ3hMFuoRIpwk","lore_tm_v1_U2VonWZSpcZP-ptDcGR6dhlkUe1O6S7zmEpveKvnkss"]
Date: Sep 17, 2026
Step.Started path leaves a SessionExecutionTable claim present in phase "cancelling" rather than clearing it: assistant_message_id="msg_0acd6d642001C0tvg1ECbHw6ZG", assistant_seq=3, expires_at=30000, id="142fe6f0-cf21-4763-b6df-e6a897ed1359", owner_id="ff35580f-a135-4f4b-8c2a-c32125ad0dfc", session_id="ses_runner_test", time_created=0, recovery_error=null.SessionRunnerLLM > settles cancellation when Step start notification is interrupted failed at packages/core/test/session-runner.test.ts:4041, where SessionExecutionTable was expected to equal [] but retained the "cancelling" claim. Results: 0 pass, 109 filtered out, 1 fail, 3 expect() calls; 1 test across 1 file in 3.81s, with the failing test taking 859.33ms.EventV2, not cancellation cleanup: publisher memory must be updated after the durable transaction commits but before post-commit notification becomes interruptible.Step.Started and Step.Failed interruption windows without making listeners uninterruptible.packages/core/src/event.ts:118-124 showed PublishOptions currently has id?: ID, metadata?: Record<string, unknown>, location?: Location.Ref, and commit?: (seq: number) => Effect.Effect<void>. The existing commit hook is documented as a local operational projection committed atomically with a new durable event and not replayed or serialized.afterCommit should run only for a newly committed durable event, never during replay, and before listener notification. Durable projection remains in commit; afterCommit is limited to synchronizing publisher memory with the committed fact.commitDurableEvent() in packages/core/src/event.ts:205-367 showed its current signature accepts commit?: (seq: number) => Effect.Effect<void>. Inside an Effect.uninterruptible region, it runs an immediate database transaction, applies registered projectors, calls commit(seq) at line 323, updates EventSequenceTable, inserts into EventTable, then publishes wakeups to pubsub.durable for a newly committed event.publishEvent() invocation at packages/core/src/event.ts:427; implementation changes for afterCommit had not yet been shown or tested.