Pulse/internal/models
rcourtman d5440ff43e Slim the resource stream and catch up realtime gaps incrementally
The 2026-08-25 audit follow-up profiled the remaining frontend costs on
the 50-node mock rig. Entering a tab more than one websocket tick behind
the shared cache fell off the incremental path onto a full-estate
deep-unwrap merge — a 2.1s unwrap dominated warm Alerts entry at 4x
throttle — and the client-facing resource stream re-shipped ~3KB of
mostly-static metadata per resource on every snapshot, REST recovery,
and reconnect (governed gap resource-payload-static-metadata).

The connection store now keeps a bounded per-tick changed-id history and
serves unions from it, so an instance that mounts or resumes a few
revisions behind catches up with a delta merge over the union instead of
remerging the estate. Uncovered gaps and full-snapshot commits still
fall back to keyed full reconciliation.

Broadcast payloads dedupe the estate's distinct capability blobs into a
content-addressed state-level capabilityCatalog referenced per resource
by capabilitiesRef; default-posture resources (internal sensitivity,
cloud-summary routing, no redactions) omit policy and aiSafeSummary; and
canonicalIdentity.aliases no longer duplicates supersededIds. Ingestion
reverses all three: refs expand through the catalog as per-row clones
(reconcile mutates adopted objects in place), missing policies
synthesize the default posture so a policy:null transition patch cannot
strand a stale governed policy, and identity alias resolution consults
supersededIds explicitly. Slimming edits only the per-broadcast copy,
never stored monitor state, and the delta engine's generic top-level
field diff carries catalog changes in the same frame as the first
resource referencing a new entry.

Rig A/B on the pinned 50-node mock (same VM as the morning baseline,
single runs, +-30% variance; RandomMetrics mutates nearly every row per
tick, so this estate is the worst case for the catch-up union): mobile
4x Alerts entry settles 3.9s -> 2.0s with long tasks 5.5s -> 3.3s,
idle-30s long tasks drop 12.6s -> 10.8s mobile and 3.4s -> 2.8s
desktop, remaining steps flat within variance. Sparse-delta estates
gain more, because their catch-up unions stay small.

/api/state on the pinned mock estate drops 4.75MB -> 4.09MB (-13.9%);
the capability catalog is 7 entries totalling 2.5KB where 946 resources
previously inlined the blobs, and 806 default-posture resources shed
policy and aiSafeSummary. Browser-verified against a live build of this
tree: byte-identical UI outcomes vs the unmodified baseline across
overview/storage/docker/alerts probes at both viewports, with docker
container lifecycle actions enabled through catalog-expanded
capabilities. pulse-mobile and pulse-enterprise do not read the slimmed
fields; the AI runtime consumes the internal model, which is unchanged.

