diff --git a/VERSION b/VERSION index b7515051e..2de57bb4d 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -6.1.0-rc.1 +6.1.0-rc.2 diff --git a/deploy/helm/pulse/Chart.yaml b/deploy/helm/pulse/Chart.yaml index 7487aab80..6b075a085 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.0-rc.1 -appVersion: "6.1.0-rc.1" -icon: https://raw.githubusercontent.com/rcourtman/Pulse/v6.1.0-rc.1/docs/images/pulse-logo.svg +version: 6.1.0-rc.2 +appVersion: "6.1.0-rc.2" +icon: https://raw.githubusercontent.com/rcourtman/Pulse/v6.1.0-rc.2/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.0-rc.1/docs/KUBERNETES.md + url: https://github.com/rcourtman/Pulse/blob/v6.1.0-rc.2/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 f734b8c9b..729a6159b 100644 --- a/deploy/helm/pulse/README.md +++ b/deploy/helm/pulse/README.md @@ -1,6 +1,6 @@ # pulse -![Version: 6.1.0-rc.1](https://img.shields.io/badge/Version-6.1.0--rc.1-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: 6.1.0-rc.1](https://img.shields.io/badge/AppVersion-6.1.0--rc.1-informational?style=flat-square) +![Version: 6.1.0-rc.2](https://img.shields.io/badge/Version-6.1.0--rc.2-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: 6.1.0-rc.2](https://img.shields.io/badge/AppVersion-6.1.0--rc.2-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 4ae67d639..3c4246268 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.0-rc.1} + image: ${PULSE_IMAGE:-rcourtman/pulse:6.1.0-rc.2} container_name: pulse restart: unless-stopped logging: diff --git a/docs/RELEASE_NOTES.md b/docs/RELEASE_NOTES.md index a5103b212..32f997124 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.1.0-rc.1.md` -- `docs/releases/V6_CHANGELOG_v6.1.0-rc.1.md` +- `docs/releases/RELEASE_NOTES_v6.1.0-rc.2.md` +- `docs/releases/V6_CHANGELOG_v6.1.0-rc.2.md` For historical v6 support release candidate packets, see: +- `docs/releases/RELEASE_NOTES_v6.1.0-rc.1.md` +- `docs/releases/V6_CHANGELOG_v6.1.0-rc.1.md` - `docs/releases/RELEASE_NOTES_v6.0.5-rc.4.md` - `docs/releases/V6_CHANGELOG_v6.0.5-rc.4.md` - `docs/releases/RELEASE_NOTES_v6.0.5-rc.3.md` diff --git a/docs/UPGRADE_v6.md b/docs/UPGRADE_v6.md index 9439d76ba..dc6dc5071 100644 --- a/docs/UPGRADE_v6.md +++ b/docs/UPGRADE_v6.md @@ -4,8 +4,8 @@ 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.1.0-rc.1.md` -- `docs/releases/V6_CHANGELOG_v6.1.0-rc.1.md` +- `docs/releases/RELEASE_NOTES_v6.1.0-rc.2.md` +- `docs/releases/V6_CHANGELOG_v6.1.0-rc.2.md` For the current stable v6 packet and rollout references, see: diff --git a/docs/release-control/v6/internal/status.json b/docs/release-control/v6/internal/status.json index 4b07bedc7..d99f7a9ac 100644 --- a/docs/release-control/v6/internal/status.json +++ b/docs/release-control/v6/internal/status.json @@ -8870,7 +8870,21 @@ ] } ], - "work_claims": [], + "work_claims": [ + { + "id": "codex-lane-l1", + "agent_id": "codex", + "summary": "Prepare and publish the governed v6.1.0-rc.2 release packet", + "target_id": "v6-product-lane-expansion", + "claimed_at": "2026-07-16T22:37:38Z", + "heartbeat_at": "2026-07-16T22:37:38Z", + "expires_at": "2026-07-17T02:37:38Z", + "work_item": { + "kind": "lane", + "id": "L1" + } + } + ], "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 694dc0569..aa52c39c5 100644 --- a/docs/release-control/v6/internal/subsystems/deployment-installability.md +++ b/docs/release-control/v6/internal/subsystems/deployment-installability.md @@ -999,9 +999,9 @@ 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.1.0-rc.1` cut sets the repo-root `VERSION`, +The active support prerelease `v6.1.0-rc.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.0-rc.1` release +fallback, and Helm chart release metadata to the same `6.1.0-rc.2` release version. This support prerelease keeps `rollback_version=v6.0.5`, publishes a versioned public GitHub prerelease plus versioned Docker and Helm artifacts, and does not move stable/latest install pointers or stable semver aliases. It puts @@ -1009,7 +1009,11 @@ 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 before the next stable minor release. +behind RC validation before the next stable minor release. The second candidate +extends that cumulative scope with model-led Patrol qualification, +subscription-backed Claude transport, typed Docker update and restart recovery, +a governed commercial lifecycle, and additional fail-closed authentication and +installer hardening. The companion evidence for this cut is Pulse Mobile iOS build 10 and Android versionCode 8 on TestFlight and Google Play internal testing only. The release packet must not describe either candidate as a public store rollout. @@ -1072,8 +1076,8 @@ compose image default, standalone installer fallback constant, and packaged 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 support prerelease `v6.1.0-rc.1` cut, the repo-root compose -default and `scripts/install-docker.sh` fallback must both pin `6.1.0-rc.1` +For the active support prerelease `v6.1.0-rc.2` cut, the repo-root compose +default and `scripts/install-docker.sh` fallback must both pin `6.1.0-rc.2` 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. diff --git a/docs/releases/RELEASE_NOTES_v6.1.0-rc.2.md b/docs/releases/RELEASE_NOTES_v6.1.0-rc.2.md new file mode 100644 index 000000000..58f7db965 --- /dev/null +++ b/docs/releases/RELEASE_NOTES_v6.1.0-rc.2.md @@ -0,0 +1,164 @@ +# Pulse v6.1.0-rc.2 Release Notes + +`v6.1.0-rc.2` is a release candidate for the next Pulse v6 minor line. It +follows stable `v6.0.5`, retains the substantial monitor-first product update, +typed Pulse Intelligence action lifecycle, dedicated Actions workspace, safer +native-agent update and recovery behavior, and broad security and reliability +hardening from the first candidate, and supersedes `v6.1.0-rc.1` with further +Patrol, provider, Docker-action, authentication, installer, storage, and +commercial-lifecycle fixes. + +## Highlights + +- Patrol findings can now move through one reviewed Actions inbox with clear + approval, execution, and verification state. +- Pulse can safely carry out a wider set of explicitly governed Docker, + Proxmox, host-update, package-maintenance, and storage-cleanup actions. +- Platform pages, connected systems, responsive layouts, and Assistant + conversations are more task-focused and easier to operate day to day. +- Native updates, agent recovery, authentication boundaries, and service + hardening fail closed across more installation and recovery paths. +- Patrol investigations now keep evidence and model-turn budgets bounded, + preserve multiple grounded findings, and separate Watch detection from + model-led investigation. +- Claude subscription-backed models can use schema-bound streaming and native + typed tools without creating a parallel action-execution path. + +## Added + +- Pulse Intelligence now has explicit detection and investigation profiles, + a typed proposal-to-action lifecycle, and post-action verification for + supported Docker and Kubernetes operations. +- Patrol action state now reconciles from the authoritative action audit and + stays current across investigation history, desktop approval controls, and + Pulse Mobile approve or reject flows. +- Actions provides a dedicated inbox for reviewing proposed work, checking + policy and verification details, and seeing pending approvals without + searching through Assistant history. +- Patrol can authorize low-risk Docker and Podman restarts through explicit + per-resource capability allowlists and optional recurring maintenance + windows, while unsupported, out-of-window, or downgraded-mode actions remain + approval-gated and fail closed. +- Governed host updates, Debian and Ubuntu package maintenance, storage-pressure + cleanup, and supported Proxmox guest lifecycle operations now use reviewed + plans, durable execution receipts, and independent outcome verification. +- Local AI setup includes a guided Ollama quickstart for `qwen3:8b`, with + clearer Provider & Models readiness guidance. +- Cluster members can override their connection addresses when the discovered + address is not the one Pulse should use. +- The Unified Agent Windows service now writes owner-controlled rotating logs, + verifies logged readiness during installation, and carries native lifecycle + proof for install, replacement, recovery, persistence, and uninstall. +- A live Patrol qualification path exercises model-led investigations, finding + quality, remediation planning, typed tool use, and negative controls. +- Claude subscription-backed models support bounded preflight, streaming native + tool calls, retry-safe durable outcomes, and explicit separation from + API-billed provider routes. +- Docker inventory warns when two machines report the same agent identity, and + registry pulls can negotiate bearer tokens from authentication challenges. + +## Improved + +- Platform and connected-system pages lead with monitor-first attention and + task-oriented workflows, with more coherent responsive and mobile layouts. +- Pulse Intelligence settings and daily-use surfaces use one consistent + product vocabulary while keeping Patrol focused on detection and + investigation. +- The provider MSP portal uses the product design system, supports dark mode, + and presents self-service behavior honestly when an email provider is not + configured. +- Update execution now uses one canonical lifecycle with clearer completion, + rollback, and operator feedback. +- Investigation prompts receive the real typed capability catalog, including + approval requirements and parameter constraints, instead of asking the + model to guess which actions are available. +- Assistant conversations can be retried, regenerated, edited and resent, and + steered while a response is running. Long pasted input is collapsed into a + manageable composer attachment, and the last-turn summary reports estimated + model cost when available. +- Patrol handoffs now open the related Actions review directly, background + Patrol work stays out of the Assistant quick-resume list, and the Actions tab + shows its pending-approval count. +- Docker, Kubernetes, TrueNAS, vSphere, and Proxmox node tables preserve + user-controlled column sorting through one shared platform-table model. +- Multi-finding Patrol runs preserve accepted siblings and sequential findings, + while provider retries and replay handling retain durable outcomes without + upgrading incomplete evidence. +- Docker update and restart work stays on reviewed typed plans with durable + receipts and recovery after server or agent reconnection. +- Commercial plan, cadence, entitlement, revocation, and downgrade handling now + shares an installation-scoped lifecycle that preserves customer data. + +## Fixed + +- Native updates self-test the replacement binary before swapping it in, + reject silent edition downgrades, preserve a sanctioned rollback path, and + fail fast when signing configuration is incomplete. +- Native updates fail closed instead of silently falling back to a community + build, preserve writable configuration backups under hardened services, and + publish verification keys in the exact OpenSSH `allowed_signers` form used + by the documented verification command. +- Docker updates now recreate the container instead of attempting a restart + that cannot apply a new image. +- Docker containers retain their grouped-by-host view and open configured web + links consistently after REST resource snapshot hydration. +- Docker and Kubernetes agents tolerate realistic clock skew when evaluating + liveness, and posture alerts no longer ignore the intended guest-suppression + rules. +- Legacy OIDC callbacks recover the initiating provider correctly. +- Provider/runtime failures and proposal-validation failures remain separate, + so a failed investigation cannot be misreported as a completed + needs-attention result. +- First-run, request parsing, storage, cookie, remediation-lock, and remote + deployment boundaries now fail closed across the hardened paths included in + this candidate. +- FreeBSD agent update recovery and Windows service recovery now preserve a + usable runtime across replacement and restart paths. +- Cluster re-registration preserves an operator-selected member address, moved + guests keep their alert ownership aligned with the new node, and unavailable + guest-agent disk data is no longer presented as a real measurement. +- Physical disks no longer disappear on wide node layouts, standby SSDs no + longer report misleading state, shared Docker network namespaces survive + container updates, and SSO administrators retain the expected settings + authority. +- Patrol rejects untrusted prompt instructions, unsupported reconfirmation + shortcuts, and ungrounded health claims; repeated restarts and Docker OOM + events now use authoritative evidence. +- OIDC sessions without refresh tokens remain valid where allowed, mixed-auth + startup avoids deadlock, and Basic-auth identity reaches action authorization. +- Deleted hosts can re-enroll with fresh credentials, agent configuration stays + available from continuity state during reload windows, and Windows version + checks normalize a leading `v`. +- Constrained NAS installs no longer require `od`; recovery-point, TrueNAS, and + `nvme-eui` ZFS disk identity reconciliation retain authoritative sources. +- Availability polling honors its configured interval, alert email times include + their timezone, and no-op Docker update status no longer creates false history. + +## Upgrade Notes + +Use the normal v6 install or update flow for `v6.1.0-rc.2` only when you are +comfortable testing an RC. The rollback target for this release candidate is +`v6.0.5`. + +The exact rollback reinstall command is: + +```bash +./scripts/install.sh --version v6.0.5 +``` + +This candidate changes authentication and native installer/updater boundaries, +so it is intentionally using the governed RC path rather than the direct +stable-patch path. + +Pulse Mobile iOS candidate build 10 and Android candidate versionCode 8 carry +the matching plan-bound action review and approval client. They remain on the +TestFlight and Google Play internal-testing tracks; no public store rollout is +part of this RC. + +Windows Unified Agent binaries in this release candidate retain the same +checksum and detached-signature verification used by `v6.0.5`, but they are +not yet Authenticode-signed and Windows may show an unknown-publisher warning. +Public Windows Authenticode signing remains required before stable promotion. + +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.1.0-rc.2.md b/docs/releases/V6_CHANGELOG_v6.1.0-rc.2.md new file mode 100644 index 000000000..4a99b1dbf --- /dev/null +++ b/docs/releases/V6_CHANGELOG_v6.1.0-rc.2.md @@ -0,0 +1,139 @@ +# Pulse v6.1.0-rc.2 + +_This changelog describes the cumulative `v6.1.0-rc.2` release candidate +compared with stable `v6.0.5`. It supersedes `v6.1.0-rc.1`._ + +## Added + +- Pulse Intelligence now exposes explicit detection and investigation + profiles over the canonical typed action lifecycle. +- Patrol can capture typed action proposals and route approved work through + the shared lifecycle instead of command-side execution paths. +- Desktop and Pulse Mobile clients now use the canonical pending-action queue, + decision endpoint, and action identity instead of retired command-shaped + approval endpoints. +- The desktop Actions inbox now provides one review surface for proposed work, + policy provenance, approval state, execution progress, verification detail, + and direct Patrol handoffs. +- Docker and Kubernetes actions verify supported scale and update outcomes + after execution. +- Policy-scoped Patrol autonomy can authorize low-risk Docker and Podman + restarts only for explicitly allowed resources and optional recurring + maintenance windows. +- Host update, Debian and Ubuntu package, storage-pressure cleanup, Docker + restart, and supported Proxmox guest lifecycle plans now share the governed + action, durable receipt, and independent-verification path. +- Local provider setup includes a guided Ollama `qwen3:8b` quickstart. +- Cluster members can override discovered connection addresses. +- The Unified Agent accepts a rotating JSON log path for native service use. +- Live Patrol qualification now exercises model-led investigations, typed tool + use, finding quality, remediation planning, and negative controls. +- Claude subscription-backed models now support schema-bound streaming turns, + native tools, bounded preflight, and retry-safe durable outcomes. +- Docker inventory identifies conflicting shared agent identities, and registry + clients can negotiate bearer tokens from authentication challenges. + +## Changed + +- Connected systems, platform attention states, and responsive layouts are + task-first and monitor-first across the main product surfaces. +- Assistant and Patrol settings now use the Pulse Intelligence product name + consistently while retaining Patrol as the detection and investigation + engine. +- The provider MSP portal now uses product design tokens and dark mode, and + its no-email-provider behavior is explicit and self-sufficient. +- Native-agent update application now runs through one store action and one + transport-independent lifecycle service. +- Action transitions reconcile investigation outcomes from the authoritative + audit at write time and hydrate missed transitions when investigations are + read later. +- Investigation prompts include the validated capability catalog with approval + floors, parameter schemas, and sensitive/operator-only constraints. +- Assistant supports in-place retry, response regeneration, edit-and-resend, + mid-turn steering, collapsed long-paste attachments, and estimated + last-turn cost summaries. +- Patrol action handoffs open the matching Actions review, background Patrol + sessions stay out of Assistant quick resume, and pending approvals are + visible on the Actions navigation tab. +- Docker, Kubernetes, TrueNAS, vSphere, and Proxmox node tables share one + sortable platform-table model and retain user-controlled column ordering. +- Windows native CI exercises installer parsing, install, version replacement, + logged readiness, forced-process recovery, restart persistence, and cleanup. +- Release automation builds one signed exact-SHA candidate and promotes that + candidate without rebuilding. +- Action dispatch now binds server-authored policy provenance and reviewed plan + identity through durable admission, transport, result, and audit records. +- Patrol separates Watch detection from investigation, bounds evidence and model + turns, preserves multiple accepted findings, and keeps canonical resource + identities through typed tool calls. +- Docker update and restart work remains on reviewed typed plans with durable + receipts and reconnect recovery. +- Commercial plan, cadence, entitlement, revocation, and downgrade handling now + shares an installation-scoped lifecycle that preserves customer data. + +## Fixed + +- Replacement binaries are self-tested before the in-app updater swaps them + into place. +- Edition-aware update checks block silent Pro-to-community downgrades and + preserve an explicit rollback route. +- Docker update guidance recreates the container so the selected image is + actually applied. +- Docker and Kubernetes agent liveness handles clock skew correctly. +- Docker updates preserve containers that share another container's network + namespace. +- Guest suppression is honored for posture alerts. +- Legacy OIDC callback handling recovers the initiating provider. +- Simultaneous provider/runtime and proposal-channel failures preserve both + failure causes across the core and enterprise boundary. +- Terminal action verification now drives honest desktop and mobile completion + or failure state, including canonical push action identities. +- FreeBSD update recovery preserves the native agent lifecycle. +- Windows service installation fails closed when required recovery actions or + non-crash recovery cannot be configured. +- Windows install success now requires both local readiness and a non-empty + durable service log. +- Discovery backfills quiesce during shutdown. +- Cluster members retain an operator-selected connection address when they + re-register through another member. +- Guest alerts move with the guest when its owning node changes, and missing + guest-agent disk data uses an unavailable sentinel instead of a fabricated + measurement. +- Physical disk tables keep wide-node disks visible and avoid reporting + standby SSDs as active failures. +- SSO-backed administrators retain their effective settings privileges. +- Patrol rejects untrusted instructions, invalid reconfirmation shortcuts, and + ungrounded health claims while using authoritative restart and OOM evidence. +- OIDC sessions without refresh tokens remain valid where allowed, mixed-auth + startup avoids deadlock, and Basic-auth identity reaches action authorization. +- Deleted hosts can re-enroll with fresh credentials, continuity state serves + agent configuration during reload windows, and Windows version checks + normalize a leading `v`. +- Constrained NAS installs no longer require `od`; recovery-point, TrueNAS, and + `nvme-eui` disk reconciliation preserve authoritative identity. +- Availability polling cadence, alert timezones, Docker change history, and + stable web-interface links now reflect authoritative values. + +## Security + +- First-run security boundaries now fail closed. +- Autonomous dispatches fail closed when remediation lock state is unknown. +- Request, storage, integer-conversion, allocation, and cookie boundaries have + additional CodeQL-driven hardening. +- macOS native release signing and notarization are required for this RC; + Windows Authenticode remains required for stable promotion and is disclosed + explicitly while the public signing application is pending. +- Demo SSH setup no longer weakens host-key handling for private deploy hosts + or IP targets. +- Update verification documentation and release output use a guarded OpenSSH + `allowed_signers` line, and hardened update services keep configuration + backups on a writable path. + +## Release Metadata + +- Version: `v6.1.0-rc.2` +- Rollback target: `v6.0.5` +- Rollback command: `./scripts/install.sh --version v6.0.5` +- Promotion path: release candidate from `main` +- Mobile companion candidates: iOS build 10 and Android versionCode 8 on the + TestFlight and Google Play internal-testing tracks diff --git a/scripts/install-docker.sh b/scripts/install-docker.sh index d5a72b7c0..697c1b86d 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.0-rc.1" +CANONICAL_DEFAULT_PULSE_VERSION="6.1.0-rc.2" 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 5a5d14312..54be3de73 100644 --- a/scripts/installtests/build_release_assets_test.go +++ b/scripts/installtests/build_release_assets_test.go @@ -346,6 +346,11 @@ func TestCurrentSupportPrereleasePacketTracksInstallMetadata(t *testing.T) { "Legacy OIDC callbacks", "Windows service recovery", "fail closed", + "supersedes `v6.1.0-rc.1`", + "Claude subscription-backed models", + "Docker inventory warns when two machines report the same agent identity", + "Commercial plan, cadence, entitlement, revocation, and downgrade handling", + "Constrained NAS installs no longer require `od`", "Pulse Mobile iOS candidate build 10 and Android candidate versionCode 8", "TestFlight and Google Play internal-testing tracks", "rollback target for this release candidate is `v"+previous+"`", @@ -370,6 +375,11 @@ func TestCurrentSupportPrereleasePacketTracksInstallMetadata(t *testing.T) { "Windows service installation fails closed", "First-run security boundaries now fail closed", "one signed exact-SHA candidate", + "supersedes `v6.1.0-rc.1`", + "Claude subscription-backed models", + "Docker inventory identifies conflicting shared agent identities", + "Commercial plan, cadence, entitlement, revocation, and downgrade handling", + "Constrained NAS installs no longer require `od`", "Mobile companion candidates: iOS build 10 and Android versionCode 8", "TestFlight and Google Play internal-testing tracks", ) diff --git a/scripts/installtests/install_docker_sh_test.go b/scripts/installtests/install_docker_sh_test.go index 73f21ebb4..97f5ad303 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.1", want: "6.0.5"}, + {version: "6.1.0-rc.2", want: "6.0.5"}, } for _, test := range tests {