Add hidden `doctor migrate-to-ulid` validation tooling (branch+hex → refs+ULID)
Commit

Test tooling to convert a THROWAWAY COPY of a git-branch + hex-id repo into one that reads as if it had used git-refs + ULIDs from the start, so we can stage a realistic validation repo and exercise commands + the UI against it.
What it does (dry-run preview by default; --yes to apply):
- Re-identifies every checkpoint on entire/checkpoints/v1 as a fresh ULID (minted from the checkpoint's original CreatedAt, so ULIDs sort by real time), stored under refs/entire/checkpoints/<shard>/<ulid>. The embedded checkpoint_id in the root + per-session metadata.json is re-stamped to the ULID; everything else (transcripts, summaries, attribution) is carried over byte-for-byte. No commit SHAs are embedded in checkpoint content, so the later history rewrite doesn't stale it.
- Rewrites the Entire-Checkpoint commit trailers hex → ULID across all local branches except entire/* (git filter-branch --msg-filter; rewrites history).
- Deletes the entire/checkpoints/v1 branch and the shadow branches so only the ULID refs remain — refs-native.
The migrated checkpoints resolve through the normal read path (kind routing → refs) and are enqueued for push like any git-refs write.
Kept hidden and, per intent, on this branch (not for merge to main) — it rewrites history irreversibly apart from git's refs/original backup.
Tests: core re-ID/re-stamp/dry-run/no-branch + ULID-timestamp minting, and an end-to-end command test (real commit trailers → ULID, v1 deleted, checkpoint resolves via Open().Persistent).
Co-Authored-By: Claude Opus 4.8 (1M context) noreply@anthropic.com Entire-Checkpoint: 904b45068824