Commit Graph

33 Commits

Author SHA1 Message Date
rcourtman ae4162f8f2 Enforce installation-scoped license invalidation 2026-07-14 16:18:21 +01:00
rcourtman 8355335e08 Clarify v5 migration recovery states 2026-07-07 21:46:07 +01:00
rcourtman 9bcff2983d Clarify missing license public key activation error 2026-06-26 13:00:42 +01:00
rcourtman f9b10316b8 fix(licensing): surface unreadable persisted v5 licenses and retry failed startup exchanges
Two silent-downgrade paths in the v5→v6 migration are now visible and
self-healing:

License load/decrypt failure (was: one log line, no UI state): when
license.enc exists but cannot be read, getTenantComponents now persists
a terminal commercial_migration state with reason
persisted_license_unreadable, so the licence panel and global banner
tell the customer to re-enter their v5 key instead of leaving them to
discover missing Pro features.

Failed startup exchange (was: once per process, Community until manual
restart): exchange failures classified as pending — license-server
blips, DNS failures, rate limits — now schedule a background retry loop
with backoff (30s → 30m cap) that re-attempts the exchange until it
succeeds, hits a terminal classification, or the org's service activates
through another path. The loop stops cleanly on manual activation and
StopAllBackgroundLoops.

Registers the new files in the subsystem registry (cloud-paid
commercial-migration verification policy + shared ownership) and pins
both behaviors in the cloud-paid and api-contracts contracts.
2026-06-11 08:44:35 +01:00
rcourtman faefe6edc8 Remove 198 unreachable Go functions
Dead-code sweep. Functions flagged unreachable by golang.org/x/tools/cmd/deadcode
and confirmed unused across pulse, pulse-enterprise, pulse-pro and pulse-mobile by
adversarial cross-repo verification. Cross-module reachability was checked
explicitly (only pkg/ exported symbols are importable by other modules; internal/
packages and _test.go files are not). go build, go vet and test-compile all pass.
2026-06-03 12:29:37 +01:00
rcourtman 86244d8c13 Track runtime build in license activation 2026-05-06 23:45:37 +01:00
rcourtman b84fc2301a Surface paid runtime mismatch in licensing 2026-05-06 17:18:35 +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 99129d0c09 Retire product upgrade metrics runtime
Remove local upgrade-metrics API registration, settings payload wiring, startup store migration, and backend conversion recorder hooks from the normal product runtime.

Delete the retired conversion/funnel and metering packages from compiled licensing code, and extend diagnostics boundary audits and governance contracts so maintainer commercial analytics cannot return through Settings or diagnostics.
2026-04-30 12:24:22 +01:00
rcourtman cc26f59f01 Retire self-hosted trial activation callback 2026-04-28 16:36:09 +01:00
rcourtman 0b52968cd0 Retire self-hosted trial start route 2026-04-28 15:05:58 +01:00
rcourtman 48e4ec818c Make self-hosted settings plan-owned 2026-04-22 19:49:50 +01:00
rcourtman 8a42bb432e Harden commercial callback and transport URL policy 2026-04-22 10:57:21 +01:00
rcourtman 1bc08f3bc1 Canonicalize self-hosted purchase handoff intent
Refs #1409
2026-04-16 10:17:37 +01:00
rcourtman 429f12decd Recover unavailable Pulse Account handoffs 2026-04-15 10:09:00 +01:00
rcourtman 7cac04e2ff Track v6 install version through licensing runtime 2026-04-14 11:44:59 +01:00
rcourtman 1e28a03b57 Stabilize rc1 mock mode and metrics history 2026-04-11 16:47:37 +01:00
rcourtman b846d66fd0 Gate release mock fixtures behind demo entitlement 2026-04-10 12:33:57 +01:00
rcourtman 5edd2ad53a Persist self-hosted purchase redemption records 2026-04-08 20:42:36 +01:00
rcourtman 9e83d0862d Tighten self-hosted purchase return binding 2026-04-08 20:21:36 +01:00
rcourtman 7c8fddd9f0 Retire legacy self-hosted checkout compatibility paths 2026-04-08 19:01:22 +01:00
rcourtman 81f64edace Decouple monitored-system continuity capture from billing reads 2026-04-08 18:32:43 +01:00
rcourtman 1649faa75d Use opaque Pulse Account handoffs for self-hosted upgrades 2026-04-08 17:24:35 +01:00
rcourtman 10f1459d1a Preserve grandfathered monitored-system floors for v5 upgrades 2026-04-08 17:02:21 +01:00
rcourtman 8c004f9a4c Use opaque checkout intents for self-hosted upgrade returns 2026-04-07 19:45:20 +01:00
rcourtman b402563ef1 Make self-hosted checkout return server-owned and recovery-only 2026-04-07 18:56:27 +01:00
rcourtman c4f4a67f6c Tighten self-hosted checkout handoff and auto-return 2026-04-07 18:12:47 +01:00
rcourtman cc5ee2e24c Split commercial posture from billing entitlements 2026-04-07 13:24:55 +01:00
rcourtman f8ad57a1f2 Split runtime capabilities from commercial entitlements 2026-04-07 11:40:57 +01:00
rcourtman 0c1fafa800 Centralize demo commercial boundary policy 2026-04-07 10:24:53 +01:00
rcourtman 4e4c1b368b Prepare v6 demo mode commercial boundary 2026-04-06 10:53:07 +01:00
rcourtman 57cc71fa0b fix(trial): align retry-after and hosted signup flows 2026-03-27 12:04:44 +00:00
rcourtman 778a2577b6 feat: Pulse v6 release 2026-03-18 16:06:30 +00:00