diff --git a/VERSION b/VERSION index 4cd3b64a3..fc63ac870 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -6.2.2-rc.3 +6.3.0-rc.1 diff --git a/deploy/helm/pulse/Chart.yaml b/deploy/helm/pulse/Chart.yaml index cd053959d..d4065cb2b 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, Kubernetes, or OpenShift monitoring agent. type: application -version: 6.2.2-rc.3 -appVersion: "6.2.2-rc.3" -icon: https://raw.githubusercontent.com/rcourtman/Pulse/v6.2.2-rc.3/docs/images/pulse-logo.svg +version: 6.3.0-rc.1 +appVersion: "6.3.0-rc.1" +icon: https://raw.githubusercontent.com/rcourtman/Pulse/v6.3.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.2.2-rc.3/docs/KUBERNETES.md + url: https://github.com/rcourtman/Pulse/blob/v6.3.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 f3752a59a..6ab463c8a 100644 --- a/deploy/helm/pulse/README.md +++ b/deploy/helm/pulse/README.md @@ -1,6 +1,6 @@ # pulse -![Version: 6.2.2-rc.3](https://img.shields.io/badge/Version-6.2.2--rc.3-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: 6.2.2-rc.3](https://img.shields.io/badge/AppVersion-6.2.2--rc.3-informational?style=flat-square) +![Version: 6.3.0-rc.1](https://img.shields.io/badge/Version-6.3.0--rc.1-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: 6.3.0-rc.1](https://img.shields.io/badge/AppVersion-6.3.0--rc.1-informational?style=flat-square) Helm chart for deploying the Pulse hub and optional Docker, Kubernetes, or OpenShift monitoring agent. diff --git a/docker-compose.yml b/docker-compose.yml index 54743a2ae..24d28ed1f 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -2,7 +2,7 @@ version: '3.8' services: pulse: - image: ${PULSE_IMAGE:-rcourtman/pulse:6.2.2-rc.3} + image: ${PULSE_IMAGE:-rcourtman/pulse:6.3.0-rc.1} container_name: pulse restart: unless-stopped logging: diff --git a/docs/RELEASE_NOTES.md b/docs/RELEASE_NOTES.md index c64a58ce9..327cb4cb5 100644 --- a/docs/RELEASE_NOTES.md +++ b/docs/RELEASE_NOTES.md @@ -6,9 +6,9 @@ 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.2-rc.3.md` -- `docs/releases/V6_CHANGELOG_v6.2.2-rc.3.md` +For the current v6 release candidate packet, see: +- `docs/releases/RELEASE_NOTES_v6.3.0-rc.1.md` +- `docs/releases/V6_CHANGELOG_v6.3.0-rc.1.md` For the current stable v6 packet, see: - `docs/releases/RELEASE_NOTES_v6.2.1.md` diff --git a/docs/UPGRADE_v6.md b/docs/UPGRADE_v6.md index b35c56e49..1f6052e66 100644 --- a/docs/UPGRADE_v6.md +++ b/docs/UPGRADE_v6.md @@ -2,10 +2,10 @@ This guide covers practical upgrade steps for existing Pulse installs moving to v6. -For the current v6 support release candidate packet, see: +For the current v6 release candidate packet, see: -- `docs/releases/RELEASE_NOTES_v6.2.2-rc.3.md` -- `docs/releases/V6_CHANGELOG_v6.2.2-rc.3.md` +- `docs/releases/RELEASE_NOTES_v6.3.0-rc.1.md` +- `docs/releases/V6_CHANGELOG_v6.3.0-rc.1.md` For the current stable v6 packet, see: diff --git a/docs/release-control/v6/internal/subsystems/deployment-installability.md b/docs/release-control/v6/internal/subsystems/deployment-installability.md index 4b1e26961..30e9db67c 100644 --- a/docs/release-control/v6/internal/subsystems/deployment-installability.md +++ b/docs/release-control/v6/internal/subsystems/deployment-installability.md @@ -1447,25 +1447,25 @@ 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 support prerelease `v6.2.2-rc.3` cut sets the repo-root `VERSION`, +The active prerelease `v6.3.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.2-rc.3` release -version. It follows stable `v6.2.1`, supersedes `v6.2.2-rc.2`, uses +fallback, and Helm chart release metadata to the same `6.3.0-rc.1` release +version. It follows stable `v6.2.1`, opens the 6.3 candidate line, uses `rollback_version=v6.2.1`, and keeps stable/latest pointers on `v6.2.1`. This -candidate retains the complete earlier packet and adds durable scoped Patrol +candidate establishes the new minor-release packet with durable scoped Patrol objectives, validated read-only observers, verified work receipts, agent action preflight with stable refusal codes, large-estate response improvements, and monitoring correctness fixes. Subscription-backed Patrol turns also bound command cleanup after an idle deadline so descendant-held output pipes cannot -extend the caller-owned stall budget. The changes since `v6.2.2-rc.2` do not require a +extend the caller-owned stall budget. The changes since `v6.2.1` 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 prerelease Windows path retains exact-SHA, checksum, and detached-signature -verification without Authenticode; stable `v6.2.2` restores mandatory SignPath +verification without Authenticode; stable `v6.3.0` restores mandatory SignPath signing unless a new version-bound decision is recorded. -This support prerelease keeps `rollback_version=v6.2.1`, publishes a versioned +This prerelease keeps `rollback_version=v6.2.1`, publishes a versioned public GitHub prerelease plus versioned Docker and Helm artifacts, and does not move stable/latest install pointers or stable semver aliases. @@ -1738,8 +1738,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 support prerelease `v6.2.2-rc.3` cut, the repo-root compose -default and `scripts/install-docker.sh` fallback must both pin `6.2.2-rc.3` +For the active prerelease `v6.3.0-rc.1` cut, the repo-root compose default and +`scripts/install-docker.sh` fallback must both pin `6.3.0-rc.1` 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 diff --git a/docs/releases/RELEASE_NOTES_v6.2.2-rc.3.md b/docs/releases/RELEASE_NOTES_v6.3.0-rc.1.md similarity index 88% rename from docs/releases/RELEASE_NOTES_v6.2.2-rc.3.md rename to docs/releases/RELEASE_NOTES_v6.3.0-rc.1.md index 24a3b61ef..6983c50d2 100644 --- a/docs/releases/RELEASE_NOTES_v6.2.2-rc.3.md +++ b/docs/releases/RELEASE_NOTES_v6.3.0-rc.1.md @@ -1,10 +1,9 @@ -# Pulse v6.2.2-rc.3 Release Notes +# Pulse v6.3.0-rc.1 Release Notes -`v6.2.2-rc.3` is a release candidate for the next Pulse v6 patch. It follows -stable `v6.2.1` and supersedes `v6.2.2-rc.2`. This candidate includes the -complete earlier packet and introduces the Patrol v2 operating model, guarded -agent action preflight, large-estate response improvements, and monitoring -correctness fixes. +`v6.3.0-rc.1` is a release candidate for the next Pulse v6 minor release and +the first candidate in the 6.3 line. It follows stable `v6.2.1` and introduces +the Patrol v2 operating model, guarded agent action preflight, large-estate +response improvements, and monitoring correctness fixes. ## Highlights @@ -73,7 +72,7 @@ correctness fixes. ## Upgrade Notes -Use the normal v6 install or update flow for `v6.2.2-rc.3` only when you are +Use the normal v6 install or update flow for `v6.3.0-rc.1` only when you are comfortable testing a release candidate. The rollback target is `v6.2.1`. The exact rollback reinstall command is: @@ -82,14 +81,14 @@ The exact rollback reinstall command is: ./scripts/install.sh --version v6.2.1 ``` -The changes since `v6.2.2-rc.2` do not require a Pulse Mobile client change and +The changes since `v6.2.1` do not require a Pulse Mobile client change and preserve the existing mobile, Relay, onboarding, and mobile-facing API contracts. No companion mobile build upload or public mobile-store rollout is part of this candidate. Windows Unified Agent binaries in this prerelease retain exact-SHA, checksum, and detached-signature verification but are not Authenticode-signed, so Windows -may display an Unknown Publisher warning. Stable `v6.2.2` still requires the +may display an Unknown Publisher warning. Stable `v6.3.0` still requires the normal SignPath Authenticode lane unless a separate version-bound owner decision is recorded. diff --git a/docs/releases/V6_CHANGELOG_v6.2.2-rc.3.md b/docs/releases/V6_CHANGELOG_v6.3.0-rc.1.md similarity index 88% rename from docs/releases/V6_CHANGELOG_v6.2.2-rc.3.md rename to docs/releases/V6_CHANGELOG_v6.3.0-rc.1.md index fec52469d..93eda24c5 100644 --- a/docs/releases/V6_CHANGELOG_v6.2.2-rc.3.md +++ b/docs/releases/V6_CHANGELOG_v6.3.0-rc.1.md @@ -1,7 +1,7 @@ -# Pulse v6.2.2-rc.3 +# Pulse v6.3.0-rc.1 -_This changelog describes the changes since `v6.2.2-rc.2`. -`v6.2.2-rc.3` remains a prerelease and rolls back to stable `v6.2.1`._ +_This changelog describes the changes since `v6.2.1`. +`v6.3.0-rc.1` is a prerelease and rolls back to stable `v6.2.1`._ ## Added @@ -50,8 +50,8 @@ _This changelog describes the changes since `v6.2.2-rc.2`. ## Release Metadata -- Version: `v6.2.2-rc.3` -- Previous candidate: `v6.2.2-rc.2` +- Version: `v6.3.0-rc.1` +- Previous release: `v6.2.1` - Previous stable: `v6.2.1` - Rollback target: `v6.2.1` - Rollback command: `./scripts/install.sh --version v6.2.1` @@ -59,7 +59,7 @@ _This changelog describes the changes since `v6.2.2-rc.2`. published as a support prerelease without moving stable or latest pointers - Windows signing decision: the standing prerelease path publishes exact-SHA, checksum, and detached-signature verified Windows agents without - Authenticode; stable `v6.2.2` restores mandatory SignPath signing -- Mobile decision: `no-mobile-impact`; changes since `v6.2.2-rc.2` preserve the + Authenticode; stable `v6.3.0` restores mandatory SignPath signing +- Mobile decision: `no-mobile-impact`; changes since `v6.2.1` preserve the existing mobile, Relay, onboarding, and mobile-facing API contracts, and no companion upload or public store rollout is required diff --git a/frontend-modern/public/docs/UPGRADE_v6.md b/frontend-modern/public/docs/UPGRADE_v6.md index b35c56e49..1f6052e66 100644 --- a/frontend-modern/public/docs/UPGRADE_v6.md +++ b/frontend-modern/public/docs/UPGRADE_v6.md @@ -2,10 +2,10 @@ This guide covers practical upgrade steps for existing Pulse installs moving to v6. -For the current v6 support release candidate packet, see: +For the current v6 release candidate packet, see: -- `docs/releases/RELEASE_NOTES_v6.2.2-rc.3.md` -- `docs/releases/V6_CHANGELOG_v6.2.2-rc.3.md` +- `docs/releases/RELEASE_NOTES_v6.3.0-rc.1.md` +- `docs/releases/V6_CHANGELOG_v6.3.0-rc.1.md` For the current stable v6 packet, see: diff --git a/scripts/install-docker.sh b/scripts/install-docker.sh index 9e4edf8fe..8479563a4 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.2.2-rc.3" +CANONICAL_DEFAULT_PULSE_VERSION="6.3.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 43058cb01..e48cea9c0 100644 --- a/scripts/installtests/build_release_assets_test.go +++ b/scripts/installtests/build_release_assets_test.go @@ -628,7 +628,7 @@ func TestCurrentStableMinorReleasePacketTracksInstallMetadata(t *testing.T) { ) } -func TestCurrentSupportPrereleasePacketTracksInstallMetadata(t *testing.T) { +func TestCurrentPrereleasePacketTracksInstallMetadata(t *testing.T) { version := currentReleaseVersion(t) if !isPrereleaseVersion(version) { t.Skip("current release is stable") @@ -641,9 +641,9 @@ func TestCurrentSupportPrereleasePacketTracksInstallMetadata(t *testing.T) { if !ok { t.Fatalf("current prerelease %q has no stable target", version) } - previousCandidate, ok := previousPrereleaseVersion(version) + comparisonVersion, ok := previousPrereleaseVersion(version) if !ok { - t.Fatalf("current support prerelease %q has no previous candidate", version) + comparisonVersion = previous } releaseNotesPath := repoFile("docs", "releases", "RELEASE_NOTES_v"+version+".md") @@ -658,7 +658,7 @@ func TestCurrentSupportPrereleasePacketTracksInstallMetadata(t *testing.T) { "Action refusal telemetry now classifies target changes, prerequisites, contract failures", "Subscription-backed turns now complete their idle timeout promptly", "The rollback target is `v"+previous+"`", - "The changes since `v"+previousCandidate+"` do not require a Pulse Mobile client change", + "The changes since `v"+comparisonVersion+"` do not require a Pulse Mobile client change", "preserve the existing mobile, Relay, onboarding, and mobile-facing API contracts", "Windows Unified Agent binaries in this prerelease retain exact-SHA, checksum, and detached-signature verification but are not Authenticode-signed", "Stable `v"+stableTarget+"` still requires the normal SignPath Authenticode lane", @@ -669,24 +669,24 @@ func TestCurrentSupportPrereleasePacketTracksInstallMetadata(t *testing.T) { "Previous stable: `v"+previous+"`", "Rollback target: `v"+previous+"`", "Promotion path: exact-SHA single-build release candidate from `main`", - "This changelog describes the changes since `v"+previousCandidate+"`", + "This changelog describes the changes since `v"+comparisonVersion+"`", "Durable, scoped Patrol objectives and validated read-only observer missions", "Typed Unified Agent action preflight for supported host and Docker operations", "Stable pre-mutation refusal codes and fleet telemetry buckets", "Windows signing decision: the standing prerelease path publishes exact-SHA, checksum, and detached-signature verified Windows agents without Authenticode; stable `v"+stableTarget+"` restores mandatory SignPath signing", "Mobile decision: `no-mobile-impact`", - "changes since `v"+previousCandidate+"` preserve the existing mobile, Relay, onboarding, and mobile-facing API contracts", + "changes since `v"+comparisonVersion+"` preserve the existing mobile, Relay, onboarding, and mobile-facing API contracts", "no companion upload or public store rollout is required", ) assertFileContainsAll(t, repoFile("docs", "RELEASE_NOTES.md"), "docs/releases/RELEASE_NOTES_v"+version+".md", "docs/releases/V6_CHANGELOG_v"+version+".md", - "current v6 support release candidate packet", + "current v6 release candidate packet", ) assertFileContainsAll(t, repoFile("docs", "UPGRADE_v6.md"), "docs/releases/RELEASE_NOTES_v"+version+".md", "docs/releases/V6_CHANGELOG_v"+version+".md", - "current v6 support release candidate packet", + "current v6 release candidate packet", ) assertFileContainsAll(t, repoFile("deploy", "helm", "pulse", "Chart.yaml"), "version: "+version, @@ -706,10 +706,10 @@ func TestCurrentSupportPrereleasePacketTracksInstallMetadata(t *testing.T) { `CANONICAL_DEFAULT_PULSE_VERSION="`+version+`"`, ) 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.", - "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 changes since `v"+previousCandidate+"` 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 active 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 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 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 changes since `v"+comparisonVersion+"` 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 prerelease Windows path retains exact-SHA, checksum, and detached-signature verification without Authenticode; stable `v"+stableTarget+"` restores mandatory SignPath signing unless a new version-bound decision is recorded.", ) } diff --git a/scripts/installtests/install_docker_sh_test.go b/scripts/installtests/install_docker_sh_test.go index 9099b1ee5..20c5e09d1 100644 --- a/scripts/installtests/install_docker_sh_test.go +++ b/scripts/installtests/install_docker_sh_test.go @@ -139,6 +139,7 @@ func TestPreviousStableForPrereleaseVersionCrossesMinorBoundaries(t *testing.T) {version: "6.2.2-rc.1", want: "6.2.1"}, {version: "6.2.2-rc.2", want: "6.2.1"}, {version: "6.2.2-rc.3", want: "6.2.1"}, + {version: "6.3.0-rc.1", want: "6.2.1"}, } for _, test := range tests { @@ -336,7 +337,7 @@ func TestInstallDockerProofTracksStableMinorContract(t *testing.T) { ) } -func TestInstallDockerProofTracksSupportPrereleaseContract(t *testing.T) { +func TestInstallDockerProofTracksPrereleaseContract(t *testing.T) { version := currentReleaseVersion(t) if !isPrereleaseVersion(version) { t.Skip("current release is stable") @@ -349,17 +350,17 @@ func TestInstallDockerProofTracksSupportPrereleaseContract(t *testing.T) { if !ok { t.Fatalf("current prerelease %q has no stable target", version) } - previousCandidate, ok := previousPrereleaseVersion(version) + comparisonVersion, ok := previousPrereleaseVersion(version) if !ok { - t.Fatalf("current support prerelease %q has no previous candidate", version) + comparisonVersion = previous } 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 changes since `v"+previousCandidate+"` 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 active 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 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 changes since `v"+comparisonVersion+"` 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 prerelease Windows path retains exact-SHA, checksum, and detached-signature verification without Authenticode; stable `v"+stableTarget+"` restores mandatory SignPath signing unless a new version-bound decision is recorded.", - "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.", + "For the active 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.", ) }