Decide controller-segment metadata columns #14

Closed
opened 2026-08-31 15:16:05 +00:00 by xavierk · 1 comment
Owner

Parent map: Chart Fenris's persistent TUI monitoring redesign

Question

Beyond the identity key, should controller segments record sn, mn, fr, subnqn plus vid/ssvid/cntlid/transport now (cheap, enables future composite needs per the controller-identity research), or stay minimal? Decide against ADR 0001's entity list.

Parent map: [Chart Fenris's persistent TUI monitoring redesign](https://git.bongbetic.com/xavierk/Fenris/issues/1) ## Question Beyond the identity key, should controller segments record `sn`, `mn`, `fr`, `subnqn` plus `vid`/`ssvid`/`cntlid`/`transport` now (cheap, enables future composite needs per the [controller-identity research](https://git.bongbetic.com/xavierk/Fenris/src/branch/research/controller-identity/docs/research/controller-identity.md)), or stay minimal? Decide against ADR 0001's entity list.
xavierk added this to the Wayfinder: Fenris persistent TUI monitoring redesign milestone 2026-08-31 15:16:05 +00:00
xavierk added the wayfinder:grilling label 2026-08-31 15:16:05 +00:00
xavierk added a new dependency 2026-08-31 15:16:07 +00:00
xavierk self-assigned this 2026-08-31 16:13:13 +00:00
Author
Owner

Resolution

Settled in one grilling round; all four recommendations accepted as proposed.

Core metadata set. Every controller-segment row carries normalized subnqn, sn, mn, fr (space-stripped, no case folding, per the controller-identity decision) plus the identity_degraded flag from the blank-key rule. Diagnostics for humans, never key components.

Extended metadata. Record vid, ssvid, transport now; skip cntlid. vid/ssvid are the inputs to the kernel-composite fallback NQN, so storing them lets a stored identity key be explained after the fact; transport (pcie vs loop/fc) is the cheap smell-test for ephemeral virtual controllers. All arrive free in the same sysfs read. cntlid distinguishes controllers within one subsystem — out of scope for a single-drive monitor, and recoverable later by a forward migration if that ever changes.

Within-segment semantics. Frozen snapshot at segment open, immutable thereafter. The row is "the identity evidence that opened this segment," as immutable as the key it justifies. fr may go stale after a mid-segment firmware update — a cosmetic cost; a firmware-induced counter reset is already caught by the DUW-monotonic axis, not by fr.

NULL semantics. All metadata columns nullable; no placeholder values. Legacy-imported segments carry mn plus NULLs (matching the model-scoped legacy identity); degraded segments carry whatever was actually observed. Incompleteness stays explicit, mirroring the endurance-baseline decision's NULL-for-missing-provenance pattern.

Amends ADR 0001 — the controller_segments entity now specifies the snapshot (commit 305bdd4).

## Resolution Settled in one grilling round; all four recommendations accepted as proposed. **Core metadata set.** Every controller-segment row carries normalized `subnqn`, `sn`, `mn`, `fr` (space-stripped, no case folding, per the controller-identity decision) plus the `identity_degraded` flag from the blank-key rule. Diagnostics for humans, never key components. **Extended metadata.** Record `vid`, `ssvid`, `transport` now; skip `cntlid`. `vid`/`ssvid` are the inputs to the kernel-composite fallback NQN, so storing them lets a stored identity key be explained after the fact; `transport` (`pcie` vs `loop`/`fc`) is the cheap smell-test for ephemeral virtual controllers. All arrive free in the same sysfs read. `cntlid` distinguishes controllers *within* one subsystem — out of scope for a single-drive monitor, and recoverable later by a forward migration if that ever changes. **Within-segment semantics.** Frozen snapshot at segment open, immutable thereafter. The row is "the identity evidence that opened this segment," as immutable as the key it justifies. `fr` may go stale after a mid-segment firmware update — a cosmetic cost; a firmware-induced counter reset is already caught by the DUW-monotonic axis, not by `fr`. **NULL semantics.** All metadata columns nullable; no placeholder values. Legacy-imported segments carry `mn` plus NULLs (matching the model-scoped legacy identity); degraded segments carry whatever was actually observed. Incompleteness stays explicit, mirroring the endurance-baseline decision's NULL-for-missing-provenance pattern. Amends [ADR 0001](https://git.bongbetic.com/xavierk/Fenris/src/commit/305bdd4/docs/adr/0001-observation-store-sqlite.md) — the `controller_segments` entity now specifies the snapshot ([commit 305bdd4](https://git.bongbetic.com/xavierk/Fenris/src/commit/305bdd4)).
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Reference: xavierk/Fenris#14