Dashboard › opencode › Distillation
a9dfde5a-cd8b-4b6c-858e-893abc2d0386["lore_tm_v1_8tNXTxd1il6Ui4RYEeQooesy5vstrOut0wHw4_lj1n0","lore_tm_v1__B-MWDbNx-L_N3NA_er0_zJLw7PpvlFFxS6vLXPnNZQ","lore_tm_v1_4_-Dj-LX6hCDWU2U695b_r5DN283YilPTO4Tda1LQXA","lore_tm_v1_3PKu1l0GtIpJSNiPt258OZNTLabgLLS5M9V6ZCSnMfA","lore_tm_v1_n7EOm2ZqXKGj2RMruDYc8-2WCNv5P0wyIjUeeIKlzqA","lore_tm_v1_tXeZXoCW8OmYvxGn5OjY0OFI49CWppT5Rw_ngPconJw","lore_tm_v1_p5A2OOfSDkuVKrNIeJp15omy9zFTeLre6iaEWi8g2lc","lore_tm_v1__vjjOWJ_0AxZXxun-qdy6GuXccFLyqXt1VvBUqBfLq8","lore_tm_v1_kWpr9HXmeacS4KMTLaJ4hirg5BsgIczjOZ-kVqv6pKg","lore_tm_v1_8LF9tNzIkASrjgmWd9VHyc4Ie6hu6a8xTdAA7FH8MU0","lore_tm_v1_vfJt8y-nSVvc8aMw1L2IafdEDuU_XcgScj842Qh-wJU"]
Date: Sep 15, 2026
/home/byk/Code/opencode/packages/core/test/session-runner.test.ts:3235-3288 showed interrupts runner continuation when permission approval is declined: tool declined dies with new PermissionV2.DeclinedError(), prompt "Call declined" produces tool call call-declined, session.resume(sessionID) exits with interrupts only, and exactly 1 provider request occurs.finish: "error" and top-level error "Tool execution declined"; tool call-declined is persisted with status "error" and message "Tool execution interrupted". A SessionEvent.Step.Interrupted event exists, SessionExecutionTable is empty, SessionRecovery.recover() leaves SessionRecoveryTable empty, and no second provider request occurs./home/byk/Code/opencode/packages/core/test/session-runner.test.ts:3291-3307 defines tool corrected, whose execution fails with PermissionV2.CorrectedError({ feedback: "Use another tool" }) and maps that to new Tool.Failure({ message: "Use another tool" }); its prompt is "Call corrected"./home/byk/Code/opencode/packages/core/test/session-prompt.test.ts:314-338 showed turns an admit-only exact retry into durable execution intent: the initial exact prompt "Resume this exact prompt" with resume: false has wake_pending: false; retrying the identical input and messageID with resume: true changes wake_pending to true and calls wake(sessionID) exactly once./home/byk/Code/opencode/packages/core/test/session-prompt.test.ts:340-363 showed reuse of one messageID for "Fix the failing tests" and then "Delete the failing tests" is rejected as Session.PromptConflictError; no session messages are produced and admittedCount remains exactly 1."never arms durable wake for a conflicting execution retry"./home/byk/Code/opencode/packages/core/test/session-prompt.test.ts:365-404 first admits "Original prompt" with resume: false, then retries the same messageID using "Conflicting prompt" with resume: true; it expects Session.PromptConflictError, retains wake_pending: false, records no wakeCalls, and confirms SessionRecovery.recover() also triggers no wake."never recovers a live execution lease"."never recovers an execution superseded by a newer assistant"./home/byk/Code/opencode/packages/core/test/session-projector.test.ts identified recovery robustness coverage: quarantine one malformed recovery row without blocking a valid wake; quarantine SessionRecovery.BATCH_SIZE + 1 poison rows before redriving valid work; quarantine a continuation belonging to another session; quarantine a recovery wake behind a newer assistant; quarantine a malformed claim without blocking a valid claim; and bound deterministic recovery scans./home/byk/Code/opencode/packages/core/test/session-projector.test.ts:699-757 showed quarantines a recovery wake behind a newer assistant: assistant msg_recovery_stale is started and recovered under execution "stale-recovery-wake" in phase "unknown", then superseded by msg_recovery_newest; SessionRecovery.recover() emits no wake and marks the recovery row with recovery_error: "Invalid recovery projection identity"./home/byk/Code/opencode/packages/core/test/session-projector.test.ts:759-808 showed malformed execution claim "malformed" is inserted with invalid phase "invalid" while valid claim "valid" has phase "ready" and expires_at: 0; recovery quarantines the malformed row with "Invalid execution phase: invalid" while still creating a SessionRecoveryTable row for execution "valid"./home/byk/Code/opencode/packages/core/test/session-projector.test.ts:811-853 showed deterministic recovery scans are bounded: the test inserts SessionRecovery.BATCH_SIZE + 1 expired "safe" executions and, after one scan, expects only execution-${SessionRecovery.BATCH_SIZE.toString().padStart(3, "0")} to remain in SessionExecutionTable./home/byk/Code/opencode/packages/core/test/session-projector.test.ts:856 defines coverage ensuring promotion and Context Epoch mutation roll back after ownership loss./home/byk/Code/opencode/packages/core/test/session-runner.test.ts:598-660 showed redrives only the synthetic recovery continuation: an unrelated queued admit-only input "unrelated admit-only" remains unpromoted while recovery of execution "lost-recovery-wake" sends exactly the user texts ["Session execution interrupted by server restart", "continue"].SessionRecoveryTable.wake_pending becomes false and remains false after replaySessionProjection(sessionID); later ordinary input "ordinary work after replayed recovery" is included in the next provider request./home/byk/Code/opencode/packages/core/test/session-runner.test.ts:663-685 showed ordinary input promotion clears durable intent: after manually setting the "clear durable wake" inputβs wake_pending to true, session.resume(sessionID) changes it to false./home/byk/Code/opencode/packages/core/test/session-runner.test.ts:688-720 showed an ordinary prompt survives a lost advisory wake: SessionInput.admit() stores "run after restart" with delivery: "steer" and requestExecution: true; SessionRecovery.recover() dispatches exactly that text, then leaves the input with wake_pending: false and a numeric promoted_seq."never dispatches a provider after ownership changes"./home/byk/Code/opencode/packages/core/test/session-runner.test.ts:723-747 pauses model resolution for prompt "fence provider", replaces the session execution with id: "provider-successor", owner_id: "successor", and expires_at: 60_000, then resumes resolution; it expects zero provider requests and no additional events."never publishes streamed output after ownership changes".replaySessionProjection() in /home/byk/Code/opencode/packages/core/test/session-runner.test.ts:396-420 showed it reads all aggregate events ordered by ascending EventTable.seq, removes the in-memory event projection, deletes the sessionβs SessionInputTable and SessionMessageTable rows, and replays the recorded events with original id, aggregateID, seq, type, and data./home/byk/Code/opencode/packages/core/test/session-runner.test.ts:422-434 defines FragmentKind = "text" | "reasoning" | "tool input", enumerates fragmentKinds in that exact order, and maps fragment IDs to ${kind === "tool input" ? "call" : kind}-${suffix}.