Dashboard › opencode › Distillation
f1ec5935-5254-41c3-b6ec-bb2500a5061a["lore_tm_v1_zT6y9Jye44YFzOWw-s0qucgt2F83d_bqH92bp0g2DdY","lore_tm_v1_CfBTTjvHzCP6kzM0Nio5MbX7UGDMIYPZSngVRkeu710","lore_tm_v1_KCXl4NmAUVq7x8NKuUdiqmL_hB8LQf7AylX5bO24DnQ","lore_tm_v1_TL6Q0lWydBjKwwfTVWkCSvV8c3abFpBzThkrxDzIo5k","lore_tm_v1_LTB11PDx9VWmVzAG5iKZZiu5yOGQbnOY5mCck8zmBe0","lore_tm_v1_x9jyTakV6dbx64CNeRRvfIxiD2xslM_p3sr3O7bFcpQ","lore_tm_v1_J6yBN7KaPjVPVwioT-UTEZn44L5iHrog1-ZsZl9PGaM","lore_tm_v1_eBdo2J-wi-PB6j_68BskBF86UXOoGiTqOSOg9GqjQgU"]
Date: Sep 16, 2026
"never marks a failed Step safe while a sibling tool finalizer is active" in /tmp/opencode/session-recovery-v7-check/packages/core/test/session-runner.test.ts; the test uses sibling tools including sibling_defect, gates execution with executionStarted and finalization with releaseFinalizer, and prompts with "Run sibling tools"./tmp/opencode/session-recovery-v7-check/packages/core/test/session-runner.test.ts includes test "durably fails blocked local tools when a provider turn is interrupted"; its context includes user text "Interrupt blocked tool", a recovered phase of "unknown", and verifies requests[0]?.messages.map((message) => message.role) equals ["user", "assistant", "tool"]./tmp/opencode/session-recovery-v7-check/packages/schema/test/event-manifest.test.ts verifies public-event inventory counts: EventManifest.ServerDefinitions.length === 61, EventManifest.Definitions.length === 91, EventManifest.Latest.size === 91, and EventManifest.Durable.size === 38.event-manifest.test.ts verifies SessionV1.Event.Definitions order: 1. Created, 2. Updated, 3. Deleted, 4. MessageUpdated, 5. MessageRemoved, 6. PartUpdated, 7. PartRemoved, 8. PartDelta, 9. Diff, 10. Error; it also verifies EventManifest.Definitions.slice(46, 49) is [SessionV1.Event.PartDelta, SessionV1.Event.Diff, SessionV1.Event.Error].event-manifest.test.ts verifies canonical current-event definitions: Session.Event === SessionEvent, Session.Event.Definitions === SessionEvent.Definitions, Workspace.Event === WorkspaceEvent, Workspace.Event.Definitions === WorkspaceEvent.Definitions, "session.next.step.ended" maps to SessionEvent.Step.Ended, "todo.updated" maps to SessionTodo.Event.Updated, and "project.updated" maps to Project.Event.Updated.event-manifest.test.ts verifies inventories: Project.Event.Definitions is [Project.Event.Updated]; FileSystem.Event.Definitions is [FileSystem.Event.Edited]; Integration.Event.Definitions is [Integration.Event.Updated, Integration.Event.ConnectionUpdated]; Permission.Event.Definitions is [Permission.Event.Asked, Permission.Event.Replied]; Reference.Event.Definitions is [Reference.Event.Updated]; IdeEvent.Definitions is [IdeEvent.Installed], while EventManifest.Latest does not contain "ide.installed".event-manifest.test.ts: "session.next.step.ended.1" is absent; "session.next.step.ended.2" maps to SessionEvent.Step.Ended; "session.next.prompt.execution_requested.1" maps to SessionEvent.PromptExecutionRequested./tmp/opencode/session-recovery-v7-check/packages/schema/src/session-event.ts includes these durable session events in DurableDefinitions: AgentSwitched, ModelSwitched, Moved, Prompted, PromptAdmitted, PromptExecutionRequested, ContextUpdated, Synthetic, Shell.Started, Shell.Ended, Step.Started, Step.Ended, Step.Failed, Step.Interrupted, Step.Recovered, Text.Started, Text.Ended, Tool.Input.Started, Tool.Input.Ended, Tool.Called, Tool.Progress, Tool.Success, Tool.Failed, Reasoning.Started, Reasoning.Ended, Retried, Compaction.Started, Compaction.Ended, RevertEvent.Staged, RevertEvent.Cleared, and RevertEvent.Committed.session-event.ts defines RevertEvent.Staged as "session.next.revert.staged" with revert: Revert.State, RevertEvent.Cleared as "session.next.revert.cleared", and RevertEvent.Committed as "session.next.revert.committed" with messageID: SessionMessage.ID; Durable is a one-of union tagged by "type" and annotated with identifier "SessionDurableEvent"./tmp/opencode/session-recovery-v7-check/packages/sdk/openapi.json contains both versioned and unversioned generated event enums: "session.next.prompt.execution_requested", "session.next.prompt.execution_requested.1", "session.next.step.recovered", and "session.next.step.recovered.1".packages/sdk/openapi.json, "session.next.prompt.admitted" properties include optional boolean requestExecution; required properties remain ["timestamp", "sessionID", "messageID", "prompt", "delivery"]. "session.next.prompt.execution_requested" requires ["timestamp", "sessionID", "messageID"].packages/sdk/openapi.json, "session.next.step.recovered" properties include timestamp, sessionID, executionID, optional assistantMessageID, and phase; phase permits ["ready", "unknown", "continue"], while required fields are ["timestamp", "sessionID", "executionID", "phase"].SessionExecutionTable mutation sites found: /tmp/opencode/session-recovery-v7-check/packages/core/src/session/execution/claim.ts updates at line 45 and deletes at line 57; /tmp/opencode/session-recovery-v7-check/packages/core/src/session/execution/local.ts inserts at line 32; /tmp/opencode/session-recovery-v7-check/packages/core/src/session/recovery.ts updates at lines 83, 103, and 186.