Contracts for monitoring, api-contracts, unified-resources,
performance-and-scalability, alerts, agent-lifecycle, and
storage-recovery are amended with the slimmed wire shape, the ingestion
synthesis obligations, the catch-up history, and superseded-id
resolution.
2026-08-25 12:24:32 +01:00
..
account_roles.go fix(hosted): enforce tenant org membership during handoff 2026-03-26 23:14:54 +00:00
backup_in_progress_test.go Stop showing an in-flight backup as a completed one 2026-08-20 12:13:44 +01:00
ceph_cluster_identity.go fix(ceph): parse Quincy+/Squid status schema for MON and MGR counts 2026-07-26 19:31:15 +01:00
ceph_pool_storage_test.go Reconcile Ceph pool alert identity 2026-05-28 14:42:43 +01:00
concurrency_test.go feat: Pulse v6 release 2026-03-18 16:06:30 +00:00
converters.go Slim the resource stream and catch up realtime gaps incrementally 2026-08-25 12:24:32 +01:00
converters_additional_test.go Prepare v6.0.0 release candidate 2026-06-04 14:07:14 +01:00
converters_branchcov0718_test.go Add Go branch-coverage tests for twelve pure backend helpers 2026-07-19 15:10:09 +01:00
converters_test.go Use authoritative Docker OOM evidence 2026-07-15 17:55:26 +01:00
deepcopy.go Add a supported least-privilege agent install profile 2026-08-20 20:49:44 +01:00
deepcopy_branchcov0724pm_test.go Cover the missing arms of the SSRF, clone and classifier guards 2026-07-25 00:39:15 +01:00
deepcopy_clone_independence_w0716_coverage_test.go Add deep-copy independence and qualification render coverage tests 2026-07-16 22:56:24 +01:00
deepcopy_test.go Add a supported least-privilege agent install profile 2026-08-20 20:49:44 +01:00
disk_summary.go Restore linked host-agent disk inventory for guest VMs 2026-04-22 09:22:46 +01:00
disk_summary_test.go Restore linked host-agent disk inventory for guest VMs 2026-04-22 09:22:46 +01:00
docker_cpu.go Normalize Docker container CPU capacity 2026-07-03 11:51:08 +01:00
docker_cpu_test.go Normalize Docker container CPU capacity 2026-07-03 11:51:08 +01:00
host_transient_expiry_test.go fix(monitoring): make Unraid task state freshness-safe 2026-07-23 22:17:25 +01:00
issue1639_pbs_collision_test.go Harden PBS backup attribution against shared sources (#1639) 2026-07-28 12:02:46 +01:00
memory_availability_test.go gofmt: realign map literal in memory_availability_test.go 2026-08-03 00:17:50 +01:00
metrics_types.go fix: correct Proxmox guest rate sampling 2026-07-24 10:26:50 +01:00
metrics_types_branchcov0724pm_test.go Cover pure helpers and persistence round-trips across the backend 2026-07-25 00:21:35 +01:00
metrics_types_test.go Merge PBS API and agent rows via the PBS-reported node hostname 2026-08-01 22:12:46 +01:00
models.go Add a supported least-privilege agent install profile 2026-08-20 20:49:44 +01:00
models_collections_branchcov0716_test.go Add Go branch-coverage tests for models config securityutil and aicontracts helpers 2026-07-16 14:20:13 +01:00
models_core_branchcov0718_test.go Add Go branch-coverage tests for models, cloudcp and actionlifecycle helpers 2026-07-19 15:10:09 +01:00
models_deepcopy_branchcov0716_test.go Add Go branch-coverage tests for models config securityutil and aicontracts helpers 2026-07-16 14:20:13 +01:00
models_frontend.go Slim the resource stream and catch up realtime gaps incrementally 2026-08-25 12:24:32 +01:00
models_frontend_branchcov0718_test.go Add Go branch-coverage tests for twelve pure backend helpers 2026-07-19 15:10:09 +01:00
models_frontend_test.go feat: Pulse v6 release 2026-03-18 16:06:30 +00:00
models_helpers_test.go Fix PBS backup identity matching 2026-06-03 11:43:20 +01:00
models_removed_hosts_branchcov0716_test.go Add Go branch-coverage tests for models config securityutil and aicontracts helpers 2026-07-16 14:20:13 +01:00
models_roles_branchcov0716_test.go Add Go branch-coverage tests for pure config and helper packages 2026-07-16 10:19:51 +01:00
node_aliases_test.go feat: Pulse v6 release 2026-03-18 16:06:30 +00:00
organization.go Fail closed on ambiguous email principal resolution 2026-05-05 09:26:10 +01:00
organization_additional_test.go Fail closed on ambiguous email principal resolution 2026-05-05 09:26:10 +01:00
profile_validation.go feat: Pulse v6 release 2026-03-18 16:06:30 +00:00
profile_validation_additional_test.go feat: Pulse v6 release 2026-03-18 16:06:30 +00:00
profile_validation_test.go feat: Pulse v6 release 2026-03-18 16:06:30 +00:00
profiles.go feat: Pulse v6 release 2026-03-18 16:06:30 +00:00
proxmox_guest_state.go Stop showing an in-flight backup as a completed one 2026-08-20 12:13:44 +01:00
pve_node_identity_test.go Add durable Proxmox node display names 2026-07-24 15:46:56 +01:00
snapshot_provider.go feat: Pulse v6 release 2026-03-18 16:06:30 +00:00
state_additional_test.go Fix Proxmox cluster membership reconciliation 2026-07-24 11:21:27 +01:00
state_docker_test.go feat: Pulse v6 release 2026-03-18 16:06:30 +00:00
state_host_test.go Fix PBS backup attribution for VMIDs shared across clusters 2026-07-28 11:24:01 +01:00
state_snapshot.go Fix Proxmox tag color style propagation 2026-06-25 17:14:00 +01:00
state_snapshot_additional_test.go Stabilize RC release backend race proofs 2026-04-11 23:18:44 +01:00
state_snapshot_concurrency_test.go feat: Pulse v6 release 2026-03-18 16:06:30 +00:00
state_snapshot_frontend_test.go Fix Proxmox tag color style propagation 2026-06-25 17:14:00 +01:00
state_snapshot_merge_test.go Merge linked host disks into guest overviews 2026-04-30 14:37:43 +01:00