Commit Graph

18 Commits

Author SHA1 Message Date
rcourtman ae4162f8f2 Enforce installation-scoped license invalidation 2026-07-14 16:18:21 +01:00
rcourtman 848b4d5038 Preserve customer data across plan downgrades 2026-07-14 11:47:25 +01:00
rcourtman 847cf98544 Fix activation fingerprint and license period status 2026-07-09 11:30:26 +01:00
rcourtman 3badd0a840 fix(licensing): honor activated licenses for dev-grant-excluded features in dev mode
In dev/demo builds HasFeature returned the implicit dev grant verdict
unconditionally, so features excluded from that grant (white_label,
multi_user, unlimited, env-gated multi_tenant) were denied even when an
explicitly activated, signature-verified license carried them - while
/api/license/status reported them active from the same claims. That
inconsistency made branded report rendering impossible to exercise in
dev builds. Excluded features now fall through to real entitlement
evaluation, so an activated license behaves the same in dev as in
release builds; the no-license dev posture is unchanged.
2026-06-10 17:09:00 +01:00
rcourtman 86244d8c13 Track runtime build in license activation 2026-05-06 23:45:37 +01:00
rcourtman 81b31e4d3b Remove monitored-system volume caps
Retire runtime/API/UI monitored-system volume enforcement now that infrastructure monitoring is no longer capped.

Keep only legacy metadata scrubbing and purchase-start compatibility for old max_monitored_systems references.

Rename the remaining preview surface to monitored-system impact and make previews explanatory rather than save-blocking.

Update subsystem contracts and RA7 evidence for the caps-retired invariant.
2026-05-05 12:59:59 +01:00
rcourtman 5f0078b0d0 Keep synthetic modes out of entitlement payloads 2026-04-29 00:33:53 +01:00
rcourtman a67845ada0 Retire self-hosted volume caps 2026-04-28 20:36:37 +01:00
rcourtman a44cde6b92 Gate licensing test helpers out of release builds 2026-04-22 06:18:40 +01:00
rcourtman 943389827f Scrub stale monitored-system caps on self-hosted uncapped tiers
v5-migrated installations can persist a legacy max_monitored_systems value
(e.g. Community=1) in the license claims. After 5914a4127 made all
self-hosted tiers uncapped, EffectiveLimits() only scrubbed Lifetime and
v5-grandfathered Pro, so migrated Community / Pro / Relay installs kept
emitting the old cap and the "Over plan" banner still rendered on rc.2.

Extend the scrub to every self-hosted tier whose TierMonitoredSystemLimits
entry is 0, and stop monitoredSystemContinuityStatusLocked() from falling
back to the grant's plan limit when the license says uncapped. 0 is now
a first-class "unlimited" signal, not a missing-data sentinel.

The grandfather-floor continuity is still captured for audit, but no
longer enforces on self-hosted tiers. Cloud and MSP limit resolution is
untouched.

Refs #1429
2026-04-17 13:52:02 +01:00
rcourtman f3c4d4d83d Grandfather active v5 Pro customers as uncapped 2026-04-15 00:35:24 +01:00
rcourtman 7cac04e2ff Track v6 install version through licensing runtime 2026-04-14 11:44:59 +01:00
rcourtman 5567fd1b80 Stabilize commercial activation continuity ownership 2026-04-09 08:07:34 +01:00
rcourtman 81f64edace Decouple monitored-system continuity capture from billing reads 2026-04-08 18:32:43 +01:00
rcourtman 10f1459d1a Preserve grandfathered monitored-system floors for v5 upgrades 2026-04-08 17:02:21 +01:00
rcourtman 94330b6787 Bound dev entitlements to runtime-enabled features 2026-03-26 22:38:29 +00:00
rcourtman b9dc003712 Align dev entitlements with feature gates 2026-03-26 22:19:15 +00:00
rcourtman 778a2577b6 feat: Pulse v6 release 2026-03-18 16:06:30 +00:00