diff --git a/VERSION b/VERSION index 5e3254243..a8edb160c 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -6.1.2 +6.2.0-rc.1 diff --git a/deploy/helm/pulse/Chart.yaml b/deploy/helm/pulse/Chart.yaml index 2ddf6e802..f3bf124b3 100644 --- a/deploy/helm/pulse/Chart.yaml +++ b/deploy/helm/pulse/Chart.yaml @@ -2,9 +2,9 @@ apiVersion: v2 name: pulse description: Helm chart for deploying the Pulse hub and optional Docker monitoring agent. type: application -version: 6.1.2 -appVersion: "6.1.2" -icon: https://raw.githubusercontent.com/rcourtman/Pulse/v6.1.2/docs/images/pulse-logo.svg +version: 6.2.0-rc.1 +appVersion: "6.2.0-rc.1" +icon: https://raw.githubusercontent.com/rcourtman/Pulse/v6.2.0-rc.1/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.1.2/docs/KUBERNETES.md + url: https://github.com/rcourtman/Pulse/blob/v6.2.0-rc.1/docs/KUBERNETES.md - name: Support url: https://github.com/rcourtman/Pulse/discussions artifacthub.io/maintainers: | diff --git a/deploy/helm/pulse/README.md b/deploy/helm/pulse/README.md index 4ccd594c4..879c0e657 100644 --- a/deploy/helm/pulse/README.md +++ b/deploy/helm/pulse/README.md @@ -1,6 +1,6 @@ # pulse -![Version: 6.1.2](https://img.shields.io/badge/Version-6.1.2-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: 6.1.2](https://img.shields.io/badge/AppVersion-6.1.2-informational?style=flat-square) +![Version: 6.2.0-rc.1](https://img.shields.io/badge/Version-6.2.0--rc.1-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: 6.2.0-rc.1](https://img.shields.io/badge/AppVersion-6.2.0--rc.1-informational?style=flat-square) Helm chart for deploying the Pulse hub and optional Docker monitoring agent. diff --git a/docker-compose.yml b/docker-compose.yml index 35e08b0cd..0cceeabf8 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -2,7 +2,7 @@ version: '3.8' services: pulse: - image: ${PULSE_IMAGE:-rcourtman/pulse:6.1.2} + image: ${PULSE_IMAGE:-rcourtman/pulse:6.2.0-rc.1} container_name: pulse restart: unless-stopped logging: diff --git a/docs/RELEASE_NOTES.md b/docs/RELEASE_NOTES.md index 5f651ab77..daba69880 100644 --- a/docs/RELEASE_NOTES.md +++ b/docs/RELEASE_NOTES.md @@ -6,6 +6,10 @@ Pulse release notes live on GitHub: For historical v4 notes that previously lived in this repo, see: `docs/releases/RELEASE_NOTES_v4.md` +For the current v6 support release candidate packet, see: +- `docs/releases/RELEASE_NOTES_v6.2.0-rc.1.md` +- `docs/releases/V6_CHANGELOG_v6.2.0-rc.1.md` + For the current stable v6 packet, see: - `docs/releases/RELEASE_NOTES_v6.1.2.md` - `docs/releases/V6_CHANGELOG_v6.1.2.md` diff --git a/docs/UPGRADE_v6.md b/docs/UPGRADE_v6.md index ce84ea83f..734948bc1 100644 --- a/docs/UPGRADE_v6.md +++ b/docs/UPGRADE_v6.md @@ -2,6 +2,11 @@ This guide covers practical upgrade steps for existing Pulse installs moving to v6. +For the current v6 support release candidate packet, see: + +- `docs/releases/RELEASE_NOTES_v6.2.0-rc.1.md` +- `docs/releases/V6_CHANGELOG_v6.2.0-rc.1.md` + For the current stable v6 packet, see: - `docs/releases/RELEASE_NOTES_v6.1.2.md` diff --git a/docs/release-control/v6/internal/status.json b/docs/release-control/v6/internal/status.json index f57f3bd8d..dc7a944b4 100644 --- a/docs/release-control/v6/internal/status.json +++ b/docs/release-control/v6/internal/status.json @@ -9227,7 +9227,21 @@ ] } ], - "work_claims": [], + "work_claims": [ + { + "id": "release-operator-v620rc1-release-gate-single-build-release-promotion-path", + "agent_id": "release-operator-v620rc1", + "summary": "Prepare and publish v6.2.0-rc.1 through the governed exact-SHA promotion workflow", + "target_id": "v6-product-lane-expansion", + "claimed_at": "2026-07-27T12:45:00Z", + "heartbeat_at": "2026-07-27T12:45:00Z", + "expires_at": "2026-07-27T20:45:00Z", + "work_item": { + "kind": "release-gate", + "id": "single-build-release-promotion-path" + } + } + ], "open_decisions": [], "source_of_truth_file": "docs/release-control/v6/internal/SOURCE_OF_TRUTH.md", "resolved_decisions": [ diff --git a/docs/release-control/v6/internal/subsystems/deployment-installability.md b/docs/release-control/v6/internal/subsystems/deployment-installability.md index 1d51f9d8d..4d1e93472 100644 --- a/docs/release-control/v6/internal/subsystems/deployment-installability.md +++ b/docs/release-control/v6/internal/subsystems/deployment-installability.md @@ -1111,6 +1111,34 @@ host-local redirect contract as runtime token minting and exchange. Proof input must reject absolute, scheme-relative, backslash-authority, encoded-separator, and control-character targets before constructing the handoff request. +The active support prerelease `v6.2.0-rc.1` 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.2.0-rc.1` release +version. This support prerelease keeps `rollback_version=v6.1.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. Stable +install pointers stay on `v6.1.2`, whose active stable cut is recorded below and +continues to govern the stable line until this candidate is promoted. The first +`v6.2.0` candidate introduces the Pulse Pro External Probes feature that runs +assigned availability checks from a connected agent outside the monitored site, +completes the multi-site Proxmox identity-isolation trilogy across connection +consolidation, same-name node aggregation, and the first-poll unclassified-node +window, adds host-agent identity-collapse detection for cloned machine-ids, +restores service availability after a failed unattended update, follows +same-host TrueNAS handshake redirects, and makes Pulse Intelligence outcome +telemetry verified and complete. The exact `main` SHA must pass the integrated +release checks and immutable-candidate build before the single-build workflow +crosses its public mutation boundary. +The `v6.2.0-rc.1` server cut is classified `no-mobile-impact`; no companion +build upload is part of this cut. The existing mobile candidate programme +remains separate, and the release packet must not describe a public store +rollout. +Authenticode signing through SignPath is the canonical Windows signing backend +for the `v6.2.0` line. The owner-approved unsigned-Windows exception is bounded +to `v6.1.0`, `v6.1.1`, and `v6.1.2` and does not extend to any `v6.2.0` +release, so stable `v6.2.0` promotion must fail closed when the SignPath +configuration or the returned signer proof is unavailable. + The active stable `v6.1.2` 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.1.2` release version. This patch @@ -1251,9 +1279,14 @@ Helm metadata. A draft release workflow failure caused by stale image or chart pins is a release-packet blocker until the defaults, tests, and evidence record are refreshed from the new branch head. 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` until the next -governed stable cut moves them forward. The stable promotion guard remains in +`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 support prerelease `v6.2.0-rc.1` cut, the repo-root compose +default and `scripts/install-docker.sh` fallback must both pin `6.2.0-rc.1` +until the next governed stable cut moves them forward. The stable promotion +guard remains in force and must reject leftover `-rc.` defaults when the +governed `VERSION` returns to a stable release. The RC7 packet refresh records `fc10de9b5477613316473267b72b05b6b2b7aaff` as the current validation-risk commit. That head includes the earlier Docker-default correction plus the follow-on capacity-forecast and Patrol diff --git a/docs/releases/RELEASE_NOTES_v6.2.0-rc.1.md b/docs/releases/RELEASE_NOTES_v6.2.0-rc.1.md new file mode 100644 index 000000000..ca849d9be --- /dev/null +++ b/docs/releases/RELEASE_NOTES_v6.2.0-rc.1.md @@ -0,0 +1,119 @@ +# Pulse v6.2.0-rc.1 Release Notes + +`v6.2.0-rc.1` is a release candidate for the next Pulse v6 minor line. It +follows stable `v6.1.2` and is the first candidate on the `v6.2.0` line. It +introduces External Probes for Pulse Pro, closes the remaining multi-site +Proxmox identity-isolation gaps reported through support, and carries the +update-recovery, TrueNAS, and telemetry work completed since the previous +stable cut. + +## Highlights + +- **External Probes (Pulse Pro)**: an availability check can now run from a + connected Pulse agent outside the monitored site, so a site can be watched + from the outside instead of only from the Pulse server. +- Proxmox clusters, nodes, and host agents at different sites stay separate + even when they reuse cluster names, node names, and private addressing. +- Adding a second site whose nodes share hostnames with an existing site no + longer lets those nodes take over the first site's node records. +- Host agents deployed from a cloned template image are surfaced instead of + silently collapsing two physical machines into one host row. +- Failed unattended updates restore service availability instead of leaving + Pulse stopped, and TrueNAS appliances behind an HTTP-to-HTTPS redirect + connect again. + +## Added + +- **External Probes (Pulse Pro).** An availability check can be assigned to a + connected Pulse agent through the new **Run from** control in the + availability check editor. Assignments travel over the signed agent + configuration channel, the assigned agent runs the same ICMP, TCP, HTTP, and + UDP probe core the server uses, and results come back with the agent's + regular reports carrying per-target source attribution. Statuses show a + "via agent" chip when the latest observation came from a probe. Only the + currently assigned agent's results are accepted, an assigned check never + also runs locally, probes whose reports go stale surface as indeterminate + rather than as a false outage, and a check resumes local execution + automatically if the entitlement lapses. Local availability checks remain + free and unchanged in every edition; only the assignment requires Pulse Pro. +- Host agents surface an identity collapse when two machines share a cloned + `/etc/machine-id`. Repeated hostname and report-IP revisits for one resolved + agent identity raise a conflict warning on the Machines page instead of + letting the two hosts silently overwrite each other. A one-time hostname + rename never revisits and is not flagged, and the conflict clears itself + once only one machine keeps reporting. +- Usage telemetry counts `availability_probe_targets` and + `availability_probe_agents`. Both are counts only, with no agent names, + addresses, or target details, and both are disclosed in `docs/PRIVACY.md`. + +## Changed + +- Approved-action telemetry separates success, pre-dispatch refusal, execution + failure, unverified completion, stuck execution, in-flight work, and + unclassified attempts. +- Pre-dispatch refusals use fixed plan, policy, capability, and other + categories without transmitting action, resource, command, actor, finding, or + evidence content. +- The adoption report defaults to the latest stable release and reports + action-outcome and refusal-category reconciliation gaps. +- The frontend build dependency `postcss` is updated to `8.5.23`, resolving the + source-map path-traversal advisory affecting older build tooling. + +## Fixed + +- Same-name Proxmox clusters at different sites are no longer consolidated + solely because they reuse endpoint addresses. Contradicting captured TLS + certificate fingerprints now veto the merge. +- Cross-instance Proxmox node and agent aggregation uses the same TLS identity + doctrine as connection consolidation, preventing telemetry from one site + attaching to another site's node. +- Adding a second site whose cluster membership has not been detected yet no + longer lets its first-poll nodes merge into an established cluster at another + site. A node that is still unclassified now needs positive same-machine + evidence before it can fold into a named cluster, and Proxmox polling + resolves cluster membership before the first node-state write. This closes a + support case where adding a second site with the same node hostnames took + over the first site's node record and made an existing node look renamed. +- An installer failure after stopping `pulse.service` no longer leaves the + service down or causes every later timer run to be skipped (#1630). +- Installer writes to protected helper, PATH, and symlink locations are + idempotent and non-fatal under the hardened unattended-update unit (#1630). +- TrueNAS websocket setup retries a same-host HTTP-to-HTTPS redirect once while + refusing cross-host redirects and TLS downgrades (#1631). +- Resolved-loop telemetry no longer joins an unrelated Patrol resolution to an + unrelated successful action within the same reporting window. + +## Upgrade Notes + +Use the normal v6 install or update flow for `v6.2.0-rc.1` only when you are +comfortable testing an RC. The rollback target is `v6.1.2`. + +The exact rollback reinstall command is: + +```bash +./scripts/install.sh --version v6.1.2 +``` + +External Probes need the `external_probe` Pulse Pro entitlement on the Pulse +server. The capability ships in the community binary and the entitlement alone +gates the assignment, so no separate build is required. ICMP probes use the +system `ping` binary, so a probe host running in a container or a hardened +service unit needs `CAP_NET_RAW`; prefer TCP or HTTP checks there, or grant the +capability. See `docs/UNIFIED_AGENT.md`. + +The telemetry receiver is backward compatible and was deployed before this +client release. Existing installs continue to report the earlier schema until +they upgrade. + +This server candidate has no mobile compatibility change and does not require a +companion build upload. No public mobile-store rollout is part of this RC. + +Windows Unified Agent binaries in this candidate keep checksum and +detached-signature verification, but they are not yet Authenticode-signed and +Windows may show an unknown-publisher warning. No unsigned-Windows exception +applies to any `v6.2.0` release: the owner-approved exception was bounded to +`v6.1.0`, `v6.1.1`, and `v6.1.2`, and stable `v6.2.0` must publish Windows +agents through the mandatory SignPath Authenticode path. + +Paid Pulse Pro, Relay, and eligible legacy customers should continue to use the +private download page and private runtime image for paid runtime features. diff --git a/docs/releases/V6_CHANGELOG_v6.2.0-rc.1.md b/docs/releases/V6_CHANGELOG_v6.2.0-rc.1.md new file mode 100644 index 000000000..1174e02ca --- /dev/null +++ b/docs/releases/V6_CHANGELOG_v6.2.0-rc.1.md @@ -0,0 +1,77 @@ +# Pulse v6.2.0-rc.1 + +_This changelog describes the changes since stable `v6.1.2`. +`v6.2.0-rc.1` remains a prerelease and rolls back to stable `v6.1.2`._ + +## Added + +- External Probes (Pulse Pro): availability targets carry an optional probe + agent assignment, set through the availability check editor's "Run from" + control and gated by the `external_probe` entitlement at assignment time. +- Assigned targets are delivered to their agent over the signed agent-config + channel, skipped by the local poller, and resume local execution + automatically if the entitlement lapses. +- The unified agent gains an availability module that runs each assigned target + on its own clamped interval through the shared probe core and returns results + in its regular reports through a bounded delivery queue. +- Probe-reported results are accepted only from the currently assigned agent, + share the local failure-threshold accounting, carry source attribution to the + UI, and derive to indeterminate at read time when reports go stale. +- Host-agent identity-collapse detection for cloned `/etc/machine-id`: + hostname and report-IP revisits within the monitoring flap window publish an + active conflict and warn on the Machines page. +- Telemetry counts `availability_probe_targets` and + `availability_probe_agents`, counts only, disclosed in `docs/PRIVACY.md`. + +## Changed + +- Approved-action telemetry now reconciles successes, refusals, execution + failures, unverified outcomes, stuck work, in-flight work, and unclassified + attempts. +- Pre-dispatch refusal counts use stable plan, policy, capability, and other + categories while remaining content-free. +- Finding-resolution telemetry requires exact Patrol finding and investigation + linkage plus independently verified action evidence. +- Adoption reporting targets the latest stable release by default and exposes + outcome-accounting gaps. +- Availability probe execution moved into a shared package so the host agent + and the monitoring poller run the identical ICMP, TCP, HTTP, and UDP core. +- `postcss` build tooling is updated to `8.5.23`. + +## Fixed + +- Same-name Proxmox clusters, nodes, and agents at separate sites remain + isolated when TLS identity evidence contradicts, even when private addresses + overlap. +- Legitimate duplicate Proxmox views can still consolidate when their captured + TLS identities agree. +- Weak-evidence cross-instance folds now require positive same-machine proof + whenever cluster identity is in play, and PVE polling detects cluster + membership before the cycle's node-state commit, closing the first-poll + window where an unclassified node could be folded into another site's + cluster slot. +- Failed unattended updates restart a previously active Pulse service and no + longer abort on non-writable helper or symlink locations (#1630). +- TrueNAS JSON-RPC websocket connections follow safe same-host HTTPS redirects + while rejecting cross-host redirects and downgrades (#1631). +- Resolved-loop telemetry cannot be synthesized from unrelated finding and + action aggregates. + +## Release Metadata + +- Version: `v6.2.0-rc.1` +- Previous stable: `v6.1.2` +- Rollback target: `v6.1.2` +- Rollback command: `./scripts/install.sh --version v6.1.2` +- Promotion path: exact-SHA single-build release candidate from `main`, + published as a support prerelease that does not move stable or latest + install pointers +- Windows signing decision: Authenticode through SignPath is the mandatory + signing backend and no unsigned-Windows exception applies to any `v6.2.0` + release; this candidate publishes Windows agents under the standing + prerelease path with exact-SHA, checksum, and detached-signature + verification +- Mobile decision: `no-mobile-impact`; no companion build upload or public + store rollout is part of this candidate +- Entitlement rollout: the license-server entitlement catalog carrying + `external_probe` was deployed on 2026-07-27, before this cut diff --git a/scripts/install-docker.sh b/scripts/install-docker.sh index 7201ea463..952ebdc74 100755 --- a/scripts/install-docker.sh +++ b/scripts/install-docker.sh @@ -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.1.2" +CANONICAL_DEFAULT_PULSE_VERSION="6.2.0-rc.1" resolve_default_pulse_version() { if [ -n "${PULSE_IMAGE_VERSION:-}" ]; then diff --git a/scripts/installtests/build_release_assets_test.go b/scripts/installtests/build_release_assets_test.go index 699540a47..21de086ba 100644 --- a/scripts/installtests/build_release_assets_test.go +++ b/scripts/installtests/build_release_assets_test.go @@ -406,53 +406,55 @@ func TestCurrentSupportPrereleasePacketTracksInstallMetadata(t *testing.T) { "`v"+version+"` is a release candidate", "## Highlights", "stable `v"+previous+"`", - "supersedes `v6.1.0-rc.4`", - "distinguishes real Unified Agents from machines observed through an integration", - "Agent Doctor is now a dedicated routed page with status filters", - "copyable diagnostic reports", - "host-local cleanup handoffs for removed agents", - "operator-supplied and physical interface addresses", - "SAS transport and SCSI SMART attributes", - "Metrics reads no longer queue behind unrelated writes", - "retained audit data is reclaimed incrementally", - "`--report-ip` can set the reported host address", - "ESXi hosts appear as members of their owning vCenter connection", - "Workload guest metadata follows the canonical metadata event", - "Pro updates request their explicit update channel", - "Integration-monitored machines no longer appear as fabricated agent rows", - "Removed-agent diagnostics retain the last-known platform", - "correct host-local uninstall command", - "Post-update What's New highlights open in a readable dialog", - "leaving the dashboard unobstructed", - "Manual agent update commands remain available", - "action origins retain the proposal evidence", + "External Probes (Pulse Pro)", + "run from a connected Pulse agent outside the monitored site", + "assigned to a connected Pulse agent through the new **Run from** control", + "travel over the signed agent configuration channel", + "per-target source attribution", + "Only the currently assigned agent's results are accepted", + "an assigned check never also runs locally", + "surface as indeterminate", + "resumes local execution automatically if the entitlement lapses", + "Local availability checks remain free and unchanged in every edition", + "cloned `/etc/machine-id`", + "`availability_probe_targets`", + "`availability_probe_agents`", + "disclosed in `docs/PRIVACY.md`", + "Contradicting captured TLS certificate fingerprints now veto the merge", + "same TLS identity doctrine as connection consolidation", + "positive same-machine evidence before it can fold into a named cluster", + "no longer leaves the service down", + "same-host HTTP-to-HTTPS redirect", + "`CAP_NET_RAW`", "no mobile compatibility change", "No public mobile-store rollout", "not yet Authenticode-signed", + "No unsigned-Windows exception applies to any `v6.2.0` release", "rollback target is `v"+previous+"`", ) assertFileContainsAllNormalized(t, changelogPath, "Version: `v"+version+"`", + "Previous stable: `v"+previous+"`", "Rollback target: `v"+previous+"`", - "Previous candidate: `v6.1.0-rc.4`", "Promotion path: exact-SHA single-build release candidate from `main`", - "Unified Agent `--report-ip` propagation", - "SAS transport detection and SCSI SMART attribute parsing", - "Routed Agent Doctor page with status filters and copyable diagnostic reports", - "Canonical SignPath request", - "Physical interface addresses lead virtual bridge addresses", - "Integration-observed machines are modeled separately from real agents", - "Removed-agent records retain their last-known platform", - "platform-correct local uninstall guidance", - "Post-update What's New highlights use the shared dialog", - "release gating and dismissal persistence are unchanged", - "ESXi hosts group under their owning vCenter connection", - "Metrics reads can proceed concurrently with writes", - "Audit retention uses incremental vacuum", - "Patrol assessment lookup recovers active findings", - "Patrol action origins retain proposal evidence", + "External Probes (Pulse Pro)", + "gated by the `external_probe` entitlement at assignment time", + "delivered to their agent over the signed agent-config channel", + "skipped by the local poller", + "accepted only from the currently assigned agent", + "derive to indeterminate at read time when reports go stale", + "Host-agent identity-collapse detection for cloned `/etc/machine-id`", + "Telemetry counts `availability_probe_targets` and `availability_probe_agents`", + "Availability probe execution moved into a shared package", + "`postcss` build tooling is updated to `8.5.23`", + "remain isolated when TLS identity evidence contradicts", + "closing the first-poll window where an unclassified node could be folded into another site's cluster slot", + "Failed unattended updates restart a previously active Pulse service", + "follow safe same-host HTTPS redirects", + "Windows signing decision: Authenticode through SignPath is the mandatory signing backend", "Mobile decision: `no-mobile-impact`", "no companion build upload or public store rollout", + "the license-server entitlement catalog carrying `external_probe` was deployed on 2026-07-27, before this cut", ) assertFileContainsAll(t, repoFile("docs", "RELEASE_NOTES.md"), "docs/releases/RELEASE_NOTES_v"+version+".md", @@ -485,7 +487,7 @@ func TestCurrentSupportPrereleasePacketTracksInstallMetadata(t *testing.T) { "The active support prerelease `v"+version+"` 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 `"+version+"` release version.", "This support prerelease keeps `rollback_version=v"+previous+"`, publishes a versioned public GitHub prerelease plus versioned Docker and Helm artifacts, and does not move stable/latest install pointers or stable semver aliases.", "For the active support prerelease `v"+version+"` cut, the repo-root compose default and `scripts/install-docker.sh` fallback must both pin `"+version+"` until the next governed stable cut moves them forward.", - "The rc.5 server cut is classified `no-mobile-impact`; no companion build upload is part of this cut. The existing mobile candidate programme remains separate, and the release packet must not describe a public store rollout.", + "The `v"+version+"` server cut is classified `no-mobile-impact`; no companion build upload is part of this cut. The existing mobile candidate programme remains separate, and the release packet must not describe a public store rollout.", ) } diff --git a/scripts/installtests/install_docker_sh_test.go b/scripts/installtests/install_docker_sh_test.go index 06112ab8d..42b322be6 100644 --- a/scripts/installtests/install_docker_sh_test.go +++ b/scripts/installtests/install_docker_sh_test.go @@ -128,7 +128,7 @@ func TestPreviousStableForPrereleaseVersionCrossesMinorBoundaries(t *testing.T) want string }{ {version: "6.0.5-rc.4", want: "6.0.4"}, - {version: "6.1.0-rc.5", want: "6.0.5"}, + {version: "6.2.0-rc.1", want: "6.1.2"}, } for _, test := range tests { @@ -336,8 +336,9 @@ func TestInstallDockerProofTracksSupportPrereleaseContract(t *testing.T) { assertFileContainsAllNormalized(t, repoFile("docs", "release-control", "v6", "internal", "subsystems", "deployment-installability.md"), "The active support prerelease `v"+version+"` 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 `"+version+"` release version.", "This support prerelease keeps `rollback_version=v"+previous+"`, 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 expanded Pulse Intelligence action and verification lifecycle, the operator-facing Actions inbox, monitor-first product workflows, governed host and storage operations, native-agent update safety, Windows logged-readiness and recovery proof, OIDC callback recovery, and fail-closed security hardening behind RC validation", - "The rc.5 server cut is classified `no-mobile-impact`; no companion build upload is part of this cut. The existing mobile candidate programme remains separate, and the release packet must not describe a public store rollout.", + "introduces the Pulse Pro External Probes feature that runs assigned availability checks from a connected agent outside the monitored site, completes the multi-site Proxmox identity-isolation trilogy across connection consolidation, same-name node aggregation, and the first-poll unclassified-node window, adds host-agent identity-collapse detection for cloned machine-ids, restores service availability after a failed unattended update, follows same-host TrueNAS handshake redirects, and makes Pulse Intelligence outcome telemetry verified and complete", + "The `v"+version+"` server cut is classified `no-mobile-impact`; no companion build upload is part of this cut. The existing mobile candidate programme remains separate, and the release packet must not describe a public store rollout.", + "Authenticode signing through SignPath is the canonical Windows signing backend for the `v6.2.0` line.", "For the active support prerelease `v"+version+"` cut, the repo-root compose default and `scripts/install-docker.sh` fallback must both pin `"+version+"` until the next governed stable cut moves them forward.", ) }