Repository navigation
feat: add bounded recoverable workspace migration - #483
Conversation
Stage the full batch before replacement and retain durable overlap guards. Explicit recovery preserves uncertain ownership and user changes. Refs #479.
Reuse project loss and equivalence rules in one proposed workspace. Verify membership, selection and non-adoption values before aggregate writes. Refs #479.
Use shared plans and recovery outcomes for CLI and JSON reports. Reject ambiguous missing filter values before invoking a writer. Refs #479.
Retain real discovery semantics and original conflict checks while composing root adoption. Reject unverified transaction receipts and preserve changed recovery evidence.
Record final executable, coverage and native-host evidence. Keep parent review, landing and cleanup gates explicit; preserve unresolved fault-fixture recovery evidence.
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
Existing workspace adoption must preserve original project values. Apply root conversion filters and report the prior context for new members.
Check directory kind without fingerprinting unrelated ancestor entries. Preserve no-follow checks and strict transaction preconditions while allowing unrelated sibling files to change.
Honor persisted commit witnesses before rollback. Preserve rejected artifact guards and return conservative metadata when storage disconnects during error handling.
|
Campaign 6 is complete: PR landed on main and campaign-owned artifacts cleaned up.
Cleanup verified: worktree Recovery evidence was explicitly disposed of as synthetic test fixtures, without executing recovery against them. Independent audit classified the original 114 files; all 149 recorded artifact/adjacent-file hashes were rechecked unchanged. Expanded parent audit verified 326 retained recovery files, with no outside-fixture references, symlinks or unknown adjacent literals. Removed 7,281 owned temporary files, 814,239,224 bytes. Expanded audit manifest SHA-256: This completes all six layered configuration campaigns. Tracking issue #479 can now close. |
Adopt a bounded repository with
morphir workspace migrate [directory], including roots without an existing workspace. Shared inventory and aggregate planning reuse project migration loss/equivalence checks, preserve original project settings when joining new or existing workspaces, and report ownership, membership, selection and shared-output effects. Include/exclude controls cover root conversion while retaining root identity. Classic sources, existing migrated files and generated artifacts remain in place; equivalent repeats preserve bytes and timestamps.Application stages the entire batch before replacement. Shared configuration/project/workspace writers use durable ownership-checked journals, explicit inspection/recovery and pending-recovery guards. A validated persisted commit witness prevents rollback after acknowledgement failure. Rejected persisted artifacts remain blockers, and disconnected-host failures return conservative typed evidence. Ancestor journal discovery tolerates unrelated sibling churn while preserving no-follow checks and strict source/target preconditions. Per-file replacement is atomic; no cross-file crash atomicity is claimed.
The thin CLI supports dry-run, structured redacted JSON and repeated include/exclude filters. APIs, CLI/inventory/recovery references, walkthrough, schema, PRD/index and NOTICE are included. Refs #479.
Validation
openspec/changes/archive/2026-11-03-add-workspace-migration/. All nine tasks checked; approved Purpose, eleven requirements and fourteen scenarios preserved. Independent plans remain untouched.Source and integration boundary
Final head
af1412174aa6f564610f7985b5b8759c56eda2cd; runtime checkpointff495a727de49a0c88e6e7258f32ad91ea64a726. Required starting baseline and merged prerequisite PR477:e3b9a053120a49e94c70c30cd4f62ef783672c64.Current main is
197fbb3b9b6f6bf17bf8ddf2fd6291d3414c20e4, advanced through independent C# generation and documentation/archive PRs. Local execution qualifies the required-baseline branch. Current-base integrated CI remains a merge gate; the merge is conflict-free.Delivery journal records exact commands, red/green evidence, counts and qualification limits.
Trimmed/native retains 44/47 pinned dependency warning lines under explicit
ILLinkTreatWarningsAsErrors=false; no warning is suppressed. Writer coordination is machine-local.Owned recovery evidence and delivery gates
All external artifacts are under
/private/tmp/morphir-workspace-migration/; checkout ist3-f370bf10, brancht3/workspace-migration. Independent read-only audit classified the original114 recovery files across37 directories as test-only, with no external/non-fixture references, links or unique user data. All149 original recorded artifact/adjacent-file hashes remain unchanged. Expanded read-only audit classifies all326 currently retained recovery files as synthetic fixtures, with no outside-fixture references, symlinks or unknown adjacent literals. Disposition inventory authorizes parent-owned fixture cleanup after final gates. Preserve original and later parent regression evidence until that audited cleanup.Current-head CI, authorized landing, issue completion and worktree/local-branch/remote-branch/artifact cleanup remain outstanding. No release or deployment is included.