platform-types 1.10.707 → 1.10.708

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -845,63 +845,22 @@ export interface TenantBillingRollupRow {
845
845
  historyError?: TenantBillingHistoryError;
846
846
  }
847
847
  /**
848
- * Why a plan's marketing copy disagrees with the entitlements actually backing
849
- * that tier. Advisory only — `PATCH /platform/billing/plans/{tier}` reports
850
- * these and still applies the write. It never blocks: plan copy is hand-tuned
851
- * between pricing decisions, so a mismatch is routinely the intended
852
- * intermediate state rather than an error. The entitlements themselves come
853
- * from the code matrix; that route refuses `features`.
854
- *
855
- * - `NUMERIC_MISMATCH` — a bullet advertises a number that differs from the
856
- * numeric entitlement it maps to.
857
- * - `UNLIMITED_ADVERTISED_AS_CAPPED` — the entitlement is `-1` (unlimited) but
858
- * the copy advertises a finite cap. Reported separately because the equality
859
- * compare would otherwise render it as a nonsense mismatch against `-1`.
860
- * - `UNBACKED_CAPABILITY` — the copy names a capability the tier does not have
861
- * `status: 'live'` and `enabled: true` for.
862
- * - `MISSING_FEATURE_ROW` — a bullet states a LIMIT for an entitlement the tier
863
- * has no row for at all. Distinct from `UNBACKED_CAPABILITY` on purpose: that
864
- * one means "the row exists but is not live/enabled in the matrix", whereas
865
- * this one means the supplied catalogue lacks the backing row — a template
866
- * PATCH cannot add it; the repair is the copy or a matrix change. Collapsing
867
- * them (as the API briefly did) hides the more severe of the two behind the
868
- * more common one.
848
+ * @deprecated Nothing produces one any more. The copy↔entitlement consistency
849
+ * check went with the free-text plan copy it checked, so the `warnings` array
850
+ * on the `POST` / `PATCH /platform/billing/plans` replies is ALWAYS empty. The
851
+ * type stays only so a consumer still naming it compiles; it will be removed
852
+ * together with that array.
869
853
  */
870
854
  export type CatalogWarningCode = 'NUMERIC_MISMATCH' | 'UNLIMITED_ADVERTISED_AS_CAPPED' | 'UNBACKED_CAPABILITY' | 'MISSING_FEATURE_ROW';
871
855
  /**
872
- * One disagreement between a plan's copy and its entitlements, or between the
873
- * declared feature catalog and a tier's stored rows.
874
- *
875
- * ⚠️ Absence of a warning is NOT a claim that the copy is correct. The matcher
876
- * pairs a bullet to a feature only on a single unambiguous keyword; a bullet
877
- * matching two keywords or none is skipped rather than guessed, so it
878
- * deliberately understates. Reading an empty array as "this tier's copy is
879
- * verified" inverts that design.
880
- *
881
- * ⚠️ That understatement had a second, larger hole: every check used to be
882
- * COPY-DRIVEN, so a declared feature key that no bullet happened to mention
883
- * could be missing its row on every tier and warn nothing. That is not
884
- * hypothetical — `storefront` was absent from all four production tiers, had no
885
- * marketing bullet, and therefore produced an empty `warnings` array while the
886
- * feature was locked for every tenant. `source: 'catalog'` exists so a check can
887
- * be driven by the declared key set instead of by what the copy happens to name.
856
+ * @deprecated See {@link CatalogWarningCode} — no writer emits one; the
857
+ * `warnings` array that carried it is always empty.
888
858
  */
889
859
  export interface CatalogWarning {
890
860
  code: CatalogWarningCode;
891
- /**
892
- * What produced it — one of the `bullets`, the `description`, or `'catalog'`
893
- * for a check driven by the declared feature key set rather than by copy.
894
- */
895
861
  source: 'bullets' | 'description' | 'catalog';
896
- /**
897
- * The offending bullet, or the description, verbatim. For `source:
898
- * 'catalog'` there is no copy to quote — it carries the tier that was
899
- * examined, which is the equivalent "what was checked" value.
900
- */
901
862
  text: string;
902
- /** The entitlement the copy was checked against. */
903
863
  featureKey: FeatureKey;
904
- /** Human-readable, already safe to render as-is. */
905
864
  message: string;
906
865
  }
907
866
  /**
@@ -314,11 +314,11 @@ declare global {
314
314
  */
315
315
  features: PlanFeature[];
316
316
  /**
317
- * Marketing-curated short bullets for the pricing card. Display order =
318
- * array order; up to 6 entries, 80 chars each. Always present — empty array
319
- * when unset (FE synthesizes a list from `features[]`). Lets marketing tweak
320
- * copy via `PATCH /platform/billing/plans/{tier}` without a redeploy;
321
- * replaces the FE-only `BULLET_LIST_BY_TIER`.
317
+ * @deprecated ALWAYS `[]`. The free-text card copy was retired: a plan
318
+ * card renders {@link Plan.highlights} instead, and no write accepts
319
+ * `bullets` any more (`POST`/`PATCH /platform/billing/plans` answer 400
320
+ * `VALIDATION_FAILED`). A value an old row still stores is ignored, never
321
+ * echoed. The key will be removed once the app's copy editor is gone.
322
322
  */
323
323
  bullets: string[];
324
324
  /**
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "platform-types",
3
- "version": "1.10.707",
3
+ "version": "1.10.708",
4
4
  "description": "Shared wire and entity contracts for the platform.",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",