import type { Migration } from "./types.js"; /** * Migration registry — ordered list. Runner picks scripts whose `from` * matches the current workspace version, then chains forward until the * target version is reached. * * v0.7.0 → v0.8.0 → v0.8.1 migrations live on sibling branches * (`feat/v0.8.0-multiuser-messenger`, `feat/v0.8.1-security-lifecycle-pair`) * and land here at merge time. The v0.8.2 step depends on v0.8.1 having * already bumped `workspace.yaml.version` to `0.8.1`. */ export declare const MIGRATIONS: Migration[]; /** * Registry continuity guard. Every migration whose `to` is not the terminal * (`latest`) version must have a successor whose `from` matches that `to` — * otherwise the chain dead-ends mid-way and `migrate` throws "No migration * found for source version " for every workspace stamped that version. * * This is exactly the v1.3.x footgun: the `1.2.8 → 1.2.9` step landed on * `1.2.9` but no migration declared `from: "1.2.9"`, so every upgraded * workspace dead-ended there. Returns the list of dead-end `to` versions * (empty = continuous chain). Exercised by * test/migration-registry-continuity.test.ts so a future release that forgets * its migration entry fails CI instead of users' upgrades. */ export declare function findRegistryGaps(latest: string): string[]; /** * Given a source version and a target version, return the sequence of * migrations that walk from source to target. */ export declare function resolveChain(source: string, target: string): Migration[];