Deliver upgrade, removal, and legacy retirement #31
Notifications
Due Date
No due date set.
Depends on
#30 Deliver make install
xavierk/Fenris
Reference: xavierk/Fenris#31
Reference in New Issue
Block a user
Parent
Implement the Fenris persistent TUI monitoring redesign
Canonical contracts: fenris-redesign spec · acceptance criteria — criterion IDs cited below live in the register.
What to build
Lifecycle completion.
sudo make upgradeinstalls the new wheel into the same venv, syncs units and polkit against the manifest (daemon-reload; timer restarted only if unit contents changed and it is active), never kills an in-flight collection run, snapshots the observation store to a one-generation backup, then applies forward-only schema migrations — the store directory is never rebuilt, and automatic downgrade does not exist.make uninstallperforms the sanctioned disable first (an open period closesuser_disabled), then removes every placed artifact while keeping configuration and observation history;make purgeremoves those too. Pin refreshes are an explicit committedmake update-depsstep, never an install side effect. The README is rewritten for install, upgrade, uninstall/purge, cadence drop-ins, and the five retired menu options' successors; the legacy menu script and monolith are removed from the repository.Acceptance criteria
/var/lib/fenrisnever rebuilt (IN-6)/etc/fenrisand the observation store; purge removes those too (IN-7)make update-depsstep, committed (IN-8)Blocked by
Implementation\n\nFiles changed:\n- Makefile — upgrade target: content-change detection for timer restart (diff active unit vs installed), forward-only schema migration step\n- src/fenris/store.py — added migrate_to_latest() function for upgrade target invocation\n- scripts/fenris — added hidden migrate subcommand\n- README.md — complete rewrite: install, upgrade, uninstall/purge, cadence drop-ins, CLI reference, retired menu option mapping\n\nFiles removed:\n- fenris.sh — legacy menu script\n- fenris.py — legacy monolith\n\nAcceptance criteria satisfied:\n- IN-5: upgrade syncs units/pkit, restarts timer only when contents changed and active, never kills in-flight run\n- IN-6: one-generation .bak before migrations; forward-only; store dir never rebuilt\n- IN-7: uninstall performs sanctioned disable first, preserves config/store; purge removes those too\n- IN-8: deps refreshed only via explicit make update-deps, committed\n- LC-9: README documents install/upgrade/uninstall/purge/cadence drop-ins/menu successors; legacy files removed\n\nTests: 195/195 passing.