Move managed repositories from cache to persistent storage (OR-230) - #315
Merged
Conversation
sox8502
marked this pull request as draft
September 12, 2026 03:43
sox8502
marked this pull request as ready for review
September 12, 2026 04:01
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.
Managed repositories can contain the only copy of unpublished research, so they now live under
<data>/reposand<data>/worktreesrather than the cache.OR-230 migrates existing folders automatically before repository workers start. It uses the existing lifecycle lock, rename or verified cross-filesystem copy, and repairs SQLite/Git references and native OpenCode directories without a completion marker, migration history, or success notice. Completion is rechecked before copied originals are removed; later launches only inspect existing metadata for interrupted-move recovery. Conflicts preserve both copies and report an error. Existing chats and edited demos survive; later data-directory moves reuse the repair helper.
Bumps the CLI from 0.2.0 to 0.2.1; merging triggers release v0.2.1. The version-only follow-up skips another code review at the user’s request.
Rust fmt, clippy, locked build and tests: 814 passed, 2 ignored
UI build/typecheck, 161 UI tests, 9 dev-slot tests, localization/style checks
Four independent Claude Opus reviewers: no blockers
Rename/copy, interrupted references, corrupted/partial copies, conflicts, symlinked paths, and data-move rollback regressions
Real cross-filesystem migration to a temporary HFS+ volume; second launch performs no repairs
Isolated app migration, lifecycle-lock contention, Claude/Codex/OpenCode session continuity and actual native tool working directory, and demo/artifact preservation
Debug/release source builds retain development telemetry policy
Linux and Windows CI on final version-bump commit 18220b8
Final isolated migration: 4,076 files/chat rows preserved; five later CLI launches in 20–24 ms, zero Git subprocesses/stderr, 12 Git links unchanged
CLI conflicts preserve both locations without opening GUI alerts; macOS alert syntax and argv handling checked without displaying it
Official release download/install and GUI error-display verification
Local isolated UI smoke test: migrated project and six chats visible; three harness histories, files, artifacts, and experiment details open; no migration notice