Prepare v6.2.0-rc.1 release

First candidate on the v6.2.0 line, following stable v6.1.2. Carries
the External Probes Pro feature, the three-part multi-site Proxmox
identity isolation work, cloned machine-id collapse detection,
unattended-update service recovery, the TrueNAS same-host redirect
follow, and verified telemetry outcomes. Version pins move to
6.2.0-rc.1 across the repo root, Docker bootstrap defaults, and Helm
metadata per the deployment-installability contract; stable install
pointers remain on v6.1.2 until governed promotion.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
courtmanr@gmail.com
2026-07-27 14:08:29 +01:00
parent c654eb702d
commit f45c08902e
13 changed files with 306 additions and 51 deletions
+1 -1
View File
@@ -1 +1 @@
6.1.2
6.2.0-rc.1
+4 -4
View File
@@ -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: |
+1 -1
View File
@@ -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.
+1 -1
View File
@@ -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:
+4
View File
@@ -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`
+5
View File
@@ -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`
+15 -1
View File
@@ -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": [
@@ -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
+119
View File
@@ -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.
+77
View File
@@ -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
+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.1.2"
CANONICAL_DEFAULT_PULSE_VERSION="6.2.0-rc.1"
resolve_default_pulse_version() {
if [ -n "${PULSE_IMAGE_VERSION:-}" ]; then
@@ -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.",
)
}
@@ -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.",
)
}