@revturbine/sdk 0.10.5 → 0.10.6

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,48 @@ also require a changelog entry.
47
47
 
48
48
  ---
49
49
 
50
+ ## 0.10.6
51
+
52
+ ### The trial-status PlanProvider overlay ships in the Rust crate (BL-0153)
53
+
54
+ **What changed.** `revturbine::overlay_trial_status_on_plan_provider` is a new
55
+ public function on the Rust crate: it maps a runtime `UserTrialStatus` onto the
56
+ `trial_*` fields of a resolved PlanProviderState, the fields the placement
57
+ resolver's `trial_progress` / `trial_ending` / `trial_ended` /
58
+ `trial_converted` gates and milestone supersession read. Python has always done
59
+ this inside its shipped package
60
+ (`revturbine.sdk._overlay_trial_status_on_plan_provider`); on Rust the mapping
61
+ existed only as a private helper the facade used, so a host that assembles its
62
+ own provider context — including this repo's own parity runner — had to
63
+ re-implement it. Additive: no existing signature changed.
64
+
65
+ Porting Python's mapping faithfully corrected two Rust-only divergences in the
66
+ overlay the facade applies:
67
+
68
+ | `UserTrialStatus` field | Rust before | Rust now (= TS/Python) |
69
+ |---|---|---|
70
+ | `day_number` + `days_remaining` | not derived | `trial_days_total = day_number + days_remaining`, only when both are present |
71
+ | `day_number` | written to `trial_day_number` | not written — no provider-state field reads it |
72
+ | `usage_entitlement_handle` | dropped | `trial_usage_entitlement_handle` |
73
+
74
+ `trial_days_total` is the input to the time-mode progress fallback in
75
+ `placements::trial_gating`, so before this the fallback could never fire on the
76
+ Rust port.
77
+
78
+ **Landed in.** `0.10.6`.
79
+
80
+ **Fail-closed in.** `0.10.6` — the parity facade-presence gate
81
+ (`tests/parity/facade-surface.json`) no longer allow-lists a runner-local
82
+ overlay, so a future re-implementation harness-side fails the gate.
83
+
84
+ **Proving test.** `server-rust/src/sdk.rs` `overlay_maps_every_canonical_trial_field`,
85
+ `trial_days_total_requires_both_halves`, `overlay_does_not_clobber_base_state_with_null`
86
+ (mirroring `server-python/tests/test_trial_overlay_upsert.py`), plus the
87
+ `trial_ending_days_before_end`, `trial_ended_post_expiry` and
88
+ `trial_progress_milestone_supersession` parity fixtures.
89
+
90
+ ---
91
+
50
92
  ## 0.10.5
51
93
 
52
94
  ### Trial-only local integrations get provider context (BL-0120)