046-named-migration-sets
Named migration sets: a linked library brings its own versioned, checksummed migration sequence, and never renumbers into the host's
A store today has one migration sequence, owned by the cell. A library linked into a cell (aicortex inside travel-memory) numbers its own migrations from 1, and so do the chassis's own tables (coordination_migration, 045's receipts), so the host must renumber everyone into its list and every renumbering is a checksum nobody else can reproduce. This spec gives each linked library a named migration set: the store records version, checksum, and the additive declaration per (set, version); migrate plans across sets with declared minimum-version requirements between them; serve, backup, and restore apply 036's checksum-first and additive rules per set. A store written before this spec keeps its schema_version rows byte for byte as the implicit set app. 045's receipt_migration becomes the chassis set rahi.receipts.
Read the full pinned specification ↗Relationships
depends on
Claimed units
- establishes
{ "kind": "file", "path": "crates/rahi-store/src/migration_set.rs" } - establishes
{ "kind": "file", "path": "crates/rahi-store/tests/migration_sets.rs" } - establishes
{ "kind": "file", "path": "crates/rahi-ops/tests/migration_sets.rs" } - extends
{ "nature": "additive", "spec": "011-store-hiqlite", "unit": { "kind": "file", "path": "crates/rahi-store/src/migrate.rs" } } - extends
{ "nature": "additive", "spec": "011-store-hiqlite", "unit": { "kind": "file", "path": "crates/rahi-store/src/lib.rs" } } - extends
{ "nature": "additive", "spec": "030-operational-verbs", "unit": { "kind": "file", "path": "crates/rahi-cli/src/cell.rs" } } - extends
{ "nature": "additive", "spec": "030-operational-verbs", "unit": { "kind": "file", "path": "crates/rahi-cli/src/lib.rs" } } - extends
{ "nature": "additive", "spec": "030-operational-verbs", "unit": { "kind": "file", "path": "crates/rahi-cli/src/verbs.rs" } } - extends
{ "nature": "additive", "spec": "030-operational-verbs", "unit": { "kind": "file", "path": "crates/rahi-ops/src/migrate.rs" } } - extends
{ "nature": "additive", "spec": "030-operational-verbs", "unit": { "kind": "file", "path": "crates/rahi-ops/src/backup.rs" } } - extends
{ "nature": "additive", "spec": "030-operational-verbs", "unit": { "kind": "file", "path": "crates/rahi-ops/src/archive.rs" } } - extends
{ "nature": "additive", "spec": "030-operational-verbs", "unit": { "kind": "file", "path": "crates/rahi-ops/src/restore.rs" } } - extends
{ "nature": "additive", "spec": "030-operational-verbs", "unit": { "kind": "file", "path": "crates/rahi-cli/src/serve.rs" } } - extends
{ "nature": "additive", "spec": "036-manifest-and-schema-evolution", "unit": { "kind": "file", "path": "crates/rahi-ops/tests/evolution.rs" } } - extends
{ "nature": "additive", "spec": "036-manifest-and-schema-evolution", "unit": { "kind": "file", "path": "crates/rahi-cli/tests/evolution.rs" } } - extends
{ "nature": "additive", "spec": "039-release-and-out-of-tree-packaging", "unit": { "kind": "file", "path": "CHANGELOG.md" } } - extends
{ "nature": "additive", "spec": "045-store-receipts-and-work-claims", "unit": { "kind": "file", "path": "crates/rahi-store/src/receipt.rs" } } - extends
{ "nature": "additive", "spec": "045-store-receipts-and-work-claims", "unit": { "kind": "file", "path": "crates/rahi-store/tests/receipt.rs" } } - extends
{ "nature": "additive", "spec": "045-store-receipts-and-work-claims", "unit": { "kind": "file", "path": "crates/rahi-store/tests/work.rs" } } - extends
{ "nature": "additive", "spec": "045-store-receipts-and-work-claims", "unit": { "kind": "file", "path": "crates/rahi-store/tests/receipt_recovery.rs" } } - extends
{ "nature": "additive", "spec": "023-observability", "unit": { "kind": "file", "path": "crates/rahi-edge/tests/obs.rs" } } - refines
{ "aspect": "the checksum is per (set, version); the unnamed history is the set named app", "unit": { "id": "rahi_store::migrate::check_checksums", "kind": "symbol" } } - refines
{ "aspect": "the additive rule is applied per set", "unit": { "id": "rahi_ops::migrate::check_ahead", "kind": "symbol" } }
Source headings
- 046: Named migration sets
- 1. Purpose
- 2. Territory
- 2.1 What is new
- 2.2 What is extended
- 2.3 What is amended
- 3. Behavior
- 3.1 Set identity and naming
- 3.2 What the store records
- 3.3 Ordering and requirements between sets
- 3.4 Checksums and the additive rule
- 3.5 Upgrading a single-sequence store
- 3.6 Backup, restore, and first boot
- 4. Functional requirements
- 5. Acceptance criteria
- 6. Out of scope
- 7. Resolved decisions
- Verification
Frozen anchors
No frozen anchors declared.