Rename hosted capacity marker copy

This commit is contained in:
rcourtman
2026-04-29 00:07:18 +01:00
parent f30f9e7a81
commit 08fef313eb
7 changed files with 19 additions and 10 deletions
+1 -1
View File
@@ -31,7 +31,7 @@ For organisations that need multi-tenant management:
|---|---|
| Multi-Tenant Mode | `multi_tenant` |
| Multi-User Mode | `multi_user` |
| Unlimited Instances | `unlimited` |
| Hosted Capacity Policy | `unlimited` |
See [Plans & Entitlements](PULSE_PRO.md) for the full feature matrix.
@@ -533,6 +533,12 @@ Community limit enforcement.
entitlement refresh paths may preserve historical billing fields for old
state, but new trial or hosted workspaces must not mint quickstart credits
or imply a managed-model allowance as part of the commercial contract.
18. Keep the `unlimited` feature key neutral in shared metadata. It is a
hosted/MSP capacity-policy marker, not a self-hosted monitoring-volume
product promise. Runtime and generated feature catalogs must label it as
hosted capacity policy, keep it hidden from self-hosted plan cards, and
avoid customer-facing "Unlimited Instances" copy that sounds like the old
capped self-hosted packaging.
## Current State
@@ -1787,7 +1793,10 @@ The same runtime-readiness rule also excludes placeholder and plan-marker
entries like `white_label`, `multi_user`, and `unlimited` from dev/demo
entitlement payloads when there is no corresponding operable runtime surface;
those belong in tier metadata and plan semantics, not in live capability
advertising for a free dev shell.
advertising for a free dev shell. The `unlimited` feature key is a hosted/MSP
capacity-policy marker and must use neutral hosted-capacity wording in shared
metadata rather than customer-facing "Unlimited Instances" copy that implies a
self-hosted monitoring-volume tier.
The same distinction applies to customer-facing self-hosted billing
presentation. `frontend-modern/src/components/Settings/useProLicensePanelState.ts`
and `frontend-modern/src/utils/licensePresentation.ts` may label operable
@@ -335,8 +335,8 @@ export const SELF_HOSTED_FEATURE_CATALOG: readonly GeneratedSelfHostedFeatureCat
},
{
"key": "unlimited",
"displayName": "Unlimited Instances",
"comparisonName": "Unlimited Instances",
"displayName": "Hosted Capacity Policy",
"comparisonName": "Hosted Capacity Policy",
"showInComparisonTable": false,
"displayableInSelfHostedPlan": false,
"roles": {
+1 -1
View File
@@ -86,7 +86,7 @@ func TestGetFeatureDisplayNameCoversKnownFeaturesAndFallback(t *testing.T) {
{feature: FeatureMultiUser, want: "Multi-User Mode"},
{feature: FeatureWhiteLabel, want: "White-Label Branding"},
{feature: FeatureMultiTenant, want: "Multi-Tenant Mode"},
{feature: FeatureUnlimited, want: "Unlimited Instances"},
{feature: FeatureUnlimited, want: "Hosted Capacity Policy"},
{feature: FeatureAgentProfiles, want: "Centralized Agent Profiles"},
{feature: FeatureAuditLogging, want: "Audit Logging"},
{feature: FeatureSSO, want: "Basic SSO (OIDC)"},
+2 -2
View File
@@ -38,7 +38,7 @@ const (
FeatureMultiUser = "multi_user" // Multi-user (likely merged with RBAC)
FeatureWhiteLabel = "white_label" // Custom branding - NOT IMPLEMENTED YET
FeatureMultiTenant = "multi_tenant" // Multi-tenant organizations
FeatureUnlimited = "unlimited" // Unlimited instances (for MSP/volume deals)
FeatureUnlimited = "unlimited" // Hosted capacity policy marker for MSP/enterprise deals
// Internal-only runtime capabilities. These must never be added to public
// tier defaults or public pricing contracts.
@@ -297,7 +297,7 @@ var proFeatures = appendFeatures(relayFeatures,
FeatureAdvancedReporting,
)
// mspFeatures adds multi-tenant and unlimited on top of pro.
// mspFeatures adds multi-tenant and hosted capacity policy on top of pro.
var mspFeatures = appendFeatures(proFeatures,
FeatureUnlimited,
FeatureMultiTenant,
+1 -1
View File
@@ -231,7 +231,7 @@ func TestGetFeatureDisplayName(t *testing.T) {
{FeatureMultiUser, "Multi-User Mode"},
{FeatureWhiteLabel, "White-Label Branding"},
{FeatureMultiTenant, "Multi-Tenant Mode"},
{FeatureUnlimited, "Unlimited Instances"},
{FeatureUnlimited, "Hosted Capacity Policy"},
{FeatureAgentProfiles, "Centralized Agent Profiles"},
{FeatureAuditLogging, "Audit Logging"},
{FeatureSSO, "Basic SSO (OIDC)"},
+2 -2
View File
@@ -290,8 +290,8 @@ var featureMetadataCatalog = map[string]FeatureMetadata{
},
FeatureUnlimited: {
Key: FeatureUnlimited,
DisplayName: "Unlimited Instances",
ComparisonName: "Unlimited Instances",
DisplayName: "Hosted Capacity Policy",
ComparisonName: "Hosted Capacity Policy",
DisplayableInPlanUI: false,
SelfHostedRoles: SelfHostedFeatureRoles{
Community: SelfHostedFeatureRoleHidden,