Skip to content

feat: add bounded recoverable workspace migration - #483

Merged
DamianReeves merged 14 commits into
mainfrom
t3/workspace-migration
Nov 4, 2026
Merged

DamianReeves merged 14 commits into
mainfrom
t3/workspace-migration

Conversation

@DamianReeves

@DamianReeves DamianReeves commented Nov 3, 2026 •

Copy link
Copy Markdown
Member

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

  • All 17 configured local executable runners pass: 3,903 tests/checks. IO442, tooling436, core configuration177, Microsoft22; Models/codec roundtrips791. Includes 34 actual workspace CLI BDD cases with schema validation, separate-process interruption/overlap and aggregate fault/ownership tests.
  • Full build/analyzers, C# formatter, F# formatting and OpenSpec/extension verification pass. Latest rebuild retains eleven existing package/generated-code warnings.
  • Current-source coverage: core4188/4345, 96.39%; IO2537/2606, 97.35%, above merged prerequisite checkpoints. No coverage exclusions added.
  • Fresh managed/trimmed/native arm64 hosts each pass workspace/recovery59, project migration32, editing44, JSON5 grammar228 and Morphir26 checks, with reflection serialization disabled and empty stderr. All45 publish lockfiles restored exactly.
  • Windows CI on the previous candidate exposed five fixture-only path separator failures. Source tracking and artifact comparisons now use normalized identities; all 17 local runners pass again. Current-head Windows CI remains required.
  • Both independent reviews complete. All six reported findings and the separately reproduced recovery-discovery race have failing-first regressions and passing qualification. Current-head CI is pending.
  • Only workspace migration synchronized/archived at 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 checkpoint ff495a727de49a0c88e6e7258f32ad91ea64a726. 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 is t3-f370bf10, branch t3/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.

Track campaign 6 in #479 from the verified PR #477 baseline.\nParent retains review, CI, landing and cleanup gates.
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.
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Nov 3, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-11-04T00:00:03.638659Z ff5347f PR opened
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

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.
@DamianReeves
DamianReeves merged commit b53d2f4 into main Nov 4, 2026
8 checks passed
@DamianReeves
DamianReeves deleted the t3/workspace-migration branch November 4, 2026 01:27
@DamianReeves

Copy link
Copy Markdown
Member Author

Campaign 6 is complete: PR landed on main and campaign-owned artifacts cleaned up.

  • Validated head: af1412174aa6f564610f7985b5b8759c56eda2cd.
  • Landed squash: b53d2f4bbc00392067153646cbe3b5777e47dec6, merged 2026-11-04 01:26:23 UTC using the authorized admin bypass.
  • Verified parent: 197fbb3b9b6f6bf17bf8ddf2fd6291d3414c20e4. Landed tree 104a9beae67dca814ac0d88bceec309df997ec18 matches the precomputed integration with current main. Required campaign baseline remains e3b9a053120a49e94c70c30cd4f62ef783672c64.
  • All eight checks passed on the exact validated head, including Linux, Windows and macOS: Development, CVE scan. No unresolved review threads or configured merge queue remained. Both independent review scopes completed; all six findings, the reproduced discovery race, and Windows fixture failures were addressed.
  • All 17 local runners passed, 3,903 tests/checks. Core coverage 96.39%, IO 97.35%. Managed, trimmed and native hosts each passed 59 workspace/recovery checks plus project migration, editing and parser qualification. Pinned dependency trimming warnings remain documented; coordination is machine-local and replacement atomicity is per-file.
  • All nine implementation tasks complete; workspace migration specification synchronized and archived at openspec/changes/archive/2026-11-03-add-workspace-migration/. Committed delivery journal.

Cleanup verified: worktree t3-f370bf10, local and remote t3/workspace-migration, and /private/tmp/morphir-workspace-migration/ are absent. Active coordinator fast-forwarded cleanly to the landed commit. Other worktrees, branches and shared caches were preserved. PR watch stopped.

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: 201fedd63cf558d97c13e6255d59b9d3c81c5e7811a4aaca522c8293515ce595.

This completes all six layered configuration campaigns. Tracking issue #479 can now close.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant