Add ADR 0012 amending ADR 0002 and ADR 0003: projection stages, provisional lifespan after 3 observed hours, short scenario horizons, evidence ladder, and TUI unverified TBW entry. Add Projection stage, Provisional projection, Evidence ladder and Activity readout to the glossary.
8.0 KiB
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
Projection stage: Where a usage-adjusted theoretical lifespan stands on its way to support: no observations yet, provisional, warming, limited, supported, or unavailable. Each stage is shown with the facts that place it there. Avoid: Loading state, progress percentage
Provisional projection: A lifespan shown from only a few hours of observation history, before a full daily cycle has been seen; it is labelled with the hours observed and its spread, and is expected to move. Avoid: Estimate, preview, guess
Evidence ladder: The conditions that supported projection confidence requires, each shown as met or unmet with its reason, so confidence visibly strengthens as each collection run adds evidence. Avoid: Confidence score, accuracy meter
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)
Pending publication: The condition where valid acquired observations are retained for recovery but their dependent evidence has not yet been published consistently. Those observations are not part of the reader-visible observation history until publication succeeds; readers retain the last consistent evidence with the pending condition made explicit. Avoid: Successful collection, fresh published evidence
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
Local-day evidence: Measured read and write activity attributable to a local calendar day with its recorded timezone and midnight boundaries. Known volumes remain incomplete when gaps or shared local-day evidence prevent an exact total; they are not estimates of the missing activity. Avoid: Estimated daily total, localised UTC day aggregate
Shared local-day evidence: Measured read or write volume spanning a local midnight that cannot honestly be allocated to either adjacent day. It is retained once, separately from either day's known volume, rather than prorated or counted in both days. Avoid: Missing bytes, estimated midnight split
Activity selection: The read/write measurement, date and point being inspected in live or historical drive activity. Live activity follows the newest point until deliberate inspection pins a point; historical selection survives refresh, while an expired live pin is explained before following resumes. Avoid: Projection window, current usage habit
Activity readout: The ready-to-read account of an activity selection: measured read and write volume, thermal evidence, usage-habit split, coverage and drive warnings for the selected live interval, local hour or local day, expressed in local time with its timezone. Avoid: Graph data, view model
Usage-history window: An exact consecutive span of UTC calendar days ending today, shown from day aggregates; a day without trustworthy evidence remains an explicit gap rather than disappearing or being estimated. Avoid: Available records, dataset range
Unallocated write evidence: Writes known to belong to a UTC day but which cannot be assigned honestly to a particular hour; they contribute to that day's total but are never distributed across hourly bars. Avoid: Missing writes, estimated hourly writes
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 horizons the observation history covers — 24-hour and 3-day horizons until a 7-day horizon exists, then 7-, 28-, and 90-day horizons — 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