From 3c3c1b57a664a19c43d767591db440ed344816c9 Mon Sep 17 00:00:00 2001 From: "pulse-triage[bot]" <249995291+pulse-triage[bot]@users.noreply.github.com> Date: Fri, 28 Aug 2026 11:34:30 +0100 Subject: [PATCH] Finalize rc.11 recovery and visual evidence --- .../subsystems/deployment-installability.md | 7 ++- docs/releases/RELEASE_NOTES_v6.4.0-rc.11.md | 2 +- ...RELEASE_NOTES_v6.4.0-rc.11.md.visuals.json | 56 +++++++++++++++++++ docs/releases/V6_CHANGELOG_v6.4.0-rc.11.md | 3 +- .../installtests/build_release_assets_test.go | 6 +- 5 files changed, 67 insertions(+), 7 deletions(-) create mode 100644 docs/releases/RELEASE_NOTES_v6.4.0-rc.11.md.visuals.json diff --git a/docs/release-control/v6/internal/subsystems/deployment-installability.md b/docs/release-control/v6/internal/subsystems/deployment-installability.md index 8dd7d48d1d..3bee619f52 100644 --- a/docs/release-control/v6/internal/subsystems/deployment-installability.md +++ b/docs/release-control/v6/internal/subsystems/deployment-installability.md @@ -1860,9 +1860,10 @@ persistence. The rc.11 corrective set extends that boundary to token creation, agent-install issuance, and agent-removal revocation; corrects version-specific Anthropic cost estimates; merges complete cross-source disk identities; retains uniquely resolved dismissed TrueNAS SMART risk; and stabilizes narrow alert -investigation plus shared chart interaction. It also checkpoints active-state -recovery synchronously after durable lifecycle failure and prevents any Pulse -host interface from satisfying an external dead-man signal. The changes since +investigation, shared chart interaction, and responsive inline View preferences. +It also checkpoints a crash-safe active-state recovery envelope after durable +lifecycle failure and prevents any Pulse host interface from satisfying an +external dead-man signal. The changes since `v6.4.0-rc.6` add the canonical `alert_fired` mobile push type, but preserve the existing `view_alert` navigation action and all route, request/response, pairing, and authorization contracts. Published diff --git a/docs/releases/RELEASE_NOTES_v6.4.0-rc.11.md b/docs/releases/RELEASE_NOTES_v6.4.0-rc.11.md index 21af9d223c..46ce2e7dde 100644 --- a/docs/releases/RELEASE_NOTES_v6.4.0-rc.11.md +++ b/docs/releases/RELEASE_NOTES_v6.4.0-rc.11.md @@ -7,7 +7,7 @@ - **Atomic credential lifecycle** - API token creation, agent enrollment, and agent removal now roll back live state when durable persistence fails, preventing undisclosed credentials, accidental eviction, or revocations that reverse after restart. - **Accurate Anthropic budgets** - Current Opus and Haiku versions use version-specific first-party rates, so stale estimates no longer stop Patrol early or understate current Haiku usage. - **Stronger disk identity and risk** - PVE and agent observations of the same RAID volume merge across normalized serial/WWN forms, while dismissed TrueNAS SMART alerts continue to flag uniquely identified disks with critical hardware evidence. -- **Safer recovery and watchdog isolation** - Alert lifecycle failures checkpoint recoverable active state without deadlocking, and external dead-man targets fail closed when DNS or a literal address points to any Pulse host interface. +- **Safer recovery and watchdog isolation** - Alert lifecycle failures retain a crash-safe restart snapshot until SQLite is durably repaired, and external dead-man targets fail closed when any address points to a Pulse host interface. - **More stable incident investigation** - Mobile-width alert timelines keep context and actions together, history charts expose readable axes and synchronized hover times, and View preferences expand inline without covering tables. - **Durable alert lifecycles** - Alert history and active state now rebuild from the event log after restarts, with persisted identities migrated automatically and false all-clear states prevented during hydration. - **Better notification control** - Alerts can be snoozed individually, maintenance can recur by scope, escalation repeats can target specific destinations, delivery routes can filter by severity, and informational events remain distinct from warnings. diff --git a/docs/releases/RELEASE_NOTES_v6.4.0-rc.11.md.visuals.json b/docs/releases/RELEASE_NOTES_v6.4.0-rc.11.md.visuals.json new file mode 100644 index 0000000000..413211e454 --- /dev/null +++ b/docs/releases/RELEASE_NOTES_v6.4.0-rc.11.md.visuals.json @@ -0,0 +1,56 @@ +{ + "schema_version": 1, + "captures": [ + { + "id": "inline-view-preferences", + "title": "View preferences stay with the table", + "description": "Remembered display choices now expand in the page instead of covering the resources being adjusted.", + "viewport": { + "width": 1440, + "height": 900 + }, + "before": { + "route": "/proxmox/overview", + "steps": [ + { + "action": "click", + "locator": { + "kind": "role", + "role": "button", + "name": "View", + "exact": true, + "nth": 0 + } + } + ], + "ready": { + "kind": "text", + "value": "These choices are remembered for future visits.", + "exact": true, + "nth": 0 + } + }, + "after": { + "route": "/proxmox/overview", + "steps": [ + { + "action": "click", + "locator": { + "kind": "role", + "role": "button", + "name": "View", + "exact": true, + "nth": 0 + } + } + ], + "ready": { + "kind": "text", + "value": "These choices are remembered for future visits.", + "exact": true, + "nth": 0 + } + } + } + ] +} diff --git a/docs/releases/V6_CHANGELOG_v6.4.0-rc.11.md b/docs/releases/V6_CHANGELOG_v6.4.0-rc.11.md index fb44258af6..88b7eec23d 100644 --- a/docs/releases/V6_CHANGELOG_v6.4.0-rc.11.md +++ b/docs/releases/V6_CHANGELOG_v6.4.0-rc.11.md @@ -16,7 +16,7 @@ This changelog describes the changes since `v6.4.0-rc.10`. The candidate also re - API token creation, agent install issuance, and agent-removal revocation now share an atomic live-and-durable inventory boundary. - Anthropic pricing distinguishes current Opus and Haiku model generations from legacy aliases when estimating retained usage and enforcing budgets. - Cross-source disk identity normalizes complete serial and WWN framing without truncating hardware identifiers. -- Alert-lifecycle append failures synchronously checkpoint a lock-independent active-state recovery projection, while an epoch guard prevents overlapping stale checkpoints from clearing degraded state. +- Alert-lifecycle failures synchronously checkpoint a crash-safe recovery envelope, and SQLite regains authority only after durable restart repair, while an epoch guard prevents stale checkpoints from clearing degraded state. - Dead-man configuration and dial-time DNS validation reject every address assigned to the Pulse host and fail closed when local-interface enumeration is unavailable. - Alert investigation on narrow layouts uses a dedicated timeline dialog, while shared history charts synchronize hover timestamps and retain readable axes. - Remembered table View preferences expand in a responsive inline disclosure with consistent controls instead of a floating panel over the monitored resources. @@ -35,6 +35,7 @@ This changelog describes the changes since `v6.4.0-rc.10`. The candidate also re - PVE and agent observations of the same RAID-controller volume no longer render duplicate resources when one source frames the NAA identity as a serial and the other as a WWN. - Dismissed TrueNAS SMART alerts retain uniquely resolved critical disk evidence instead of allowing a damaged disk to return to healthy presentation. - Failed durable lifecycle writes no longer risk losing current active alerts or resurrecting alerts resolved before restart, and stale periodic checkpoints cannot overwrite the failure snapshot. +- A malformed or source-less degraded-state marker no longer lets startup trust a potentially stale SQLite alert projection. - A watchdog hostname or private-LAN address that resolves back to Pulse can no longer masquerade as an external progress signal. - Mobile alert timelines remain scroll-stable, selected incident history revalidates correctly, chart axis labels remain readable, and grouped hover timestamps stay aligned. - View preferences and the nested column selector no longer clip, cover table content, or leave mismatched controls on narrow and desktop layouts. diff --git a/scripts/installtests/build_release_assets_test.go b/scripts/installtests/build_release_assets_test.go index 99954a150e..9709c1bef7 100644 --- a/scripts/installtests/build_release_assets_test.go +++ b/scripts/installtests/build_release_assets_test.go @@ -896,7 +896,8 @@ func TestCurrentPrereleasePacketTracksInstallMetadata(t *testing.T) { "Clearer infrastructure details", "Safer governed actions", "Safer recovery and watchdog isolation", - "external dead-man targets fail closed when DNS or a literal address points to any Pulse host interface", + "Alert lifecycle failures retain a crash-safe restart snapshot until SQLite is durably repaired", + "external dead-man targets fail closed when any address points to a Pulse host interface", "View preferences expand inline without covering tables", "Existing Pulse Mobile iOS build 12 and Android versionCode 9 remain compatible", "The new `alert_fired` push uses the already-supported `view_alert` action", @@ -921,7 +922,8 @@ func TestCurrentPrereleasePacketTracksInstallMetadata(t *testing.T) { "The append-only event log is the authority for alert history and active lifecycle reconstruction", "Alert hydration no longer exposes a false all-clear state", "Docker lifecycle results distinguish command acceptance from independently observed post-action state", - "Alert-lifecycle append failures synchronously checkpoint a lock-independent active-state recovery projection", + "Alert-lifecycle failures synchronously checkpoint a crash-safe recovery envelope", + "A malformed or source-less degraded-state marker no longer lets startup trust a potentially stale SQLite alert projection", "Dead-man configuration and dial-time DNS validation reject every address assigned to the Pulse host", "Remembered table View preferences expand in a responsive inline disclosure", "Email, ntfy, and mobile push presentation preserve informational priority instead of elevating non-warning events to warning treatment.",