Successive collection runs against mutating identity fixtures segment the observation history correctly. The segment identity key comes from the ladder — normalized kernel-exposed subsystem NQN, then the kernel composite, then model|serial — with FR as metadata only. Each segment freezes, at open, its fully nullable metadata snapshot: normalized subnqn/sn/mn/fr plus vid/ssvid/transport (from the PCI node when present, null otherwise) and the identity_degraded flag, with cntlid excluded. Identity change and a DUW decrease act as independent axes: a DUW decrease with unchanged identity opens a new segment without quarantining habit evidence; any visible identity-key change — including to or from a blank key — quarantines prior history; equal blank keys continue the segment, segmented by DUW monotonicity alone. identity_degraded is set at segment open exactly when the key is blank.
Acceptance criteria
The identity key follows the ladder exactly; FR is metadata only; the two segmentation axes are independent (ID-1)
Segments freeze a fully nullable metadata snapshot at open — normalized identity diagnostics plus vid/ssvid/transport and identity_degraded, cntlid excluded — immutable thereafter (ID-2)
identity_degraded set at open exactly when the key is blank; composite and model|serial rungs are not degraded (ID-4)
vid/ssvid read from the PCI node when present and stored null otherwise; metadata only, never key components (AC-4)
Blank-key semantics hold verbatim: to/from blank is an identity change and quarantines; equal blanks continue by DUW monotonicity (PR-16 semantics at the store level)
## Parent
[Implement the Fenris persistent TUI monitoring redesign](https://git.bongbetic.com/xavierk/Fenris/issues/20)
Canonical contracts: [fenris-redesign spec](https://git.bongbetic.com/xavierk/Fenris/src/branch/main/docs/spec/fenris-redesign.md) · [acceptance criteria](https://git.bongbetic.com/xavierk/Fenris/src/branch/main/docs/spec/acceptance-criteria.md) — criterion IDs cited below live in the register.
## What to build
Successive collection runs against mutating identity fixtures segment the observation history correctly. The segment identity key comes from the ladder — normalized kernel-exposed subsystem NQN, then the kernel composite, then `model|serial` — with FR as metadata only. Each segment freezes, at open, its fully nullable metadata snapshot: normalized `subnqn`/`sn`/`mn`/`fr` plus `vid`/`ssvid`/`transport` (from the PCI node when present, null otherwise) and the `identity_degraded` flag, with `cntlid` excluded. Identity change and a DUW decrease act as independent axes: a DUW decrease with unchanged identity opens a new segment without quarantining habit evidence; any visible identity-key change — including to or from a blank key — quarantines prior history; equal blank keys continue the segment, segmented by DUW monotonicity alone. `identity_degraded` is set at segment open exactly when the key is blank.
## Acceptance criteria
- [ ] The identity key follows the ladder exactly; FR is metadata only; the two segmentation axes are independent (ID-1)
- [ ] Segments freeze a fully nullable metadata snapshot at open — normalized identity diagnostics plus `vid`/`ssvid`/`transport` and `identity_degraded`, `cntlid` excluded — immutable thereafter (ID-2)
- [ ] `identity_degraded` set at open exactly when the key is blank; composite and `model|serial` rungs are not degraded (ID-4)
- [ ] `vid`/`ssvid` read from the PCI node when present and stored null otherwise; metadata only, never key components (AC-4)
- [ ] Blank-key semantics hold verbatim: to/from blank is an identity change and quarantines; equal blanks continue by DUW monotonicity (PR-16 semantics at the store level)
## Blocked by
- [Collector tracer bullet: one collection run from fixtures to the observation store](https://git.bongbetic.com/xavierk/Fenris/issues/21)
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking 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
Successive collection runs against mutating identity fixtures segment the observation history correctly. The segment identity key comes from the ladder — normalized kernel-exposed subsystem NQN, then the kernel composite, then
model|serial— with FR as metadata only. Each segment freezes, at open, its fully nullable metadata snapshot: normalizedsubnqn/sn/mn/frplusvid/ssvid/transport(from the PCI node when present, null otherwise) and theidentity_degradedflag, withcntlidexcluded. Identity change and a DUW decrease act as independent axes: a DUW decrease with unchanged identity opens a new segment without quarantining habit evidence; any visible identity-key change — including to or from a blank key — quarantines prior history; equal blank keys continue the segment, segmented by DUW monotonicity alone.identity_degradedis set at segment open exactly when the key is blank.Acceptance criteria
vid/ssvid/transportandidentity_degraded,cntlidexcluded — immutable thereafter (ID-2)identity_degradedset at open exactly when the key is blank; composite andmodel|serialrungs are not degraded (ID-4)vid/ssvidread from the PCI node when present and stored null otherwise; metadata only, never key components (AC-4)Blocked by
Implemented. All five acceptance criteria covered by 23 tests in test_segmentation.py. See commit
6a1841c.