Dashboard › opencode › Distillation
da4df915-8249-47b5-acf4-914ac4e27f78["lore_tm_v1_Pj3FmcOG4K2vTw8dTFzEEkRwSDZrCce5HVloXHhT5Ww","lore_tm_v1_rTfSiZmy6YISS694uZAdJYDMVIblginAugbQ5U2gyjc","lore_tm_v1_W36oOl5gEF_cFhByu0PYX3BF-KXJ_5Ay_Qd_PWbqjiQ"]
Date: Sep 16, 2026
never recovers a pre-promotion claim when input commits at the recovery boundary, never promotes a recovery superseded before scanner validation, never promotes a quarantined recovery continuation as an ordinary steer, and never advances the Context Epoch after ownership changes.expect(wakes).toEqual([])), expects the request to fail (expect(Exit.isFailure(requested)).toBe(true)), and expects SessionInput.promoteNextQueued(db, events, sessionID) to return false.packages/core/src/session/runner/llm.ts, interrupted tool execution records error { type: "unknown", message: "Tool execution interrupted" }, preserves provider.executed as tool.provider?.executed === true, conditionally preserves provider metadata, and commits with SessionExecutionClaim.update(db, claim).packages/core/src/session/runner/llm.ts defines awaitToolFibers(fibers) as Effect.raceFirst(FiberSet.join(fibers), FiberSet.awaitEmpty(fibers)).packages/core/src/session/runner/llm.ts treats user decline as a fatal defect whose reason.defect is either PermissionV2.DeclinedError or QuestionV2.RejectedError; the accompanying comment says this matches V1 by halting the loop rather than converting the decline into model-facing tool output.packages/core/src/session/runner/llm.ts calls FiberSet.clear(toolFibers) during interruption handling.session.next.prompt.execution_requested, requiring timestamp, sessionID, and messageID; session.next.step.interrupted, requiring timestamp, sessionID, assistantMessageID, and error; and session.next.step.recovered, requiring timestamp, sessionID, executionID, and phase, where phase is one of "ready", "unknown", or "continue".