Dashboard › opencode › Distillation
58e1f5e8-67dc-40d2-b016-7b5828b81149["lore_tm_v1_9mPMBEGxp57aRMl83CiW3jmIMOd85hPkK00GNx_fpA4","lore_tm_v1_znCp8znfIzkp_Zdz8b_TU7BnA-XGSQCb0ElmuviG75I","lore_tm_v1_H5R9CXSYvgFLRcMdTCS_gplo2UOhDvNBfHakG6uxVNk","lore_tm_v1_r3oIevXi1wGfobq0SF7-NGjohgaU2aYEqnVSoytDXhw","lore_tm_v1_U6GSZHBogHitowQaszY3_epvkPb8LBITN4BWlal6Bpk","lore_tm_v1_Z8AzC9vF5mjcxMwBDf02Hzpnx_7kFyMrOjBCZ2yE7U4","lore_tm_v1_kjJpG9Itbbi4A6-VzcDrMptJAHjPiD-O0gsUAdJKAak","lore_tm_v1_Tjy4TKcTb8idwh7s7FAR7LZjSbEvztmhve1lyR8e66w","lore_tm_v1_xjGPrvnCrDYi6Lnd2SOXgv7n_Lb_GBJ89u-XZewJNkw","lore_tm_v1_IGYttHJPkdwCMjpeBmbZiP9zfchZdZLcaPQyO6yZG10","lore_tm_v1_--Z4JimgGONtQpwVE2Ku9hoACiiMLZCd9JZk9QiA110","lore_tm_v1_nPGL-AEtz1tPW8pV8q9BaQAkTUD8zFxzZvQEFC87uNU","lore_tm_v1_SJGAbjc1nv_sngUr9EmSZ-9eTShyCltfw2vIYUQyfqI","lore_tm_v1_qvNNOe7i9rVOADI6lYsnyZ6bYAqhtI3P9RwuO3WhELs","lore_tm_v1_z6lVlaOcYPkOGugKjIsZ4olZjAjUriyNQLZbeRCEK4Y","lore_tm_v1_exxgkmneyI5m-d_ru4Hk8aTKsUmwhNKhu_-bup2ncxc","lore_tm_v1_X-2Gen1v3_JPRxe88GzvBx62p7oa8kEkb9rwiHayBbs","lore_tm_v1_A6_5GTKbe2zMmlkj3JlIi1pjbunWThh1V3wl67PoNas","lore_tm_v1_YV0oOryaAn3PLEtm1jkajifgxVNBI9kl8SBXLwGRysk","lore_tm_v1_GIitcsdNtAayNWqBndSyUdfM-vcsVz1m_TH3XFPjuBQ","lore_tm_v1__1n8ud1Xd5Q6hTaHr_jfKwJk87PWStLpm5mJ3SEgivs","lore_tm_v1_BODJhmwiBHU0GsSk7WtQ7wfFPEv8axgWUWI8PqClzqc","lore_tm_v1_nmEmuGJZjvtG28BPjX6TrgclIeQDL86xlavWQSrVo70","lore_tm_v1_LLNVhaKsCJXkOk4n5ieWXrmmQSZgsumtIJxAkY7pbWE","lore_tm_v1_1mTTob8OGDV3tjimSFuai7vXYHpHsoNCx1egp7RpkEc","lore_tm_v1_Tj52pD9qtKKM_dEBt_GLnCSnq0aAYT7FKZK-iaTXOec","lore_tm_v1_WIrYHxeS4dBtNjXx8SOLptU4bZIUdCRPnas4Xk2RUsA","lore_tm_v1_r0bF1U0aI4Cv0Wqjh40KWpuokMvApfoPgzxDzZVDynM","lore_tm_v1_1P3CZDodvpgQ1Xmck0WkG96gGwRz6BEBDx_oJlcelGw","lore_tm_v1_vsv3htXxurGRJLcfSQIuulaAlPwrSqlFQ5yYIbnVwN8","lore_tm_v1_JuIO0CiEL0AjfB6OLrNOk6zjXek_B-NonIA2ix0zWAk"]
Date: Sep 16, 2026
509563ba0cd17246a1d223ac7a6f3fabee1a49892c61b215c3fd7ca4744b6c77, SEA SHA-256 83a833aa93cc185825feffe107fba1bd8e3789d1ff5fe5f8cda7df1962aa078d, base commit ab9408c81cc9916177641ae8e9f08624fc27b5b9, exactly 34 changed paths, matching pre/postimage blobs, successful git apply --reverse --check, and inspection of the complete 10,992-line patch. The patch file was unavailable after restart, but the SEA still matched; no tests, builds, or services were run.SessionExecutionClaim.update βnever checks the expected phaseβ in packages/core/src/session/execution/claim.ts:27-33,40-58. Root cause: its fence checked only Session, execution, owner, and unexpired lease, allowing an in-flight Step.Ended publication in packages/core/src/session/runner/llm.ts:477-495 to overwrite a durably committed cancelling phase with safe or continue.Step.Ended publication; 2. interrupt commits cancelling; 3. publication resumes and overwrites it with safe or continue; 4. pending fiber interruption takes effect; 5. for safe, the local finalizer clears the claim; 6. coordinator cleanup treats the missing claim as successful cancellation. Required fix: phase-aware CAS for ordinary transitions plus a forced-order regression proving the claim remains cancelling or becomes cancelled, never safe, continue, or absent. V15 verdict: DO-NOT-MERGE.100-row expired-claim conversion and poison-row isolation; ownership fencing for provider/publication/tool/context/compaction boundaries; preservation of uncertain work on cancellation-publication defects; synchronized schema, migration, events, generated clients/OpenAPI, and dependency direction. Accepted residuals remained the final-check-to-call gap, process-local coordinator routing, and wall-clock lease-skew requirement.ab9408c81cc9916177641ae8e9f08624fc27b5b9, patch SHA-256 b0e9fdde553e70f6f606c33c555f9e37bb52d6827dd1aad8d5a932b76cd2ee30, SEA SHA-256 a0eea521a58325461d7e533e5f3be05fccf2714a90a444eb67ac21b153f53c2f, exactly 34 paths with 8,281 insertions and 525 deletions, five added files absent from base, matching blobs, successful reverse-apply validation, and inspection of every path without modifying files, repositories, services, or databases.Step.Failed: failAssistant in packages/core/src/session/runner/publish-llm-event.ts:222-240 sets assistantFailed = true while sibling local tools may still settle in packages/core/src/session/runner/llm.ts:400-405; cancellation then moves the claim to cancelling, but interruptAssistant βnever invokes the supplied cancellation commitβ because it returns immediately when assistantFailed is true at publish-llm-event.ts:242-247.cancelling claim with non-null assistant ID; drain cleanup preserved it, interruption cleanup rejected it, lease expiry quarantined it, and the unique Session claim index in packages/core/src/session/sql.ts:237-239 blocked every later resume. Required deterministic regression: start a blocking local tool, durably project Step.Failed, interrupt while settlement is active, prove terminal cancellation and claim cleanup, and prove no quarantine, successor blockage, duplicate terminal event, or stale publication while retaining publication-defect behavior that leaves the claim cancelling. Verdict: DO-NOT-MERGE.cancelling/cancelled, isolated heartbeat renewal, exact Session/execution/owner/unexpired-lease checks, cancellation-only reconciliation fencing, preservation of cancelling on publication failure, durable prompt intent and retry semantics, exact recovery identity validation, bounded/fair recovery scans, pre-execution local-tool recording, hosted-tool reconciliation, schema/migration/generated-contract agreement, authorization wrapping, dependency direction, and the accepted check-call/process-local/wall-clock residuals.Step.Failed is already durable, settle the ownership claim after tool reconciliation without emitting a duplicate Step.Interrupted.never marks a failed Step safe while a sibling tool finalizer is active in packages/core/test/session-runner.test.ts:3788.packages/core/src/session/runner/publish-llm-event.ts, packages/core/src/session/runner/llm.ts, and packages/core/test/session-runner.test.ts to expose durable assistant-terminal state to the runner and apply only the cancellation phase transition after tool reconciliation.Step.Failed, no duplicate Step.Interrupted, completed tool reconciliation, exact-claim removal, and no recovery row. The publication-defect and blocked-finalizer cancellation regressions also passed.tsgo --noEmit passed; targeted test run completed with 3 pass, 106 filtered out, 0 fail, and 14 expect() calls across one file in 1.99s.229 pass, 0 fail, and 685 expect() calls across 7 files in 17.46s.1,186 pass, 0 fail, and 3,326 expect() calls across 145 files in 97.74s. Logged expected test activity included a missing skill-file HTTP error for https://skills.example.test/catalog/deploy/missing.md and Linux inotify watcher startup under /tmp/opencode-core-test-Wgejw1.ab9408c81cc9916177641ae8e9f08624fc27b5b9, patch SHA-256 b0e9fdde553e70f6f606c33c555f9e37bb52d6827dd1aad8d5a932b76cd2ee30, SEA SHA-256 a0eea521a58325461d7e533e5f3be05fccf2714a90a444eb67ac21b153f53c2f, exactly 34 paths, 8,281 insertions, 525 deletions, five created files, matching pre/postimages, and passing reverse-apply and whitespace checks.packages/core/src/session/execution/local.ts:97-122,128-163 and packages/core/src/session/run-coordinator.ts:52-69,99-126.cancelling and cancelled; heartbeat renewal is isolated to the execution adapter; fragment/tool reconciliation uses cancellation-only commits; only final Step.Interrupted advances to cancelled; direct fiber interruption leaves uncertain work recoverable; stale recovery scanners cannot clear/quarantine/publish after transfer; recovery projection/admission/removal is atomic; recovery continuations validate all identities; bounded deterministic scans use CAS and retry rotation; schemas, migrations, server startup wiring, manifests, OpenAPI, and generated clients agree.MERGE, while retaining accepted concerns for wall-clock lease skew, process-local interruption/drain coordination, and the unavoidable distributed final-check-to-provider/tool-call gap./tmp/opencode/session-recovery-v17-smoke.mjs passed. Servers were healthy on ports 15654, 29902, 21555, and 19076, all reporting version 1.18.30 with empty stderr.session.wake_attempts=0, session_input.wake_pending=false, session_recovery.wake_pending=true, and session_recovery.wake_attempts=0; index session_execution_recovery_scan_idx was CREATE INDEX ... ON session_execution (recovery_error,expires_at,time_created,id).execution_count=1 and zero recovery/input/message/event rows. After two starts it had execution_count=0, recovery_count=1, input_count=1, message_count=2, and event_count=2; a third start left all counts unchanged, proving idempotence.execution_id="recovery-final-v17", phase="ready", wake_pending=0, wake_attempts=2, and recovery_error=null. Continuation input ID was msg_recovery_continue_recovery-final-v17, prompt {"text":"continue"}, delivery queue, promoted_seq=1, and wake_pending=0. Events were ordered as seq 0 session.next.step.recovered.1, then seq 1 session.next.prompted.1./tmp/opencode/session-recovery-final-v17.patch had SHA-256 0eb85245c71fb55fa2a8e169a1cd1de5579059d77aaca30b6ac254482e255a2e; rebuilt packages/opencode/dist/server/opencode-server had SHA-256 308e9e562a3473b66bac430166db9d6cdd29f5f071d5695c1c35f28b99f26bf4.34 files with 8,271 insertions and 464 deletions. A detached worktree at base commit ab9408c81c (feat(app): adapt vertical tab density) was prepared and patch checks produced no errors.Date: Sep 17, 2026
0eb85245c71fb55fa2a8e169a1cd1de5579059d77aaca30b6ac254482e255a2e, SEA 308e9e562a3473b66bac430166db9d6cdd29f5f071d5695c1c35f28b99f26bf4, and 34 changed files. Exact validation was green: Core 1,186/1,186, recovery 229/229, migration upgrades and direct consistency passed, and artifact health/index/recovery/idempotence smoke passed.ses_f5356006bffeKRo1QusMcUUyJJ and task ses_f535546eaffeOL4WHqSjyRr6H4, covering independent correctness and security review of frozen v17.in_progress.1,186 passed and 0 failed, recovery 229 passed and 0 failed, exact artifact smoke success, and that live services remained untouched.