Add rollout migration tooling and background migration (#37348)

## What changed

- Add `codex migrate-rollouts` with dry-run inspection by default, explicit `--apply`, thread filtering, optional I/O throttling, progress output, and JSON or verbose reports.
- Add the disabled-by-default `background_paginated_rollout_migration` feature to migrate legacy local sessions at startup before rollout compression begins.
- Persist a migration cursor and skipped-file fingerprints so later startups avoid full rescans while retrying changed files and recovering pending migrations.
- Coordinate migration with live writers and emit metrics for manual and startup runs.

## Testing

- Cover startup cursor advancement and lookback, pending migration recovery, live-writer coordination, changed empty rollouts, and progress reporting.

GitOrigin-RevId: 276ac506c50ebec5140fd319faca1bb998172061
This commit is contained in:
Owen Lin authored and copyberry committed 2026-08-07 01:26:42 +00:00
1 parent 69b6152c17
commit 4bb7ee3472
21 files changed
+1569 -24

No files matched your search

@@ -0,0 +1,16 @@
CREATE TABLE rollout_migration_state (
migration_id TEXT PRIMARY KEY,
last_checked_thread_created_at INTEGER,
last_checked_thread_id TEXT,
updated_at INTEGER NOT NULL
);
CREATE TABLE rollout_migration_skipped_rollouts (
migration_id TEXT NOT NULL,
rollout_path TEXT NOT NULL,
rollout_size_bytes INTEGER NOT NULL,
rollout_modified_at_ns INTEGER NOT NULL,
skip_reason TEXT NOT NULL,
skipped_at INTEGER NOT NULL,
PRIMARY KEY (migration_id, rollout_path)
);