Restore two storage-recovery notes this rebuild dropped

The original PR 2435 branch carried a stale copy of storage-recovery.md and deleted main's History touch-inspection and pool-to-disk ownership notes, which are unrelated to this change. The squashed rebuild inherited the deletion; this puts both notes back so the change only adds its own coverage clause.
This commit is contained in:
rcourtman
2026-10-03 21:49:45 +01:00
parent ae0158ba60
commit 47e947c207
@@ -6316,3 +6316,35 @@ This changes no collector, health thresholds, history policy or server identity.
`frontend-modern/src/components/Storage/__tests__/DiskList.test.tsx` exercises
snapshot replacement, in-place reconciliation, missing evidence, target changes
and fault/recovery using the real keyed renderer.
Touch inspection in the existing pool and physical-disk History charts selects
an actual stored reading rather than substituting the latest sample on focus.
Page pan/cancel and multi-contact gestures do not imply a selected observation;
browser-owned scrolling remains available. This changes no source target, API,
units, collection, retention, access or recovery boundary. The production
disk/pool fixture `frontend-modern/browser-tests/history-touch.cjs` and mounted
`HistoryChart.test.tsx` regressions verify presentation/input behaviour only,
not live appliance collection or recovery success.
### Pool-to-physical-disk ownership in Storage details
`storagePoolDetailPresentation.ts` must scope inferred ZFS device and UnRAID
array/cache-group membership to the owning host. An explicit disk parent equal
to the canonical pool ID or its retained resource reference remains a direct
association. Otherwise, matching canonical host parents establishes scope;
conflicting parents cannot be overridden by names, paths or group labels.
When canonical parents are unavailable, only a complete matching native
Proxmox instance/node pair establishes scope. `storageAdapters.ts` retains that
instance alongside the native node. Display names and unscoped hostnames alone
are insufficient. Unknown ownership must not present another host's SMART,
temperature, counters or topology counts as this pool's evidence.
ZFS device matching compares full identifiers with only the optional `/dev/`
prefix normalized, not arbitrary suffixes or invented partition associations.
This is read-only presentation: no collector, canonical server identity,
metrics target, health threshold, persistence or recovery authority changes.
`storagePoolDiskOwnership.test.ts`, the mounted
`StoragePoolDetail.ownership.test.tsx` and `browser-tests/pool-ownership.cjs`
cover repeated paths/groups, direct children, scoped legacy snapshots, missing
ownership and live target replacement. Synthetic presentation proof does not
establish native appliance, installation or recovery acceptance.