Upgrade semantics: snapshot, forward-only migration, conffile survival, no interruption #48
Notifications
Due Date
No due date set.
Depends on
Reference: xavierk/Fenris#48
Reference in New Issue
Block a user
Parent
Ship Fenris as native deb + rpm packages (execute the release plan)
What to build
Upgrades arrive as ordinary package upgrades and keep the observation-store lifecycle honest: upgrading in a container snapshots the store to its one-generation backup, forward-migrates it via the bundled interpreter, preserves hand-edited configuration, restarts the timer only when its unit actually changed, and never lets removal scripts fire mid-upgrade. Downgrade fails loudly.
Acceptance criteria
.dpkg-new/.rpmnewBlocked by
Resolved
The upgrade semantics were already implemented in the packaging scripts (postinst.sh, rpm/post.sh, store.py) and nfpm.yaml conffile declarations. This ticket's gap was in test coverage, which is now addressed:
New: Python unit tests (12 tests)
tests/test_store_migration.py— forward-only migration, downgrade refusal (ValueError + NewerSchema), idempotent behavior, store non-corruption on refusalEnhanced: Packaging upgrade tests
Acceptance criteria mapping
type: config(deb) +%config(noreplace)(rpm); verified in container testsmigrate_to_latest,init_store,open_store_readonly)Commit:
c91ca10