Dashboard › opencode › Distillation
be943248-8d6d-4eaf-a88e-5ed184f6e048["lore_tm_v1_6JAsCNFjHSg7YQ_H46CswWhO_0W3lWbahV8h0AEWUOg","lore_tm_v1_yMy53G27jtxh2i0Dq785xHC9PdJTRBQs7N_MlB9879M","lore_tm_v1_jt_S9OJwrc-DRiraLF362C5IE4Ftwki6N9DyGkJ1Opg","lore_tm_v1_NSwnip15_xo2_W2a88UaB4w13VkXBnSIG3gxtja1CpA","lore_tm_v1_vDZmiv7XAdd8CqU88jI8P19pJO3SJmNRz5vdJx8pA38"]
Date: Sep 17, 2026
packages/core/test/session-runner.test.ts has 51 matched runner/recovery scenarios, in order: 1. "redrives only the synthetic recovery continuation", 2. "never dispatches a provider after ownership changes", 3. "never publishes streamed output after ownership changes", 4. "never starts a local tool after ownership changes", 5. "never fails interrupted tools after ownership changes", 6. "advertises and executes a globally attached application tool", 7. "interrupts a source Location runner after a Session moves", 8. "fails gracefully when a stored context snapshot cannot be decoded", 9. "recovers the continuation committed with Compaction.Ended", 10. "persists a second context overflow after one recovery", 11. "recovers once from a raw context overflow failure", 12. "publishes the original overflow when recovery summarization fails", 13. "interrupts overflow recovery while the summary provider is running", 14. "projects reasoning and tool events without executing or continuing tools", 15. "continues with reloaded history after durably settling one local tool call", 16. "never commits continuation before unresolved hosted tools are reconciled", 17. "keeps a running assistant recoverable when Step failure publication defects", 18. "durably reconciles a local tool when success publication defects", 19. "keeps provider failure unknown until unresolved tools are durable", 20. "recovers the continuation committed with a settled tool step", 21. "reloads a model switch before a tool-driven continuation turn", 22. "replays durable provider-executed tool results inline in a second-turn request", 23. "starts recorded local tools eagerly and awaits settlement before continuing", 24. "settles repeated provider-local tool call IDs against their owning assistant messages", 25. "preserves durable queued input for a later wake after interruption", 26. "preserves durable steering input for a later resume after interruption", 27. "durably fails local tools left running by a prior process before continuing", 28. "durably fails hosted tools left running by a prior process before continuing inline", 29. "durably fails pending tool input left by a prior process before continuing", 30. "fans out one failed run and allows a later retry", 31. "durably settles local tool failures before continuing", 32. "returns unexpected local tool defects to the model and continues", 33. "returns policy-blocked tools to the model and continues", 34. "interrupts runner continuation when permission approval is declined", 35. "returns permission corrections to the model and continues", 36. "interrupts runner continuation when a question is dismissed", 37. "awaits started local tools before surfacing provider stream failure", 38. "durably fails blocked local tools when a provider turn is interrupted", 39. "settles cancellation when interrupted tool publication defects", 40. "settles cancellation after Step failure while a local tool is active", 41. "settles cancellation when Step start notification is interrupted", 42. "retains the claim after Step interruption until runner finalizers finish", 43. "interrupts a blocked provider turn without local tool execution", 44. "durably fails blocked local tools when interrupted while awaiting settlement", 45. "does not recover context overflow after durable assistant output", 46. "does not continue automatically after a provider error follows a local tool call", 47. "durably fails a hosted tool when its provider errors before returning a result", 48. "durably fails a hosted tool left unresolved at normal provider EOF", 49. "durably fails a hosted tool left unresolved by a raw provider stream failure", 50. "transitions streamed raw tool input to parsed called input", 51. "rejects malformed streamed tool input ordering".packages/core/test/session-runner.test.ts includes four adjacent tests at lines 752–901: provider dispatch is blocked after claim ownership changes and requests remains []; streamed output is gated and must not be published after ownership changes; local execution and SessionEvent.Tool.Called must not begin after ownership changes; and an existing running tool with assistant message ID msg_interrupted_tool_fence and call ID call-interrupted-fence must not be failed by the stale owner."recovers the continuation committed with Compaction.Ended" in packages/core/test/session-runner.test.ts simulates a crash after the execution reaches phase: "continue" following Compaction.Ended. The compacted context begins with { type: "compaction", summary: "## Objective\n- Preserve recovery" }, contains no synthetic message, then expires the claim with expires_at: 0, runs SessionRecovery.recover(), verifies the recovery-model request ends with user text "continue", and confirms the same compaction remains first in context without a synthetic message.packages/core/test/session-runner.test.ts replaces the active execution during summary streaming with { id: "compaction-successor", owner_id: "successor", expires_at: 60_000 }; after the run exits, exactly 1 request was made, no compaction message was committed, and the surviving claim is { id: "compaction-successor", phase: "unknown" }."retains only complete serialized messages during compaction" uses an earlier prompt bounded by EARLIER_BOUNDARY/EARLIER_END with "a".repeat(3_000) and a recent prompt bounded by RECENT_BOUNDARY/RECENT_END with "b".repeat(3_000). It expects 2 requests: the summary contains the complete earlier message exactly once and excludes RECENT_BOUNDARY; the continuation excludes both earlier boundary markers, contains "<recent-context>\n[Assistant]: Earlier answer", and contains the complete recent message."summarizes an oversized newest message without retaining a fragment" uses OVERSIZED_BOUNDARY ${"x".repeat(4_500)} OVERSIZED_END, expects 2 requests, and verifies the summary contains OVERSIZED_BOUNDARY exactly once.