Pulse/pkg
rcourtman 951424d4ff Keep the provider portal up when the MSP licence lapses
A provider-hosted control plane refused to start once its licence was past
expiry and the 7-day grace, because startup validated it with
ValidateLicense. So at the next restart after a 60-day evaluation ran out,
or after a paying provider's subscription lapsed, the portal went down, and
the portal's Plan tab is the only place a provider can buy or renew.
Reproduced on the walkthrough lab.

Startup now accepts an authentic, key-bound licence even when lapsed
(ValidateLicenseAllowingLapse), preferring a current licence and otherwise
the one that expired later, and logs the lapse. It unlocks nothing: client
runtimes still verify the provider licence in every lease with
ValidateLicense and drop MSP capabilities, new clients are refused with
provider_msp_license_lapsed, and the refresher still refuses a lapsed
licence. The Plan panel says the evaluation or plan ended and offers the
plans, and provider-msp status reports license_lapsed without failing so a
lapsed install can still upgrade.

The same run showed the portal printing control plane error codes such as
provider_msp_license_lapsed instead of their message. The portal now
prefers an error's message over its code, which also fixes
already_subscribed and checkout_unavailable in the Plan tab.
2026-09-24 13:07:10 +01:00
..
agents fix(agents): preserve explicit disk includes at ingestion 2026-09-09 11:35:51 +01:00
aicontracts Preserve canonical Patrol planning and outcome continuity 2026-09-07 17:24:25 +01:00
audit Harden audit signatures against boundary forgery 2026-08-12 05:05:11 +01:00
auth fix(auth): synchronise local admin permissions during setup 2026-09-10 06:52:38 +01:00
cloudauth fix(hosted): preserve direct handoff membership continuity 2026-03-26 23:40:02 +00:00
db fix(ai): preserve diagnostic evidence and proposal boundaries 2026-09-06 01:54:28 +01:00
discovery Bound discovery probe response bodies 2026-09-01 10:37:26 +01:00
diskinventory fix(unifiedresources): merge PVE and agent rows for the same RAID array volume 2026-08-28 06:20:10 +01:00
edition Block in-app self-update on the Pro binary to prevent silent downgrade 2026-07-08 10:02:04 +01:00
extensions Fix audit storage migration and viewer races 2026-07-24 10:33:57 +01:00
fsfilters fix(alerts): stabilize noisy lifecycle signals 2026-08-29 17:32:17 +01:00
licensing Keep the provider portal up when the MSP licence lapses 2026-09-24 13:07:10 +01:00
metrics Make the time-major metrics index the unique identity index 2026-09-24 08:45:38 +01:00
pbs fix(pbs): reject incomplete alerting measurements 2026-09-05 18:04:21 +01:00
pmg Bound Proxmox API success responses 2026-08-31 21:20:30 +01:00
proxmox test(proxmox): verify pending update credential routing 2026-09-08 22:33:55 +01:00
pulsecli Enforce server-owned action approval authority 2026-07-11 19:49:17 +01:00
reporting fix(patrol): preserve refusals and expose measured summary evidence 2026-09-05 22:29:48 +01:00
securityutil Block IPv6 transition addresses in SSRF guards (GHSA-8f8r-p75h-jwq5) 2026-07-31 17:57:26 +01:00
server test(server): serialize the remaining startup watchdog log reads 2026-09-21 09:41:00 +01:00
tlsutil feat(monitoring): alert on certificate validity 2026-08-06 09:47:03 +01:00