Prepare v6.4.0-rc.5 release

Package the atomic API-token deletion fix, alert delivery evidence, reducer-backed lifecycle cutover, separated agent install tokens, and filesystem history feedback for the next release candidate.

Change-source: pulse-maintainer
This commit is contained in:
pulse-triage[bot]
2026-08-27 00:55:23 +01:00
parent 2a317cbd6b
commit 3b21d4c257
13 changed files with 125 additions and 48 deletions
+1 -1
View File
@@ -1 +1 @@
6.4.0-rc.4
6.4.0-rc.5
+4 -4
View File
@@ -2,9 +2,9 @@ apiVersion: v2
name: pulse
description: Helm chart for deploying the Pulse hub and optional Docker, Kubernetes, or OpenShift monitoring agent.
type: application
version: 6.4.0-rc.4
appVersion: "6.4.0-rc.4"
icon: https://raw.githubusercontent.com/rcourtman/Pulse/v6.4.0-rc.4/docs/images/pulse-logo.svg
version: 6.4.0-rc.5
appVersion: "6.4.0-rc.5"
icon: https://raw.githubusercontent.com/rcourtman/Pulse/v6.4.0-rc.5/docs/images/pulse-logo.svg
keywords:
- monitoring
- proxmox
@@ -32,7 +32,7 @@ annotations:
description: Smoke tests with kind cluster deployment
artifacthub.io/links: |
- name: Documentation
url: https://github.com/rcourtman/Pulse/blob/v6.4.0-rc.4/docs/KUBERNETES.md
url: https://github.com/rcourtman/Pulse/blob/v6.4.0-rc.5/docs/KUBERNETES.md
- name: Support
url: https://github.com/rcourtman/Pulse/discussions
artifacthub.io/maintainers: |
+1 -1
View File
@@ -1,6 +1,6 @@
# pulse
![Version: 6.4.0-rc.4](https://img.shields.io/badge/Version-6.4.0--rc.4-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: 6.4.0-rc.4](https://img.shields.io/badge/AppVersion-6.4.0--rc.4-informational?style=flat-square)
![Version: 6.4.0-rc.5](https://img.shields.io/badge/Version-6.4.0--rc.5-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: 6.4.0-rc.5](https://img.shields.io/badge/AppVersion-6.4.0--rc.5-informational?style=flat-square)
Helm chart for deploying the Pulse hub and optional Docker, Kubernetes, or OpenShift monitoring agent.
+1 -1
View File
@@ -2,7 +2,7 @@ version: '3.8'
services:
pulse:
image: ${PULSE_IMAGE:-rcourtman/pulse:6.4.0-rc.4}
image: ${PULSE_IMAGE:-rcourtman/pulse:6.4.0-rc.5}
container_name: pulse
restart: unless-stopped
logging:
+6 -4
View File
@@ -7,8 +7,8 @@ For historical v4 notes that previously lived in this repo, see:
`docs/releases/RELEASE_NOTES_v4.md`
For the current v6 release candidate packet (the current v6 support release candidate packet), see:
- `docs/releases/RELEASE_NOTES_v6.4.0-rc.4.md`
- `docs/releases/V6_CHANGELOG_v6.4.0-rc.4.md`
- `docs/releases/RELEASE_NOTES_v6.4.0-rc.5.md`
- `docs/releases/V6_CHANGELOG_v6.4.0-rc.5.md`
For the current stable v6 packet, see:
- `docs/releases/RELEASE_NOTES_v6.3.2.md`
@@ -19,10 +19,12 @@ For the preceding stable v6 packet, see:
- `docs/releases/V6_CHANGELOG_v6.3.1.md`
For the preceding v6.4 release candidate packet, see:
- `docs/releases/RELEASE_NOTES_v6.4.0-rc.3.md`
- `docs/releases/V6_CHANGELOG_v6.4.0-rc.3.md`
- `docs/releases/RELEASE_NOTES_v6.4.0-rc.4.md`
- `docs/releases/V6_CHANGELOG_v6.4.0-rc.4.md`
For earlier v6.4 release candidate packets, see:
- `docs/releases/RELEASE_NOTES_v6.4.0-rc.3.md`
- `docs/releases/V6_CHANGELOG_v6.4.0-rc.3.md`
- `docs/releases/RELEASE_NOTES_v6.4.0-rc.2.md`
- `docs/releases/V6_CHANGELOG_v6.4.0-rc.2.md`
- `docs/releases/RELEASE_NOTES_v6.4.0-rc.1.md`
+6 -4
View File
@@ -4,8 +4,8 @@ This guide covers practical upgrade steps for existing Pulse installs moving to
For the current v6 release candidate packet (the current v6 support release candidate packet), see:
- `docs/releases/RELEASE_NOTES_v6.4.0-rc.4.md`
- `docs/releases/V6_CHANGELOG_v6.4.0-rc.4.md`
- `docs/releases/RELEASE_NOTES_v6.4.0-rc.5.md`
- `docs/releases/V6_CHANGELOG_v6.4.0-rc.5.md`
For the current stable v6 packet, see:
@@ -19,11 +19,13 @@ For the preceding stable v6 packet, see:
For the preceding v6.4 release candidate packet, see:
- `docs/releases/RELEASE_NOTES_v6.4.0-rc.3.md`
- `docs/releases/V6_CHANGELOG_v6.4.0-rc.3.md`
- `docs/releases/RELEASE_NOTES_v6.4.0-rc.4.md`
- `docs/releases/V6_CHANGELOG_v6.4.0-rc.4.md`
For earlier v6.4 release candidate packets, see:
- `docs/releases/RELEASE_NOTES_v6.4.0-rc.3.md`
- `docs/releases/V6_CHANGELOG_v6.4.0-rc.3.md`
- `docs/releases/RELEASE_NOTES_v6.4.0-rc.2.md`
- `docs/releases/V6_CHANGELOG_v6.4.0-rc.2.md`
- `docs/releases/RELEASE_NOTES_v6.4.0-rc.1.md`
@@ -1782,22 +1782,20 @@ diagnostics. The same release workflow also executes the generated self-signed
and custom-CA Windows installer commands through Windows PowerShell 5.1 before
release assembly, so the first HTTPS fetch is release proof rather than a
string-shape assertion.
The active prerelease `v6.4.0-rc.4` cut sets the repo-root `VERSION`, repo-root
The active prerelease `v6.4.0-rc.5` cut sets the repo-root `VERSION`, repo-root
`docker-compose.yml` image default, `scripts/install-docker.sh` fallback, and
Helm chart release metadata to the same `6.4.0-rc.4` release version. It follows
`v6.4.0-rc.3` on the published `v6.4.0` candidate line. This prerelease keeps
Helm chart release metadata to the same `6.4.0-rc.5` release version. It follows
`v6.4.0-rc.4` on the published `v6.4.0` candidate line. This prerelease keeps
`rollback_version=v6.3.2`, publishes a versioned public GitHub prerelease
plus versioned Docker and Helm artifacts, and does not move stable/latest
install pointers or stable semver aliases. The candidate moves resources,
Connected infrastructure, and active alerts onto keyed per-client deltas;
defers expensive realtime merges during operator input; preserves windowed-row
identity across reordered snapshots; and isolates REST recovery from the
websocket delta baseline. It also restores Proxmox network details, hardens
backup and drawer history targeting, clears committed notification delivery
warnings immediately, and keeps supported Proxmox VM/LXC lifecycle requests on
the governed action path without a QEMU guest-agent prerequisite or manual
command fallback. The changes since `v6.4.0-rc.3` do not require a Pulse Mobile
client change and preserve
install pointers or stable semver aliases. The candidate makes API-token
deletion atomic across persistence failures; adds append-only alert transition
and notification-decision evidence; exposes delivery outcomes and held reasons
on existing browser surfaces; separates agent install tokens from generated
commands; and moves canonical metric, lifecycle, and stateful alert families
onto the deterministic reducer core with confirmation, recovery,
acknowledgement, and refire parity proof. The changes since `v6.4.0-rc.4` do not
require a Pulse Mobile client change and preserve
the existing mobile, Relay, onboarding, and mobile-facing API contracts, so the
server cut is classified `no-mobile-impact`; no companion upload or public
mobile-store rollout is part of this candidate. The canonical mobile
@@ -1813,10 +1811,15 @@ only after the release owner explicitly confirms that production credentials
and certificate authorization are ready and a reviewed policy/code change
restores it.
The preceding `v6.4.0-rc.4` cut published from exact source SHA
`8fb7b3764183168f93140d83e2b18b4e953b6cd8`. Its tag and versioned artifacts
remain immutable; `v6.4.0-rc.5` supersedes it without moving stable install
pointers or stable semver aliases from `v6.3.2`.
The preceding `v6.4.0-rc.3` cut published from exact source SHA
`cf0ca6f127540e9997c2eb97eeed32f27619d242`. Its tag and versioned artifacts
remain immutable; `v6.4.0-rc.4` supersedes it without moving stable install
pointers or stable semver aliases from `v6.3.2`.
remain immutable; later `v6.4.0` prereleases supersede it without moving stable
install pointers or stable semver aliases from `v6.3.2`.
The preceding `v6.4.0-rc.2` publication attempt built and staged the exact
candidate artifacts but failed release convergence before public activation.
@@ -2255,8 +2258,8 @@ For the active stable `v6.1.2` cut, the repo-root compose default and
`scripts/install-docker.sh` fallback must both pin `6.1.2` whenever the
governed `VERSION` is that stable cut. The stable promotion guard remains in
force and rejects leftover `-rc.` defaults.
For the active prerelease `v6.4.0-rc.4` cut, the repo-root compose default and
`scripts/install-docker.sh` fallback must both pin `6.4.0-rc.4` until the next
For the active prerelease `v6.4.0-rc.5` cut, the repo-root compose default and
`scripts/install-docker.sh` fallback must both pin `6.4.0-rc.5` until the next
governed stable cut moves them forward. Each new release moves
these two pins together with the repo-root `VERSION` and the Helm chart metadata
in the same commit; a cut that leaves any of the four on a superseded value is a
@@ -0,0 +1,30 @@
# Pulse v6.4.0-rc.5 Release Notes
`v6.4.0-rc.5` is a release candidate for the next v6 minor release. It makes API-token removal durable, exposes notification decisions more clearly, and moves alert lifecycle handling onto a deterministic transition core.
## What's improved
- **Clearer notification evidence** — Active alerts show delivery status, and the delivery activity view includes held notifications and their suppression reasons.
- **More reliable alert lifecycles** — Metric, availability, health, posture, backup, snapshot, storage, and update alerts now share a deterministic transition core with pinned confirmation, recovery, acknowledgement, and re-fire behavior.
- **Safer agent setup** — Agent install commands reveal their newly generated token separately, making it easier to copy the credential without mixing it with the shell command.
- **Better filesystem feedback** — Filesystem history drawers again show loading progress while a longer range is fetched.
## Fixes
- API-token deletion now persists the reduced inventory atomically and restores the complete prior live inventory if saving fails, instead of reporting success with inconsistent credentials ([#1783](https://github.com/rcourtman/Pulse/issues/1783)).
- Alert delivery diagnosis now distinguishes pending, sent, failed, and suppressed outcomes without requiring operators to infer delivery from an active alert alone.
- Confirmation-based alerts retain the first matched observation as their occurrence start, and new confirmation runs no longer inherit stale timestamps.
- Canonically keyed metric alerts resolve through the same identity used to create them instead of remaining stale after recovery.
- Stateful alert manual clears preserve acknowledgement and recent-resolution behavior so a quick refire does not duplicate history.
- Guest and host memory percentages use the same cache-aware basis in operator-facing explanations.
## Before you upgrade
- This is a release candidate. Stable installations remain on v6.3.2 unless an operator explicitly selects this version.
- Existing configurations remain valid and no manual data migration is required.
- Pulse Mobile does not consume the changed alert transition internals or browser delivery evidence. Existing mobile, Relay, onboarding, pairing, push, and mobile-facing API contracts are unchanged, so no companion update is required.
- Windows Unified Agent binaries are checksum- and detached-signature-verified but are not Authenticode-signed, so Windows may show an Unknown Publisher warning.
## Known issues
- Windows Authenticode signing remains unavailable for this candidate; use the published checksum and detached signature when verifying Windows agent downloads.
+37
View File
@@ -0,0 +1,37 @@
# Pulse v6.4.0-rc.5
_This changelog describes the changes since `v6.4.0-rc.4` included in
`v6.4.0-rc.5`._
## Added
- Active-alert delivery diagnosis exposes pending, sent, failed, and suppressed notification outcomes.
- The append-only alert event log records lifecycle transitions and notification decisions, including suppression mechanisms and reasons.
- Agent install-token responses separate the one-time token value from the generated installation command.
## Changed
- Canonical metric, lifecycle, and stateful alert families use the deterministic reducer core for activation, confirmation, recovery, acknowledgement restoration, cooldown refire, and recent-resolution state.
- Legacy tracking maps remain compatibility mirrors while reducer-owned transitions become authoritative.
- Alert delivery evidence and held notifications are projected onto the existing alert overview and delivery activity surfaces.
- Confirmation, intent, recovery, and backup-offline deferral semantics are characterized by composed parity suites before and after family cutover.
## Fixed
- API-token deletion snapshots the full inventory, persists the exact reduced inventory, and rolls the live token set and primary-token projection back on persistence failure ([#1783](https://github.com/rcourtman/Pulse/issues/1783)).
- Canonically keyed metric alerts resolve through their canonical identity rather than leaving stale active records after recovery.
- Confirmation-based lifecycle timestamps retain the first matched observation and restart correctly after an interrupted confirmation run.
- Stateful manual clears preserve recent-resolution and acknowledgement retention, preventing duplicate history on a quick refire.
- Filesystem history drawers again render loading progress.
- Guest and host memory explanations use the canonical cache-aware usage basis.
## Release Metadata
- Version: `v6.4.0-rc.5`
- Previous candidate tag: `v6.4.0-rc.4`
- Previous stable: `v6.3.2`
- Rollback target: `v6.3.2`
- Rollback command: `./scripts/install.sh --version v6.3.2`
- Promotion path: exact-SHA single-build release candidate from `main`
- Windows signing decision: prereleases publish checksum- and detached-signature-verified Windows agents without Authenticode while SignPath remains unavailable; Windows may show an Unknown Publisher warning
- Mobile decision: `no-mobile-impact`; the changed alert transition internals and browser delivery evidence preserve the existing mobile, Relay, onboarding, route, request/response, pairing, and push contracts, so no companion build or public store rollout is required
+6 -4
View File
@@ -4,8 +4,8 @@ This guide covers practical upgrade steps for existing Pulse installs moving to
For the current v6 release candidate packet (the current v6 support release candidate packet), see:
- `docs/releases/RELEASE_NOTES_v6.4.0-rc.4.md`
- `docs/releases/V6_CHANGELOG_v6.4.0-rc.4.md`
- `docs/releases/RELEASE_NOTES_v6.4.0-rc.5.md`
- `docs/releases/V6_CHANGELOG_v6.4.0-rc.5.md`
For the current stable v6 packet, see:
@@ -19,11 +19,13 @@ For the preceding stable v6 packet, see:
For the preceding v6.4 release candidate packet, see:
- `docs/releases/RELEASE_NOTES_v6.4.0-rc.3.md`
- `docs/releases/V6_CHANGELOG_v6.4.0-rc.3.md`
- `docs/releases/RELEASE_NOTES_v6.4.0-rc.4.md`
- `docs/releases/V6_CHANGELOG_v6.4.0-rc.4.md`
For earlier v6.4 release candidate packets, see:
- `docs/releases/RELEASE_NOTES_v6.4.0-rc.3.md`
- `docs/releases/V6_CHANGELOG_v6.4.0-rc.3.md`
- `docs/releases/RELEASE_NOTES_v6.4.0-rc.2.md`
- `docs/releases/V6_CHANGELOG_v6.4.0-rc.2.md`
- `docs/releases/RELEASE_NOTES_v6.4.0-rc.1.md`
+1 -1
View File
@@ -6,7 +6,7 @@ set -euo pipefail
SCRIPT_DIR="$(CDPATH= cd -- "$(dirname -- "$0")" && pwd)"
DOCKER_IMAGE_REPO="${DOCKER_IMAGE_REPO:-rcourtman/pulse}"
CANONICAL_DEFAULT_PULSE_VERSION="6.4.0-rc.4"
CANONICAL_DEFAULT_PULSE_VERSION="6.4.0-rc.5"
resolve_default_pulse_version() {
if [ -n "${PULSE_IMAGE_VERSION:-}" ]; then
@@ -887,11 +887,11 @@ func TestCurrentPrereleasePacketTracksInstallMetadata(t *testing.T) {
"## Fixes",
"## Before you upgrade",
"## Known issues",
"keyed per-client deltas",
"Delivery warnings now clear",
"QEMU guest agent",
"Restored Proxmox network details",
"Pulse Mobile does not consume the changed browser resource stream",
"Clearer notification evidence",
"More reliable alert lifecycles",
"API-token deletion now persists the reduced inventory atomically",
"Filesystem history drawers again show loading progress",
"Pulse Mobile does not consume the changed alert transition internals",
"not Authenticode-signed",
"Unknown Publisher warning",
)
@@ -901,12 +901,12 @@ func TestCurrentPrereleasePacketTracksInstallMetadata(t *testing.T) {
"Rollback target: `v"+previous+"`",
"Promotion path: exact-SHA single-build release candidate from `main`",
"This changelog describes the changes since `v"+comparisonVersion+"`",
"Resources, connected-infrastructure entries, and active alerts use per-client keyed deltas",
"REST state recovery is isolated from the websocket baseline",
"Notification queue health is reconciled immediately",
"Proxmox VM/LXC lifecycle actions remain available through the governed action path",
"Proxmox node network details render again",
"Backup recovery data retains the correct source attribution",
"The append-only alert event log records lifecycle transitions and notification decisions",
"Canonical metric, lifecycle, and stateful alert families use the deterministic reducer core",
"API-token deletion snapshots the full inventory",
"Canonically keyed metric alerts resolve through their canonical identity",
"Stateful manual clears preserve recent-resolution and acknowledgement retention",
"Filesystem history drawers again render loading progress",
"Windows signing decision: prereleases publish checksum- and detached-signature-verified Windows agents without Authenticode",
"Mobile decision: `no-mobile-impact`",
"no companion build or public store rollout is required",
@@ -145,6 +145,7 @@ func TestPreviousStableForPrereleaseVersionCrossesMinorBoundaries(t *testing.T)
{version: "6.4.0-rc.2", want: "6.3.2"},
{version: "6.4.0-rc.3", want: "6.3.2"},
{version: "6.4.0-rc.4", want: "6.3.2"},
{version: "6.4.0-rc.5", want: "6.3.2"},
}
for _, test := range tests {