mirror of
https://github.com/rcourtman/Pulse.git
synced 2026-10-24 04:33:17 +00:00
d25403b8c3
Suppressed alert writes previously returned without insertion while callers continued adding history, recording firing events and requesting notification delivery. Make acceptance explicit across detector and restore paths. Repeated muted, retired and maintenance observations now stop before those side effects, while expiry and resumed monitoring admit the condition once. Startup now reconciles restored alerts as soon as persisted resource policy becomes available, refreshes shared alert state and persists that resolution. Reconciliation also runs after resource publication, when restored native aliases first resolve to their canonical agent policy. Previously muted or retired resources could retain alerts restored before either boundary. Retained alert occurrences now reopen when the reducer explicitly re-fires. Canonical history records occurrence identity separately from transition time, preserving one incident after checkpoint loss. Delayed initial firing, resolution replay and historical read repair cannot override a newer transition. Older canonical records without the occurrence key retain their existing matching behavior. Shared table and card renderers preserve components retained across scrolling windows. Previously a window shift rebuilt those items, resetting the node Manage tab and losing unsaved lifecycle edits while scrolling to Save. Mounted regressions cover retained input identity, text, global position and the existing row budget. Maintenance banners now show actual local start and end times instead of formatting future timestamps as “just now”, and describe the paused attention correctly. The synthetic host fixtures now keep stable machine identities across graph rebuilds, so saved policies remain attached through restart verification. The existing stability regression now checks machine IDs per host, Docker agent IDs and unified canonical agent IDs. Production conflict checks for a genuinely changed machine identity are unchanged. Generated installation and rollback guidance now identifies the Pulse-owned update helper and directs other installations to the versioned signed installer flow. Both signed installer examples stop on download or signature failure and run in a fresh temporary directory. Validation: - Suppression regression reproduced on the original source across 15 cases, then passed with the change. Full alert package tests pass. Extended expiry, reconciliation and restore cases pass with the race detector. - Signed installer recipes fail six baseline cases and pass all eight corrected cases. Seven existing installer pinning/signature/rollback tests pass. - Release renderer (39 tests), promotion resolver (47 tests), release-promotion policy (57 tests), documentation mirrors and links, and governance audits pass. Installer policy assertions cover helper ownership, the signed fallback, exact version pinning, rollback applicability and post-restart version verification. The complete repository pre-commit hook passes on the worker against the matching staged source, including repository tooling tests, release-control helper tests and frontend lint. The global sensitivity check passes locally. - Startup restore and late native-alias resolution both fail on their baselines. Final focused proof, race proof and the full monitoring package pass. - Retained-occurrence refire regression reproduced in both incident projections. The complete memory suite passes on final source, full monitoring and resource-store suites pass, and final focused replay/refire proof passes under the race detector. - Shared window regression failed for both table and card renderers on the baseline, then all nine tests passed. Related component checks passed 88 tests across seven files. Typecheck and canonical platform audit pass. - Maintenance rendering reproduces both incorrect future-time cases on the baseline. Final operator-state tests pass 22 cases, and targeted lint and typecheck pass. - The fixture identity regression fails on the committed generator and passes after deterministic IDs, together with four related host-link tests and the Docker host fixture test. - Production frontend and backend builds pass. Playwright inspection covers Proxmox Manage and Alerts at 390x844 and 1440x900, 900px History controls, and shipped install/upgrade docs. Saved maintenance and mute survive a graceful same-data restart with stable canonical identity. Cancelling maintenance preserves mute, resuming monitoring reopens the retained incident with ordered fire/resolve/refire events. - Authentication and credential baseline passes, including all 41 required API security regressions. All 11 selected Linux peer-identity, command approval and observer-isolation regressions pass. - The existing WebSocket connection-cap test now waits for actual per-IP slot release before testing slot reuse. It still requires HTTP 429 at capacity and successful registration after release. The corrected test passes 100 runs under the race detector, and the full agent-execution package passes with the race detector on the CI merge source. The existing resource-payload performance gap remains open. The initial 50-node measurement recorded a 1,037 ms maximum desktop idle long task. A final-source run still observed multi-second tasks, but its elevated host load prevents a controlled comparison. Both observations and their limits are retained. This change does not claim to resolve cross-client payload or browser responsiveness work. Refs #2237