Files
Fenris/CONTEXT.md
T
xavierk b005049733 docs: release & packaging spec + ADR 0007 amending 0004 (map #33, task #42)
- docs/spec/release-packaging.md: decision-complete spec — compat matrix,
  Gitea 1.27.1 registry channel, nfpm toolchain, signing/key policy,
  release mechanics, package layout/ownership, maintainer-script
  contracts, initial config, make-install migration runbook.
- docs/adr/0007: package delivery amends ADR 0004 (delivery/ownership
  only; runtime semantics inherited verbatim). 0004 status updated.
- docs/research/: toolchain, gitea-registry, obs findings merged from
  research branches (assets of map tickets #34/#35/#36).
- CONTEXT.md: Release + Rollback glossary terms (ticket #43).
2026-09-03 01:44:37 +05:30

5.0 KiB
Raw Blame History

Fenris

Fenris observes an NVMe drive’s real-world use and translates that history into an understandable endurance outlook.

Language

Observation history: The persisted record of drive activity gathered while Fenris monitoring is enabled, retained across restarts and reboots. Avoid: Calibration data, temporary history

Observed usage habit: The pattern of active, idle, and powered-off hours represented by the observation history, with recent sustained behavior carrying more relevance than distant behavior. Avoid: Current usage, benchmark workload

Usage-adjusted theoretical lifespan: The theoretical time until the drive’s write endurance is exhausted if its observed usage habit continues; it is an endurance projection, not a predicted hardware-failure date. Avoid: Future life, actual lifespan, failure date

Projection confidence: The degree to which the observation history is sufficiently long, complete, and stable to support the usage-adjusted theoretical lifespan. Avoid: Accuracy percentage, certainty

Monitoring period: A span during which Fenris monitoring is enabled; powered-off time remains part of the usage habit, while deliberately disabled time does not. Avoid: Daemon uptime, calibration window

Observation store: The single SQLite database at /var/lib/fenris/observations.db that persists the observation history, monitoring periods, hour observations, day aggregates, and endurance baseline. Avoid: Data directory, history.jsonl, the database (generic)

Store fault: The condition where the observation store is present but cannot be read or trusted — unreadable, corrupt, or written by a newer Fenris — degrading every view that depends on it rather than crashing or guessing. Avoid: Database error, corruption, broken data

Hour observation: One row per UTC hour in the observation store, recording that hour's usage-habit split into active, idle, powered-off, and unknown seconds, plus write/read deltas, thermal evidence, and coverage. Avoid: Hourly record, hourly.jsonl entry

Day aggregate: One row per UTC day derived from hour observations; the grain at which usage-habit evidence is judged. Avoid: Daily summary, daily stats

Controller segment: A span of observation history within which the drive's controller identity is unchanged and counters are monotonic; write deltas are never computed across a segment boundary. Avoid: Counter reset handling, drive swap detection

Degraded identity: The condition where a controller segment's identity key is blank because no identifier rung produced a value; replacement detection then relies on write-counter continuity alone, and projection confidence is capped. Avoid: Identity error, unknown device, virtual drive

Endurance baseline: The write-endurance value a projection consumes, chosen by precedence: a verified override when one exists, otherwise an unverified override, otherwise a coarse implied baseline derived from vendor wear — each labeled as such. Avoid: TBW value, failure threshold, max writes

Verified override: A rated-TBW override with complete provenance whose applicability to the detected drive was confirmed by machine match or explicit user attestation; the strongest endurance baseline. Avoid: Confirmed TBW, trusted value

Unverified override: A rated-TBW override knowingly stored with incomplete provenance; always presented as user-supplied, never as verified. Avoid: Forced entry, fallback baseline

Sustained regime: The most recent stretch of the observation history over which the observed usage habit has been stable; the interval whose write rate the usage-adjusted theoretical lifespan consumes. Avoid: Current window, detection period

Habit change: A sustained divergence between recent and earlier daily write rates that starts a new sustained regime. Avoid: Spike, anomaly

Scenario range: The spread of lifespan projections computed from the 7-, 28-, and 90-day horizons of the observation history, shown in place of a statistical interval. Avoid: Confidence interval, error bar

Coverage: The share of wall-clock seconds inside monitoring periods whose usage-habit classification is known rather than unknown. Avoid: Uptime, sample count

Collection run: One scheduled or on-demand execution of the collector that interrogates the drive and extends the observation history. Avoid: Poll, daemon tick

Release: A published version of Fenris: a version tag, its packages in the channel, and its human-readable change notes, all together; a bare tag is not one. Avoid: Tag, upload, build

Rollback: Returning to an earlier release by restoring an observation-store snapshot and then installing that release; installing an older package over a newer store is unsupported. Avoid: Downgrade, version pinning (as a promise)

Deliberate disable: A monitoring pause made through Fenris's own control path, closing the monitoring period so the paused time is excluded from the usage habit. Avoid: Manual stop, service stop