Skip to content

Implement first-class migration versioning system#9

Merged
rwdaigle merged 2 commits intomainfrom
ryan/versioning-system
Jan 21, 2026
Merged

Implement first-class migration versioning system#9
rwdaigle merged 2 commits intomainfrom
ryan/versioning-system

Conversation

@rwdaigle
Copy link
Contributor

Summary

Adds time-based versioning to the migration system using 5-character base36 format (DDDMM). Version encodes days since 2020-01-01 (DDD) and 10-minute slot of day (MM), providing 127 years of runway with automatic collision avoidance.

The migrate status command now displays current version, target version, and migration progress at a glance.

Key Changes

  • New src/version.rs module with base36 encoding/decoding and version generation
  • Migration format changed from NNN-name.sh to XXXXX-name.sh (5-char base36)
  • Status command shows version summary: Version: 1f72f -> 1f74a (3 pending)
  • Create command generates time-based versions automatically
  • All 39 tests pass with new versioning system

Test Plan

  • cargo build - compiles successfully
  • cargo nextest run - all 39 tests pass
  • cargo clippy - no warnings
  • Manual testing with migrate create - generates correct version format
  • Manual testing with migrate status - shows version summary correctly

🤖 Generated with Claude Code

rwdaigle and others added 2 commits January 21, 2026 16:44
Add time-based versioning using 5-char base36 format (DDDMM) where DDD is days since 2020-01-01 and MM is 10-minute slot of day. Provides 127 years of runway with 10-minute collision avoidance. The status command now shows current version, target version, and migration progress.

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
- Add version format explanation to README
- Update MIGRATE_ID example to show base36 format
- Fix migration ordering description
- Bump version to 0.3.0 for new versioning feature

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
@rwdaigle rwdaigle merged commit 47fbafe into main Jan 21, 2026
3 checks passed
@rwdaigle rwdaigle deleted the ryan/versioning-system branch January 21, 2026 21:53
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