fix(config): reject ambiguous Windows migration publications - #222
Conversation
|
Warning Review limit reachedYou’ve reached a temporary PR review limit under our Fair Usage Limits Policy. Next review available in: 42 minutes Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available. How can I continue?After more reviews become available, a review can be triggered using the To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews. How do review limits work?CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability. For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window. Please refer docs for additional details. Review details⚙️ Run configurationConfiguration used: Organization UI Review profile: ASSERTIVE Plan: Pro Plus Run ID: 📒 Files selected for processing (2)
📝 WalkthroughWalkthroughConfig migration now uses bigint-capable filesystem identities to validate backups and published candidates, preventing lossy number metadata from masking concurrent replacements. Tests simulate aliased metadata and verify the migration retains the held source and backup content. ChangesConfig migration race handling
Estimated code review effort: 3 (Moderate) | ~20 minutes Possibly related PRs
Poem
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✨ Finishing Touches🧪 Generate unit tests (beta)
Comment |
601e1aa to
cd64929
Compare
Fixes #221\n\n## Root cause\n\nThe post-link migration checks compared default-number filesystem IDs. On Windows, those IDs can be lossy at JavaScript Number precision, allowing a concurrent replacement of the public candidate path to be mistaken for the private hard-linked candidate.\n\n## Change\n\n- Verify both backup and candidate hard-link publications with BigInt filesystem IDs.\n- Fail closed when the exact inode identity is unavailable.\n- Keep the existing held-source recovery and bounded CONFIG_MIGRATION_WRITE_FAILED behavior unchanged.\n\n## TDD evidence\n\n- Added a deterministic regression that aliases all default-number metadata after a concurrent target replacement while preserving the exact BigInt identity.\n- The regression resolved before the exact-identity change and rejects afterward.\n- Passed: config-migration focused suite, typecheck, lint.\n\nWindows CI remains the authoritative validation for the original intermittent path.
Summary by CodeRabbit