Integrate reviewed same-generation broadcast resource and History capture

Change-source: pulse-maintainer
This commit is contained in:
pulse-triage[bot]
2026-10-05 13:03:31 +01:00
11 changed files with 698 additions and 28 deletions
@@ -17,6 +17,36 @@
## Purpose
### Fresh broadcast projection owns one resource/target capture
Canonical live, fallback and standalone-host continuity broadcast reads prefer
the adapter's detached bulk resource/metrics-target capture. After host
coalescing selects presentation identity, missing history targets are attached
from that same capture, including authoritative absence. Stores without this
optional capability retain the previous point-resolver fallback. Only the owned
outer coalesced slice is decorated in place; nested source payloads stay read-only.
Every read still observes complete current resource data and derives live alert
health, metadata URL edits/clears and connected/ignored infrastructure. No
timestamp-only cache, telemetry omission, policy change or new wire field is
introduced. All existing catalogs, discovery/history coordinates, original
observation times, LastSeen, identity and tenant/revocation boundaries remain.
`broadcast_metrics_snapshot_test.go` compares the complete served JSON with an
independent earlier projection across the metadata-heavy nine-provider demo,
typed-view and same-time dirty cases; it also covers captured target replacement
and continuity/metadata/live-alert boundaries. `monitor_host_agents_test.go`
retains its one-materialization and live-change regression. Benchmarks include
the exact parent's complete conversion and final JSON encoding, with cold,
list-only, typed-clean and dirty inputs; they do not establish installed CPU/RSS
relief, native identity refresh throughput or completion of #2199.
Complete-content comparisons use one health-evaluation instant through a
private clock seam. Production still samples real UTC at the same post-read
boundary. The minute-boundary control requires age labels to advance without
renewing LastSeen; comparisons retain every health field instead of stripping
the reproduced `1m`/`2m` clock difference from JSON.
### Report identity lookups do not rebuild unrelated Kubernetes metadata
The producer's two temporary host/Docker-host admission registries use a
@@ -23,6 +23,29 @@ and sort the complete canonical change table while startup and ingestion wait.
## Purpose
### Broadcast bulk reads capture resources and history coordinates together
`ListWithMetricsTargets` and the monitor adapter's matching optional read return
detached resources and a detached target map from one locked registry generation.
The existing source-mapping inversion runs once for this read when typed views
are dirty; it does not build all typed views or add a retained generation cache.
Clean typed views may supply their already-current inverse mapping. Legacy List,
GetAll and individual target reads preserve their shapes and semantics.
The target map stays separate from resources until presentation host coalescing
selects the row identity. Missing coordinates remain missing in that capture;
they never fall through to a later live registry. Mapping changes with unchanged
LastSeen take effect on the next read. Returned resources, policy/identity blocks
and target values remain caller-owned across mutations and adapter replacement.
Projection cannot pair an earlier resource row with a later history identity.
`registry_test.go`, `registry_projection_test.go` and
`monitor_adapter_read_state_test.go` exercise full resource/point-target parity,
same-time edits, concurrent mapping writes, detachments, empty/nil reads and
tenant separation. Connected monitoring proof covers all nine demo providers,
continuity overlays and complete served JSON. Paired cold/clean/dirty benchmarks
measure whole materialization, not a new point-lookup envelope or native relief.
Canonical resource History honours selected memory observation provenance and Proxmox VM filesystem deferrals instead of treating numeric carriers as fresh measurements.
### Canonical resource History cannot promote retained guest readings