feat(opencode): enable exact recoverable conversation rewind - #531
Merged
Conversation
|
Deployment failed for project pylon-marketing with the following error: Learn More: https://vercel.com/pylon-code?upgradeToPro=build-rate-limit |
6 tasks
Contributor
Thread transfer impact✅ Thread transfer remains within every enforced ceiling.
Baseline: Scenario and decoded snapshot size10 historical turns, 5 command tools per turn, 878.9 KiB retained MCP result per historical turn, and a 1.05 MiB retained result in the measured turn.
Updated in place by a trusted workflow. PR artifacts are strictly validated and never executed. |
rynfar
force-pushed
the
upstream/2026-09-12-exact-rollback
branch
from
September 12, 2026 17:12
030ac21 to
42e4959
Compare
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
OpenCode checkpoints could not offer Pylon's rewind actions because its relative
numTurnsAPI could not prove retries, compensation or restart recovery. This change uses native immutable forks to enable both restore-files and keep-files rewind through the existing exact rollback saga.Each eligible completed Pylon turn has a private, immutable snapshot. Admission verifies the current idle native history, account, workspace, incarnation and pending inputs; application selects a fresh verified fork, and compensation selects the untouched source. Native message contents and parent/compaction relationships are checked after ID remapping. Concurrent native completion handlers cannot replace the first captured checkpoint. Original checkpoint targets remain distinct from the current source after compaction and restart. Proofs and snapshot IDs stay private. Historical checkpoints without an exact snapshot remain unavailable. Experimental native plan-file mode and externally managed servers with unobservable runtime flags also remain ineligible for exact rewind; ordinary plan/history/resume continue normally. Native forks cannot copy the external plan file, and Pylon does not alter workspace files or runtime flags to conceal that limit.
The shared service persists selected native cursors before capture/apply/inspect/release receipts, rejects missing cursors and stale same-incarnation writes, and persists compaction state on success/failure before publishing completion. Prime's existing exact saga and provider lifecycle remain intact. Native fork snapshots add storage proportional to the histories retained; no approximate count-based fallback is introduced.
Validation: independent adversarial adapter and service review; 363 focused adapter/helper/service/saga/reconciliation/capability tests; server typecheck and scoped lint. An isolated installed OpenCode 1.18.29 import/fork/read smoke verified full/truncated semantic equality, compaction-tail ID mapping, parentless fork identity, idle/input APIs and unchanged source/workspace. It used synthetic data, no prompts or inherited credentials, and stopped both owned processes. This is native API evidence, not rendered UI or an LLM compaction run. Final-head CI is required before merge.
Part of #526; completes the OpenCode portion of the #513 exception for upstream
fd5553f1afcef4f410a067687faa991743b5034candefccda9ac9230db22b36990cffabdad218fa41b0. Codex and Claude follow separately. The compact ledger records the already merged sidebar, public preview, mobile Antigravity and Claude quota dispositions; the cycle cursor remains unchanged pending final accounting.Preview workflow closure additionally depends on the independently reviewed checkout repair in #532; the owning issue tracks its actual post-merge execution.
Model: GPT-6. Harness: Codex.