046-named-migration-sets

Named migration sets: a linked library brings its own versioned, checksummed migration sequence, and never renumbers into the host's

Lifecycle approvedImplementation completeVerification unknownQualification unknown

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

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

  1. 046: Named migration sets
  2. 1. Purpose
  3. 2. Territory
  4. 2.1 What is new
  5. 2.2 What is extended
  6. 2.3 What is amended
  7. 3. Behavior
  8. 3.1 Set identity and naming
  9. 3.2 What the store records
  10. 3.3 Ordering and requirements between sets
  11. 3.4 Checksums and the additive rule
  12. 3.5 Upgrading a single-sequence store
  13. 3.6 Backup, restore, and first boot
  14. 4. Functional requirements
  15. 5. Acceptance criteria
  16. 6. Out of scope
  17. 7. Resolved decisions
  18. Verification

Frozen anchors

No frozen anchors declared.