Dashboard › opencode › Distillation
cbbe17d7-7882-46d5-95f5-a3b04b8169ee["lore_tm_v1_paR4G3KA-QLhOPHixZoei0zbWR7om2AAY8TtZPy89ns","lore_tm_v1_St97k8f9A5fWGsE9A5c8B_9wndzPfyfSg8QKDsvYAhM","lore_tm_v1_ygG3TrhN0X-_t40qmKauda3Xqg1n96MXIspmQCejZ7o","lore_tm_v1_d8DVE0FT8m05dlsKnNO4-E4X4V42iNwVQk7kpqeNZrw","lore_tm_v1_Nzmk2YXzh1daOK-oCEE2kYk1o6mqckuUfb0Z9E5bdlk","lore_tm_v1_pgnDxrpjQabmrQIEI_UD20eW1w9FukOY7kXmmtPvutM","lore_tm_v1_MJcD34KR1qqEfUajfrC4cF3LPuB7TCY5SNqyNC60a0o","lore_tm_v1_6FBu0mN_gGLEC8mPNBMm7mhFTr4XGjT54K4ejerq6Iw","lore_tm_v1_wJd8FkFLo2dhUa8LMk5Hd2ckIoKo6kLSMbEP8XJOR7A","lore_tm_v1_F7bEjJTnpueyWq8a3ByWoWVfgldaJ1_K6hBnnTFIaqM","lore_tm_v1_VuiiqlguTi7GJCl6auHniyy2jI4S3d2OYu_uJH4m10I","lore_tm_v1_pzWgDaqcQifDv1vqK8iRb-bHAHFo1-DyFrpez0O7OWc","lore_tm_v1_xqGWhAAv6QXB4wn20cdH28XgBSqp91gTXQbolDdJod8","lore_tm_v1_Lcm0RDtUKuvspAK9pEs9gBeJZ31fBUFs34EdoM7Y9k8","lore_tm_v1_a34QriHR0nabmRLMog9fmNQeCHQFJtYX9TmtLp7IxRE","lore_tm_v1_fgHHHeHQlY8pILX3o0U38jC_tuVLLjKV7YzbpD-LPDU","lore_tm_v1_7qaroHDhGdVjzq2D1LMeMevwnBdHACGXC5xxC6tMHm8","lore_tm_v1_Be3tLfnvKg83MyJ6gdOWHr9YZRRcn76_yDbn8_m2sUE","lore_tm_v1_haXGs8yvLKdHjOYwEVykS09w6V2UNHeP_QCtvoF6lo4","lore_tm_v1_NGu66K0x7imxhnQwt6JxkPRCQVZvPNKfDgrsc2UuYBQ","lore_tm_v1_D2eO9CnGD6SeeiNqHt4hXbg8WtBgIIh4KPCc6EzAdAg","lore_tm_v1_onmo29UqtuQbrlA-9AAVSoIapYivcErkUFJIvvCuji4","lore_tm_v1_YmUnzMuzQx-XsREFJYAGikKzSh8tBUZLevvkNFrmFRA","lore_tm_v1_FsrfNmrUHNWtQ9iHFwT-HoFh3lm27USgimP24PbJDm0","lore_tm_v1_v5yldlR-sg0GKJpSX15hF9Ne0XjKUwdmNTA0uYXW-g4","lore_tm_v1_vkVc7TB_Rq1rXuJQ2vS6_8hXtvHCFLXbVzfozV3iU90","lore_tm_v1_O6zxm3J8nETTCv2XQ-t7stWkmLKcS9UG4xbqwGqZlv0","lore_tm_v1_UFSuwLTfncdnj8j__dybW81UGHU1Hv0OuaxS6aL7MHM","lore_tm_v1_iD4_vurtNVpaw3FX3zX6mVYk54s_jqqN14FFn4RXdOI","lore_tm_v1_09EbpmNEaI8EN5rqGOnYix7uA3N0R5K8Q4oMaTNoL-A","lore_tm_v1_0kApxg-wyoIRedBrGxMAEQGHBKtjgjM7A08JeE9HUJk","lore_tm_v1_cibY8D17EUovigX1g8Yc2OeGUVviU1QFSq0CJlRCAW4"]
Date: Sep 17, 2026
packages/core bun test --printConsoleTrace β 1,194 passed, 0 failed, 3,374 assertions across 145 files in 71.62s; packages/core bun typecheck β no diagnostics in 10.74s; packages/schema bun test --printConsoleTrace test/event-manifest.test.ts β 2 passed, 0 failed, 23 assertions in 1 file in 0.29s; packages/schema bun typecheck β no diagnostics in 1.88s; packages/sdk/js bun typecheck β no diagnostics in 0.36s; packages/server bun typecheck β no diagnostics in 12.15s; packages/opencode bun typecheck β no diagnostics in 45.85s; packages/client bun typecheck β no diagnostics in 3.36s.check:generated was not run./tmp/opencode-core-migration-check-MlmNuG/full/20260917095607_schema/migration.sql using /tmp/opencode-core-migration-check-MlmNuG/full.config.ts; incremental config was /tmp/opencode-core-migration-check-MlmNuG/incremental.config.ts./tmp/opencode/session-recovery-final-v23.patch had SHA-256 14035d7631ba25b820fdc553087469935f447af034d549e2f14f8a141eda59dc, exactly 34 changed paths, 8,958 insertions, and 484 deletions.packages/client/src/generated/types.ts; packages/core/schema.json; packages/core/src/database/migration.gen.ts; packages/core/src/database/migration/20260914170650_session-recovery.ts; packages/core/src/database/schema.gen.ts; packages/core/src/session.ts; packages/core/src/session/compaction.ts; packages/core/src/session/context-epoch.ts; packages/core/src/session/execution/local.ts; packages/core/src/session/input.ts; packages/core/src/session/message-updater.ts; packages/core/src/session/projector.ts; packages/core/src/session/recovery.ts; packages/core/src/session/run-coordinator.ts; packages/core/src/session/runner/index.ts; packages/core/src/session/runner/llm.ts; packages/core/src/session/runner/publish-llm-event.ts; packages/core/src/session/sql.ts; packages/core/test/database-migration.test.ts; packages/core/test/session-execution-local.test.ts; packages/core/test/session-projector.test.ts; packages/core/test/session-prompt.test.ts; packages/core/test/session-run-coordinator.test.ts; packages/core/test/session-runner-recorded.test.ts; packages/core/test/session-runner-tool-events.test.ts; packages/core/test/session-runner.test.ts; packages/opencode/src/server/routes/instance/httpapi/server.ts; packages/schema/src/session-event.ts; packages/schema/test/event-manifest.test.ts; packages/sdk/js/src/v2/gen/types.gen.ts; packages/sdk/openapi.json; packages/server/src/routes.ts; packages/core/src/session/execution/claim.ts; packages/core/src/session/recovery-id.ts.ab9408c81c (feat(app): adapt vertical tab density), and frozen V23 applied cleanly.14035d7631ba25b820fdc553087469935f447af034d549e2f14f8a141eda59dc; SEA SHA-256 f875987afa4336956b9f33e14eee6de0a4af90e2bc6de899cccb7cbe5a5df998; 1,194 Core tests passed; 257 recovery tests passed; six package typechecks passed; migration and exact-artifact smoke passed; live services remained untouched.DO-NOT-MERGE after finding a MUST-FIX lost-resume bug in packages/core/src/session/run-coordinator.ts: line 81 used Effect.andThen after awaiting entry.done, while interrupted-owner failure was stored at lines 115-128. A resume registered during cleanup inherited that failure, so run(key) did not start its promised forced successor; run also did not set pendingWake. This contradicted the line 13 coordinator contract and packages/core/test/session-run-coordinator.test.ts:379-410. Without pending input, resume vanished permanently; with durable input, recovery retried only later.packages/core/src/session/execution/local.ts: successful drain deleted the durable claim at lines 114-118, but activeClaims retained the prospective claim until cleanup at lines 141-147. An interrupt in that interval saw stale registration at lines 239-243 and attempted the cancellation transition at lines 263-268; that transition could die with SessionExecutionClaim.Lost. Existing Lost reconciliation at lines 250-260 covered only post-interruption cleanup, allowing an otherwise successful interrupt to surface an internal defect/HTTP 500.ab9408c81cc9916177641ae8e9f08624fc27b5b9, patch SHA-256 14035d7631ba25b820fdc553087469935f447af034d549e2f14f8a141eda59dc, and SEA SHA-256 f875987afa4336956b9f33e14eee6de0a4af90e2bc6de899cccb7cbe5a5df998. It confirmed exactly 34 changed paths, byte-for-byte reconstructed patch equality, reverse applicability before and after review, migration ordering and generated-schema agreement, and otherwise approved exact claim fencing, malformed-projection quarantine, bounded-scan fairness, atomic event/claim transactions, failed-Step tool reconciliation, replay identities, generated clients, authorization, and dependency layering.run() waiting behind a stopping owner must observe and discard the old ownerβs failed Exit, then retry; (2) pre-interrupt ownership loss after successful claim cleanup must resolve as an already-settled no-op rather than an internal defect.Effect.andThen in packages/core/src/session/run-coordinator.ts:81 as propagating the interrupted ownerβs failure before retry. The chosen fix was to await completion as an Exit, discard the prior result, then call run(key); interruption of the waiting caller still cancels its own retry.SessionExecutionClaim.Lost ownership-loss reconciliation to the pre-interrupt transition that post-interruption cleanup already used.packages/core/src/session/run-coordinator.ts and packages/core/src/session/execution/local.ts.activeClaims registration removal, call interrupt, and verify completion without a defect.packages/core/test/session-execution-local.test.ts:138: βnever starts a second owner while the lease is live.βpackages/core/test/session-execution-local.test.ts:161: βnever overwrites an expired lease.βpackages/core/test/session-execution-local.test.ts was updated with the deterministic post-success stale-registration regression.force:true, and interrupt after successful durable claim deletion must return cleanly.tsgo --noEmit also passed.