Define installation, upgrade, and removal behavior #9
Notifications
Due Date
No due date set.
Blocks
Depends on
#13 Define cross-cutting acceptance criteria
xavierk/Fenris
#6 Evaluate Python TUI frameworks for Fenris
xavierk/Fenris
#8 Define the collector, service, and CLI lifecycle
xavierk/Fenris
Reference: xavierk/Fenris#9
Reference in New Issue
Block a user
Parent map: Chart Fenris’s persistent TUI monitoring redesign
Question
What installation, upgrade, and removal journey should make the chosen TUI runtime, collector service, configuration, and observation database reliable when the source checkout moves or disappears? Decide installed locations, dependency packaging, service-unit installation, startup opt-in, privilege prompts, upgrade compatibility, data preservation, rollback expectations, and complete versus data-preserving removal.
Resolution
Decided across two grilling rounds (Q1–Q12, all recommendations accepted) and recorded in ADR 0004 (commit
ffa6f22).make installbuilds the wheel and installs it with pinned deps into a dedicated venv at/opt/fenris;/usr/local/bin/fenriswrapper on PATH; units in/etc/systemd/system, helpers in/usr/libexec/fenris, polkit policy in the standard actions dir; the installer records an explicit file manifest that drives upgrade and uninstall. Checkout is build-time input only.auth_admin,fenris-monitoronly); the installer never enables or starts units.fenris monitor resume [--now]or first-run TUI prompt), which enables the timer and opens the first period in one step../data/history.jsonl(or takes an explicit path) and runs ADR 0001's idempotent single-transaction import, reporting counts;fenris import <path>retained.daemon-reload(restart timer only if contents changed and it is active), timer state untouched, never kills an in-flight collection run; forward-onlyschema_versionmigrations after;/var/lib/fenrisnever rebuilt.observations.db.baksnapshot before migrations; rollback = reinstall previous version + restore; automatic downgrade unsupported.make uninstallperforms the sanctioned disable first (open period closesuser_disabled; only the sanctioned path records intent), then removes venv/helpers/units/policy/wrapper while keeping config and observation store;make purgeadds config and store.make update-depsis the only refresh path./var/lib/fenriswith ADR 0001 permissions and gates onpython3 ≥ 3.9; the database file is created lazily by the first write so "no observations yet" stays a real state.Newly surfaced tickets: none. No fog graduation: specification assembly stays in Not yet specified until the remaining decisions close. No existing ticket invalidated.
xavierk referenced this issue2026-08-31 13:28:38 +00:00