@revturbine/sdk 0.11.20 → 0.11.22

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.
package/CHANGELOG.md CHANGED
@@ -47,6 +47,56 @@ also require a changelog entry.
47
47
 
48
48
  ---
49
49
 
50
+ ## 0.11.22
51
+
52
+ ### Message slots never show Fixed or Access Gate content (D-62)
53
+
54
+ **What changed.** Behaviour change in every port; no signature changes.
55
+
56
+ - A message slot (`<MessageSurfaceSlot>`, `surface_slot_category: triggered`)
57
+ shows only RT-initiated placements: usage/credit/seat and trial alerts,
58
+ conversion/expansion and retention nudges. 0.11.21 treated this as a
59
+ preference — Fixed content still rendered when no RT-initiated placement
60
+ qualified. Now the slot shows nothing in that case. Access Gate content was
61
+ already excluded (D-60).
62
+ - The filter judges by category tier, so every category spelling agrees.
63
+ - **Scaffold pin 0.1.409 → 0.1.411** (revturbine-scaffold #473; vendored `types.py` / `types.rs` refreshed).
64
+
65
+ **Landed in** 0.11.22. **Fail-closed in** 0.11.22.
66
+
67
+ **Proving tests.** D-62 blocks in scaffold `local-resolver.test.ts`, py
68
+ `TestMessageSlotsShowOnlyRtInitiated`, rs `d62_*` in `tests/static_resolver.rs`.
69
+
70
+ ## 0.11.21
71
+
72
+ ### `getPlacement` is a pure function of (user context, Playbook) (D-39, BL-0379)
73
+
74
+ **What changed.** Behaviour change in the browser SDK; no signature changes.
75
+
76
+ - **One decision path.** `getPlacement(config)` resolves the Playbook's
77
+ authored slot through the same decision path as `getPlacementDecision` and
78
+ the server SDKs' `get_placement` / `LocalRuntime.getPlacement`. 0.11.20 first
79
+ consulted a lane of previously decided or seeded outputs and ranked them with
80
+ a separate selection layer (category bucket, urgency, score), so it could
81
+ return a different placement than the decision path for the same user.
82
+ - **Always current.** Each call reflects the current user context; the only
83
+ caching is the decision path's own memo keyed by the request and context.
84
+ - **`getPlacementContent`** in local-only mode now decides through the same
85
+ path instead of reading seeded outputs.
86
+ - **Deprecated, ignored:** `localRuntime.initialData.placementsByLookupKey`
87
+ (warns once when supplied). Author placements in `localRuntime.playbook`, or
88
+ implement the `getPlacement` resolver for a custom source. The field, and
89
+ core's `resolveLocalPlacementFromCandidates` selection helper, are removed in
90
+ 0.12.0 (BL-0167).
91
+ - **Live design partner:** an integration that seeded placement outputs, or
92
+ relied on the old cached ranking, now sees the Playbook's decision.
93
+
94
+ **Landed in** 0.11.21. **Fail-closed in** 0.11.21.
95
+
96
+ **Proving tests.** `web-sdk/pure-getplacement.test.ts` (browser `getPlacement`
97
+ equals the server runtime for the same inputs; reflects a changed user
98
+ context; ignores seeded outputs); `web-sdk/customer-side-fixed-only.test.ts`.
99
+
50
100
  ## 0.11.20
51
101
 
52
102
  ### One entitlement answer for browser and server, with Entitlement Mirroring; Access Gates only fire while denied (D-60, D-61)
@@ -31522,6 +31522,11 @@ interface RevTurbineEventBatchingOptions {
31522
31522
  }
31523
31523
  interface RevTurbineLocalRuntimeData {
31524
31524
  placementDecisionsByPlacementId?: Record<string, RevTurbinePlacementDecision>;
31525
+ /**
31526
+ * @deprecated Ignored since 0.11.21 (D-39 / BL-0379): `getPlacement` is a
31527
+ * pure function of the user context and `localRuntime.playbook`, so
31528
+ * pre-decided outputs are never consulted. Removed in 0.12.0.
31529
+ */
31525
31530
  placementsByLookupKey?: Record<string, PlacementOutput | null>;
31526
31531
  entitlementByHandle?: Record<string, EntitlementResult>;
31527
31532
  userContextByUserId?: Record<string, UserTargetingContext>;
@@ -32299,7 +32304,6 @@ declare class RevTurbineCustomerSdk {
32299
32304
  private pendingConversionPlan?;
32300
32305
  private usageBalances;
32301
32306
  private localDecisionsByPlacementId;
32302
- private localPlacementsByLookupKey;
32303
32307
  private localEntitlementsByHandle;
32304
32308
  private localUserContextsByUserId;
32305
32309
  /**
@@ -32600,12 +32604,6 @@ declare class RevTurbineCustomerSdk {
32600
32604
  */
32601
32605
  private hasEndpointOverride;
32602
32606
  private endpointFor;
32603
- private localPlacementLookupKey;
32604
- private localLookupMatchesConfig;
32605
- private localOutputMatchesConfig;
32606
- private applyCategoryConflictSuppression;
32607
- private resolveLocalPlacementFromCandidates;
32608
- private localPlacementForConfig;
32609
32607
  /**
32610
32608
  * The `placement_slots[]` entry the loaded Playbook authors for a request.
32611
32609
  *