Dashboard › opencode › Distillation
f71b86b3-a0a0-4d98-a1a4-a111dfe6efbe["lore_tm_v1_zlyea_BZpzqPzsQSsHQylfETYakCpxWWR7OPb7Bw7Qw","lore_tm_v1_RbRme2Drvcc0qPCeuYAoiIcOSnBoKGkOHxbTpGq1mV4","lore_tm_v1_6sf6PPRBGz4VYSI953lGHAPiBrWzi7IzaArwNru955Q","lore_tm_v1_M0I2eiqNdB23O5ICYHWxCMhVN4KIx85A4AjLNmrcwuE"]
Date: Sep 17, 2026
Step that durably failed before owner loss.Context Epoch must never advance after ownership changes.packages/core/test/session-prompt.test.ts lines 126-137 define recover() as SessionRecovery.recover() with a provided SessionExecution.Service; active returns an empty Set, resume and interrupt are no-ops, and wake(id) appends the ID to wakeCalls.packages/core/test/session-prompt.test.ts lines 140-145 test "exposes the execution registry": adding sessionID to activeSessions makes (yield* SessionV2.Service).active equal [sessionID], with cleanup that clears activeSessions.packages/core/test/session-prompt.test.ts lines 147-157 test "delegates execution continuation through SessionExecution": session.resume(sessionID) produces executionCalls = [sessionID] and leaves wakeCalls = [].packages/core/test/session-prompt.test.ts lines 159-169 test "delegates process-local interruption through SessionExecution": session.interrupt(sessionID) produces interruptCalls = [sessionID] and does not add projected messages.packages/core/test/session-prompt.test.ts lines 171-179 test "delegates interruption without requiring a recorded Session": interrupting SessionV2.ID.make("ses_missing") forwards that exact ID through SessionExecution.packages/core/test/session-prompt.test.ts lines 181-201 test "durably admits one user message before transcript promotion": prompting with "Fix the failing tests" and resume: false returns the prompt, leaves session.messages({ sessionID }) empty, and durably admits the message with its id, sessionID, prompt text, and default delivery: "steer".packages/core/test/session-prompt.test.ts lines 203-222 test "resolves attachment MIME before admission": input file { uri: "data:image/png;base64,aGVsbG8=", name: "image.png" } is resolved to include mime: "image/png" before the admitted message is persisted.packages/core/test/session-prompt.test.ts lines 224-252 test "streams durable Session events after an aggregate sequence": prompts "First" and "Second" followed by SessionInput.promoteSteers(db, events, sessionID, Number.MAX_SAFE_INTEGER) stream [0, "session.next.prompt.admitted"], [1, "session.next.prompt.admitted"], [2, "session.next.prompted"], and [3, "session.next.prompted"]; querying after sequence 0 begins with [1, "session.next.prompt.admitted"].packages/core/test/session-prompt.test.ts lines 254-273 test "resumes through a recorded message without appending another prompt": after admitting "Fix the failing tests" with resume: false, session.resume(sessionID) leaves projected messages empty and the admitted record without promotedSeq, calls execution once with sessionID, and does not call wake.packages/core/test/session-prompt.test.ts lines 275-288 test "records distinct messages when the ID is omitted": two identical prompts for "Fix the failing tests" with resume: false receive different IDs, remain absent from projected messages, and produce admittedCount = 2.packages/core/test/session-projector.test.ts includes the recovery regression test "never continues a Step that durably failed before owner loss" beginning at line 222; visible fixtures include tool call ID "call-failed-before-owner-loss" and durable error { type: "unknown", message: "Provider unavailable" }.packages/core/test/session-projector.test.ts includes "never recovers a live execution lease" beginning at line 407.packages/core/test/session-projector.test.ts includes "never advances the Context Epoch after ownership changes" beginning at line 2706 and uses SessionContextEpochTable.snapshot when checking the epoch state.