mirror of
https://github.com/rcourtman/Pulse.git
synced 2026-09-10 18:45:53 +00:00
d5440ff43e
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.