diff --git a/VERSION b/VERSION index 37b1bc850..ee41a7ee6 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -6.2.0-rc.10 +6.2.0-rc.11 diff --git a/deploy/helm/pulse/Chart.yaml b/deploy/helm/pulse/Chart.yaml index 79f97d1ce..cbeff878e 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.0-rc.10 -appVersion: "6.2.0-rc.10" -icon: https://raw.githubusercontent.com/rcourtman/Pulse/v6.2.0-rc.10/docs/images/pulse-logo.svg +version: 6.2.0-rc.11 +appVersion: "6.2.0-rc.11" +icon: https://raw.githubusercontent.com/rcourtman/Pulse/v6.2.0-rc.11/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.0-rc.10/docs/KUBERNETES.md + url: https://github.com/rcourtman/Pulse/blob/v6.2.0-rc.11/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 f5deda7e6..dfff9e746 100644 --- a/deploy/helm/pulse/README.md +++ b/deploy/helm/pulse/README.md @@ -1,6 +1,6 @@ # pulse -![Version: 6.2.0-rc.10](https://img.shields.io/badge/Version-6.2.0--rc.10-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: 6.2.0-rc.10](https://img.shields.io/badge/AppVersion-6.2.0--rc.10-informational?style=flat-square) +![Version: 6.2.0-rc.11](https://img.shields.io/badge/Version-6.2.0--rc.11-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: 6.2.0-rc.11](https://img.shields.io/badge/AppVersion-6.2.0--rc.11-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 27c22c44d..d43c5d0b0 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.0-rc.10} + image: ${PULSE_IMAGE:-rcourtman/pulse:6.2.0-rc.11} container_name: pulse restart: unless-stopped logging: diff --git a/docs/RELEASE_NOTES.md b/docs/RELEASE_NOTES.md index 7d7bc61a8..d19bbaa78 100644 --- a/docs/RELEASE_NOTES.md +++ b/docs/RELEASE_NOTES.md @@ -7,10 +7,12 @@ 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.10.md` -- `docs/releases/V6_CHANGELOG_v6.2.0-rc.10.md` +- `docs/releases/RELEASE_NOTES_v6.2.0-rc.11.md` +- `docs/releases/V6_CHANGELOG_v6.2.0-rc.11.md` For historical v6.2 support release candidate packets, see: +- `docs/releases/RELEASE_NOTES_v6.2.0-rc.10.md` +- `docs/releases/V6_CHANGELOG_v6.2.0-rc.10.md` - `docs/releases/RELEASE_NOTES_v6.2.0-rc.9.md` - `docs/releases/V6_CHANGELOG_v6.2.0-rc.9.md` - `docs/releases/RELEASE_NOTES_v6.2.0-rc.8.md` diff --git a/docs/UPGRADE_v6.md b/docs/UPGRADE_v6.md index 9ca00a3d4..77c67d52a 100644 --- a/docs/UPGRADE_v6.md +++ b/docs/UPGRADE_v6.md @@ -4,11 +4,13 @@ This guide covers practical upgrade steps for existing Pulse installs moving to For the current v6 support release candidate packet, see: -- `docs/releases/RELEASE_NOTES_v6.2.0-rc.10.md` -- `docs/releases/V6_CHANGELOG_v6.2.0-rc.10.md` +- `docs/releases/RELEASE_NOTES_v6.2.0-rc.11.md` +- `docs/releases/V6_CHANGELOG_v6.2.0-rc.11.md` For historical v6.2 support release candidate packets, see: +- `docs/releases/RELEASE_NOTES_v6.2.0-rc.10.md` +- `docs/releases/V6_CHANGELOG_v6.2.0-rc.10.md` - `docs/releases/RELEASE_NOTES_v6.2.0-rc.9.md` - `docs/releases/V6_CHANGELOG_v6.2.0-rc.9.md` - `docs/releases/RELEASE_NOTES_v6.2.0-rc.8.md` diff --git a/docs/release-control/v6/internal/subsystems/deployment-installability.md b/docs/release-control/v6/internal/subsystems/deployment-installability.md index a8995408c..205c48a9b 100644 --- a/docs/release-control/v6/internal/subsystems/deployment-installability.md +++ b/docs/release-control/v6/internal/subsystems/deployment-installability.md @@ -1338,23 +1338,25 @@ 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.10` cut sets the repo-root `VERSION`, +The active support prerelease `v6.2.0-rc.11` 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.10` release +fallback, and Helm chart release metadata to the same `6.2.0-rc.11` 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 tenth -`v6.2.0` candidate is a security-boundary, role-correct access, live-state -recovery, and release-operations cut that supersedes `v6.2.0-rc.9`: it validates +continues to govern the stable line until this candidate is promoted. The +eleventh `v6.2.0` candidate is a security-boundary, role-correct access, +live-state recovery, and release-operations cut that supersedes +`v6.2.0-rc.9`: it validates request-derived origins, verifies legacy-cleanup SSH hosts, aligns Settings and resource reads with session authority, recovers oversized WebSocket state, converges agent and PBS lifecycle behavior, restores the deliberate self-hosted -commercial opt-in posture, and closes the historical credential-containment -gate. The exact `main` SHA must pass the integrated release checks and -immutable-candidate build before the single-build workflow crosses its public -mutation boundary. +commercial opt-in posture, closes the historical credential-containment gate, +and retries GET when Proxmox reports HTTP 405 or 501 for unsupported HEAD +availability probes. The exact `main` SHA must pass the integrated release +checks and immutable-candidate build before the single-build workflow crosses +its public mutation boundary. Every release cut, including a prerelease, now gates that mutation boundary on the complete frontend unit suite, frontend type-checking, and a deterministic render smoke against the verified frontend bundle. The smoke must render @@ -1365,13 +1367,22 @@ 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 `v6.2.0-rc.10` server cut is classified +The `v6.2.0-rc.11` server cut is classified `existing-mobile-build-compatible`. The synchronized Pulse Mobile 1.0.0 iOS build 12 and Android versionCode 9 candidates, both using runtime version 2, remain distributed to the existing beta cohort through TestFlight and Play open testing. The changes since RC9 preserve the checked-in mobile API, Relay, pairing, approval, push, authentication, and onboarding contracts; no additional -companion upload or public store rollout is part of RC10. +companion upload or public store rollout is part of RC11. +The preceding `v6.2.0-rc.10` attempt used the same support-prerelease path with +`rollback_version=v6.1.2`, but it is an abandoned partial candidate rather than +the current public-testing identity. Run `31267947317` staged its annotated tag, +unpublished draft and exact-version release assets, public Docker images, public +OCI Helm chart, and private Pro runtime from +`76e07be290892ed8453bbed942855c1e7f673232` before install smoke failed. Because +those immutable-looking versioned artifacts escaped the draft boundary, RC10 +must not be retargeted to another source revision; RC11 provides the clean +successor identity while the RC10 evidence remains available for audit. The preceding `v6.2.0-rc.9` candidate used the same support-prerelease path with `rollback_version=v6.1.2` and pinned the same four install surfaces to `6.2.0-rc.9`. It is superseded by this cut and no longer governs the install @@ -1567,22 +1578,22 @@ 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.0-rc.10` cut, the repo-root compose -default and `scripts/install-docker.sh` fallback must both pin `6.2.0-rc.10` +For the active support prerelease `v6.2.0-rc.11` cut, the repo-root compose +default and `scripts/install-docker.sh` fallback must both pin `6.2.0-rc.11` 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. Each new candidate on the `v6.2.0` line moves these two pins together with the repo-root `VERSION` and the Helm chart metadata in the same commit; a candidate that leaves any of the four on a superseded `6.2.0-rc.*` value is a release-packet blocker. -The RC10 packet records `5ff0855882cdbcfc9d4c8f8d87a1ffa3972db818` as -the code-backed validation-risk head. That head covers 61 commits and 226 files +The RC11 packet records `2018aa8a9a965d693982e260f525f6cc4f49aa41` as +the code-backed validation-risk head. That head covers 68 commits and 241 files since RC9 across request-origin and SSH trust, settings RBAC and responsive layout, WebSocket recovery and resource deltas, agent and PBS lifecycle, -commercial-surface rollback, release-control hardening, and customer artifact -promotion. The credential-containment record and metadata-only -release-preparation commits may be the workflow dispatch head because they do -not change that code-backed release-risk range. +commercial-surface rollback, Proxmox availability fallback, release-control +hardening, and customer artifact promotion. The monitoring-contract correction +and metadata-only release-preparation commits may be the workflow dispatch head +because they do not change that code-backed release-risk range. `internal/updates/` is the live deployment and upgrade planner. It owns deployment-type detection, update-plan generation, adapter selection, server diff --git a/docs/releases/RELEASE_NOTES_v6.2.0-rc.11.md b/docs/releases/RELEASE_NOTES_v6.2.0-rc.11.md new file mode 100644 index 000000000..dedb43378 --- /dev/null +++ b/docs/releases/RELEASE_NOTES_v6.2.0-rc.11.md @@ -0,0 +1,90 @@ +# Pulse v6.2.0-rc.11 Release Notes + +`v6.2.0-rc.11` is a release candidate for the next Pulse v6 minor line. It +follows stable `v6.1.2`, replaces the abandoned partial `v6.2.0-rc.10` +candidate, and supersedes `v6.2.0-rc.9` for public prerelease testing. This +candidate focuses on security boundaries, role-correct settings and resource +access, resilient live state recovery, accurate Proxmox availability, and safer +release operations. + +## Highlights + +- Security hardening blocks untrusted installer, diagnostic, sign-in, and SSH cleanup origins. +- Role-correct Settings and resilient recovery keep viewer access and live resource state coherent. +- Proxmox availability retries GET when a server rejects HEAD with HTTP 405 or 501. + +## Fixed + +- Rejected hostile request-host, forwarded-host, and configured-public-URL + values before they can enter copied installer commands, hosted diagnostics, + or magic-link responses. +- Hid administrator-only System and infrastructure settings from viewer + sessions, stopped viewer polling of privileged endpoints, and kept + viewer-safe workload health available without offering inaccessible routes. +- Recovered from WebSocket frames above the inbound guard without accepting an + oversized baseline, and applied subsequent resource deltas to canonical raw + server state. +- Prevented update-status polling outside the routes that own update authority + and reduced routine authorization-denial log noise without weakening abuse + signals. +- Stopped repeated PBS node-name fetches, corrected retry classification, and + preserved configured alert intent for agents merged with Proxmox nodes. +- Retried HTTP and HTTPS availability probes with GET when a target reports + that HEAD is unsupported through HTTP 405 or 501, while retaining failures + for other server errors. +- Corrected responsive Settings panel clipping and restored architecture tests + that keep desktop, tablet, and phone navigation coherent. +- Restored authenticated draft-asset access for release install smoke and gave + the Windows TLS fixture a bounded setup window on cold hosted runners. +- Restored release staging before publication, exact-version paid-customer + promotion order, verifiable MSP evaluation delivery, and dependency-audit + enforcement for the shipped frontend. + +## Release Qualification + +- The v6 control plane reports all 44 readiness assertions and all 26 release + gates passed, including complete provider closure and replacement or + retirement evidence for every historically reachable credential identity. +- The post-RC9 code-backed validation-risk range contains 68 commits across 241 + files and ends at `2018aa8a9a965d693982e260f525f6cc4f49aa41`; the monitoring + contract and RC11 packet commits are metadata-only successors. +- RC10 is not reused: an earlier failed attempt staged exact-version registry + artifacts from `76e07be290892ed8453bbed942855c1e7f673232`, so RC11 provides a + new immutable version identity for the corrected candidate. +- Targeted proof covers request-origin validation, SSH host-key enforcement, + settings RBAC and responsive layout, WebSocket recovery, resource deltas, + PBS polling, Proxmox HTTP probe fallback, agent update convergence, release + promotion, dependency audits, Windows install-command execution, and mobile + API compatibility. +- Release publication builds and validates one immutable `main` SHA before + publishing the GitHub prerelease, Docker image, Helm chart, and private Pro + packet. + +## Upgrade Notes + +Use the normal v6 install or update flow for `v6.2.0-rc.11` only when you are +comfortable testing an RC. The rollback target is stable `v6.1.2`. + +The exact rollback reinstall command is: + +```bash +./scripts/install.sh --version v6.1.2 +``` + +Existing configurations remain valid and no manual data migration is required. + +This server candidate is compatible with the current Pulse Mobile 1.0.0 beta +candidates. iOS build 12 is distributed through the TestFlight public beta link, +and Android versionCode 9 remains available through Play open testing; both use +runtime version 2. The changes since RC9 preserve the checked-in mobile API, +Relay, pairing, approval, push, authentication, and onboarding contracts. 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. 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.11.md b/docs/releases/V6_CHANGELOG_v6.2.0-rc.11.md new file mode 100644 index 000000000..dafc5aa8d --- /dev/null +++ b/docs/releases/V6_CHANGELOG_v6.2.0-rc.11.md @@ -0,0 +1,66 @@ +# Pulse v6.2.0-rc.11 + +_This changelog describes the changes since `v6.2.0-rc.9` and replaces the +abandoned partial `v6.2.0-rc.10` candidate. `v6.2.0-rc.11` remains a +prerelease and rolls back to stable `v6.1.2`._ + +## Added + +- Typed prerelease containment records for historically reachable credentials, + backed by provider-observed closure and replacement or retirement evidence. +- Fail-closed origin validation for hosted sign-in, diagnostics, and copied + installer command surfaces. +- Canonical worktree claim helpers and conflict-aware release-control routing + for concurrent maintainers. + +## Improved + +- Viewer-safe Settings and workload navigation, including responsive panels + and role-aware update-status polling. +- Oversized WebSocket snapshot recovery through authenticated REST resync while + retaining raw-state delta correctness. +- Unified Agent update convergence, PBS node identity reuse, merged-resource + alert intent handling, and Proxmox availability fallback when HEAD is not + supported. +- Release artifact staging, authenticated draft install smoke, cold-runner + Windows TLS proof, customer promotion convergence, frontend dependency + audits, historical secret scanning, and provider-MSP evaluation delivery. +- Self-hosted commercial opt-in posture and plan-selection upgrade routing. + +## Fixed + +- Blocked untrusted request-derived hosts and schemes from installer, hosted + diagnostics, and magic-link responses. +- Enforced SSH host-key verification during legacy sensor-proxy cleanup. +- Removed inaccessible admin routes and background requests from viewer + sessions while preserving authorized health summaries. +- Prevented oversized WebSocket snapshots from becoming a corrupt recovery + baseline and applied later deltas to canonical raw server state. +- Corrected repeated PBS node-name reads, retry classification, responsive + Settings clipping, and HTTP 501 availability false-down reports. +- Removed the reverted proactive commercial prompt, telemetry, and checkout + attribution cluster from the final candidate. + +## Release Metadata + +- Version: `v6.2.0-rc.11` +- Previous public candidate: `v6.2.0-rc.9` +- Abandoned partial candidate: `v6.2.0-rc.10` at + `76e07be290892ed8453bbed942855c1e7f673232` +- 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 +- Code-backed validation-risk head: + `2018aa8a9a965d693982e260f525f6cc4f49aa41` (68 commits and 241 changed files + since `v6.2.0-rc.9`) +- Windows signing decision: Authenticode through SignPath is the mandatory + signing backend and no unsigned-Windows exception applies to any `v6.2.0` + release +- Mobile decision: `existing-mobile-build-compatible`; Pulse Mobile 1.0.0 iOS + build 12 is distributed through the TestFlight public beta link and Android + versionCode 9 remains on Play open testing, both using runtime version 2. The + checked-in mobile compatibility proof passes for this server revision. No + public store rollout is part of this candidate diff --git a/frontend-modern/public/docs/UPGRADE_v6.md b/frontend-modern/public/docs/UPGRADE_v6.md index 9ca00a3d4..77c67d52a 100644 --- a/frontend-modern/public/docs/UPGRADE_v6.md +++ b/frontend-modern/public/docs/UPGRADE_v6.md @@ -4,11 +4,13 @@ This guide covers practical upgrade steps for existing Pulse installs moving to For the current v6 support release candidate packet, see: -- `docs/releases/RELEASE_NOTES_v6.2.0-rc.10.md` -- `docs/releases/V6_CHANGELOG_v6.2.0-rc.10.md` +- `docs/releases/RELEASE_NOTES_v6.2.0-rc.11.md` +- `docs/releases/V6_CHANGELOG_v6.2.0-rc.11.md` For historical v6.2 support release candidate packets, see: +- `docs/releases/RELEASE_NOTES_v6.2.0-rc.10.md` +- `docs/releases/V6_CHANGELOG_v6.2.0-rc.10.md` - `docs/releases/RELEASE_NOTES_v6.2.0-rc.9.md` - `docs/releases/V6_CHANGELOG_v6.2.0-rc.9.md` - `docs/releases/RELEASE_NOTES_v6.2.0-rc.8.md` diff --git a/scripts/install-docker.sh b/scripts/install-docker.sh index 1bddab98c..4ebef6fba 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.0-rc.10" +CANONICAL_DEFAULT_PULSE_VERSION="6.2.0-rc.11" 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 c531fb06a..d519a8754 100644 --- a/scripts/installtests/build_release_assets_test.go +++ b/scripts/installtests/build_release_assets_test.go @@ -649,9 +649,9 @@ func TestCurrentSupportPrereleasePacketTracksInstallMetadata(t *testing.T) { "## Highlights", "stable `v"+previous+"`", "supersedes `v6.2.0-rc.9`", - "Installer, diagnostic, and sign-in URLs reject untrusted origins", - "Settings, resource links, update polling, health", - "Agent/PBS lifecycle fixes", + "Security hardening blocks untrusted installer, diagnostic, sign-in, and SSH cleanup origins", + "Role-correct Settings and resilient recovery keep viewer access and live resource state coherent", + "Proxmox availability retries GET when a server rejects HEAD with HTTP 405 or 501", "Targeted proof covers request-origin validation, SSH host-key enforcement", "iOS build 12 is distributed through the TestFlight public beta link", "Android versionCode 9 remains available through Play open testing", @@ -662,7 +662,8 @@ func TestCurrentSupportPrereleasePacketTracksInstallMetadata(t *testing.T) { ) assertFileContainsAllNormalized(t, changelogPath, "Version: `v"+version+"`", - "Previous candidate: `v6.2.0-rc.9`", + "Previous public candidate: `v6.2.0-rc.9`", + "Abandoned partial candidate: `v6.2.0-rc.10`", "Previous stable: `v"+previous+"`", "Rollback target: `v"+previous+"`", "Promotion path: exact-SHA single-build release candidate from `main`", @@ -711,7 +712,7 @@ func TestCurrentSupportPrereleasePacketTracksInstallMetadata(t *testing.T) { "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 `v"+version+"` server cut is classified `existing-mobile-build-compatible`.", - "The changes since RC9 preserve the checked-in mobile API, Relay, pairing, approval, push, authentication, and onboarding contracts; no additional companion upload or public store rollout is part of RC10.", + "The changes since RC9 preserve the checked-in mobile API, Relay, pairing, approval, push, authentication, and onboarding contracts; no additional companion upload or public store rollout is part of RC11.", ) } diff --git a/scripts/installtests/install_docker_sh_test.go b/scripts/installtests/install_docker_sh_test.go index 436c94d9c..988980466 100644 --- a/scripts/installtests/install_docker_sh_test.go +++ b/scripts/installtests/install_docker_sh_test.go @@ -135,6 +135,7 @@ func TestPreviousStableForPrereleaseVersionCrossesMinorBoundaries(t *testing.T) {version: "6.2.0-rc.8", want: "6.1.2"}, {version: "6.2.0-rc.9", want: "6.1.2"}, {version: "6.2.0-rc.10", want: "6.1.2"}, + {version: "6.2.0-rc.11", want: "6.1.2"}, } for _, test := range tests { @@ -342,7 +343,8 @@ 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.", - "is a security-boundary, role-correct access, live-state recovery, and release-operations cut that supersedes `v6.2.0-rc.9`: it validates request-derived origins, verifies legacy-cleanup SSH hosts, aligns Settings and resource reads with session authority, recovers oversized WebSocket state, converges agent and PBS lifecycle behavior, restores the deliberate self-hosted commercial opt-in posture, and closes the historical credential-containment gate", + "is a security-boundary, role-correct access, live-state recovery, and release-operations cut that supersedes `v6.2.0-rc.9`: it validates request-derived origins, verifies legacy-cleanup SSH hosts, aligns Settings and resource reads with session authority, recovers oversized WebSocket state, converges agent and PBS lifecycle behavior, restores the deliberate self-hosted commercial opt-in posture, closes the historical credential-containment gate, and retries GET when Proxmox reports HTTP 405 or 501 for unsupported HEAD availability probes.", + "The preceding `v6.2.0-rc.10` attempt used the same support-prerelease path with `rollback_version=v6.1.2`, but it is an abandoned partial candidate rather than the current public-testing identity.", "The preceding `v6.2.0-rc.9` candidate used the same support-prerelease path with `rollback_version=v6.1.2` and pinned the same four install surfaces to `6.2.0-rc.9`.", "The preceding `v6.2.0-rc.8` candidate used the same support-prerelease path with `rollback_version=v6.1.2` and pinned the same four install surfaces to `6.2.0-rc.8`.", "The preceding `v6.2.0-rc.7` candidate used the same support-prerelease path with `rollback_version=v6.1.2` and pinned the same four install surfaces to `6.2.0-rc.7`.", @@ -354,7 +356,7 @@ func TestInstallDockerProofTracksSupportPrereleaseContract(t *testing.T) { "The preceding `v6.2.0-rc.1` candidate used the same support-prerelease path with `rollback_version=v6.1.2` and pinned the same four install surfaces to `6.2.0-rc.1`.", "The `v"+version+"` server cut is classified `existing-mobile-build-compatible`.", "Pulse Mobile 1.0.0 iOS build 12 and Android versionCode 9 candidates, both using runtime version 2, remain distributed to the existing beta cohort through TestFlight and Play open testing.", - "The changes since RC9 preserve the checked-in mobile API, Relay, pairing, approval, push, authentication, and onboarding contracts; no additional companion upload or public store rollout is part of RC10.", + "The changes since RC9 preserve the checked-in mobile API, Relay, pairing, approval, push, authentication, and onboarding contracts; no additional companion upload or public store rollout is part of RC11.", "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.", ) diff --git a/scripts/release_control/subsystem_lookup_test.py b/scripts/release_control/subsystem_lookup_test.py index 445938da0..be5de4369 100644 --- a/scripts/release_control/subsystem_lookup_test.py +++ b/scripts/release_control/subsystem_lookup_test.py @@ -4116,6 +4116,7 @@ class SubsystemLookupTest(unittest.TestCase): "self-hosted-paid-surface-classification", "self-hosted-core-monitoring-free", "self-hosted-commercial-scope-support-contract", + "self-hosted-commercial-surfaces-opt-in-posture", "self-hosted-commercial-transition-contract", "self-hosted-paid-extras-packaging", "stable-release-promotion-model",