Goal
Prove and preserve the upgrade path from the latest public version, v0.0.5, to v0.1.0.
Problem
The exact v0.0.5 SQLite Reminder schema uses entity_type and entity_key. The current candidate migration fixture uses the new grain_type and grain_key names. A real v0.0.5 database can therefore fail before the candidate creates the new Reminder index.
The current external release proof starts only candidate-version processes. It does not prove an upgrade from the latest public version.
Scope
- Migrate the exact
v0.0.5 Reminder columns to the v0.1.0 schema.
- Preserve State, Reminder, and Member data during the migration.
- Use a real
v0.0.5 process to write a clean temporary database.
- Use the candidate, and later the exact
v0.1.0 tag, to read and update the same data.
- Document the required generated-code and public API migration.
Acceptance
- The old-schema fixture matches the exact
v0.0.5 tag.
- Migration is transactional, repeatable, and fails on an unsupported mixed schema.
- External proof resolves exact
v0.0.5 without a local replacement.
- Candidate and tagged modes both run the same upgrade proof.
- Process coordination uses observable readiness and no fixed sleep.
- A mutation that removes the legacy-column migration fails focused proof.
make external and make ci pass.
References
design/release.md
design/release-0.1.0.md
docs/compatibility.md
docs/release-0.1.0.md
store/sqlite.go
store/migration_test.go
examples/shadow/cmd/conformance/external_release_test.go
Goal
Prove and preserve the upgrade path from the latest public version,
v0.0.5, tov0.1.0.Problem
The exact
v0.0.5SQLite Reminder schema usesentity_typeandentity_key. The current candidate migration fixture uses the newgrain_typeandgrain_keynames. A realv0.0.5database can therefore fail before the candidate creates the new Reminder index.The current external release proof starts only candidate-version processes. It does not prove an upgrade from the latest public version.
Scope
v0.0.5Reminder columns to thev0.1.0schema.v0.0.5process to write a clean temporary database.v0.1.0tag, to read and update the same data.Acceptance
v0.0.5tag.v0.0.5without a local replacement.make externalandmake cipass.References
design/release.mddesign/release-0.1.0.mddocs/compatibility.mddocs/release-0.1.0.mdstore/sqlite.gostore/migration_test.goexamples/shadow/cmd/conformance/external_release_test.go