From bbf6bb468bd43e425f06a96b85dc3e012f5b4c8d Mon Sep 17 00:00:00 2001 From: rcourtman Date: Wed, 15 Apr 2026 11:08:36 +0100 Subject: [PATCH] Govern cutover preview under cloud-paid --- .../release-control/v6/internal/subsystems/cloud-paid.md | 4 ++++ .../release-control/v6/internal/subsystems/registry.json | 9 ++++++--- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/docs/release-control/v6/internal/subsystems/cloud-paid.md b/docs/release-control/v6/internal/subsystems/cloud-paid.md index 112b3ca5d..24db7e402 100644 --- a/docs/release-control/v6/internal/subsystems/cloud-paid.md +++ b/docs/release-control/v6/internal/subsystems/cloud-paid.md @@ -110,6 +110,10 @@ renewals, manual issue, and legacy exchange flows are part of that same cloud-paid continuity boundary as well. Those flows must resolve grandfathered recurring continuity from explicit active pre-cutover state, not from bare legacy plan IDs, stale historical tokens, or issue timestamps alone. +The canonical operator preview for that cutover now lives in +`pulse-pro/scripts/grandfathered_recurring_cutover_preview.py`, and it must use +the same active-at-snapshot rule as the live server before anyone sets +`PULSE_LICENSE_GRANDFATHERED_RECURRING_SNAPSHOT_AT`. ## Extension Points diff --git a/docs/release-control/v6/internal/subsystems/registry.json b/docs/release-control/v6/internal/subsystems/registry.json index ba0de5b61..7d86d8469 100644 --- a/docs/release-control/v6/internal/subsystems/registry.json +++ b/docs/release-control/v6/internal/subsystems/registry.json @@ -1724,7 +1724,8 @@ "pulse-pro:license-server/v6_handlers.go", "pulse-pro:scripts/audit_v6_preview_demo.sh", "pulse-pro:scripts/audit_v6_preview_demo_browser.cjs", - "pulse-pro:scripts/bootstrap-v6-demo-preview.sh" + "pulse-pro:scripts/bootstrap-v6-demo-preview.sh", + "pulse-pro:scripts/grandfathered_recurring_cutover_preview.py" ], "verification": { "allow_same_subsystem_tests": true, @@ -2333,13 +2334,15 @@ "match_files": [ "pulse-pro:license-server/grandfathering.go", "pulse-pro:license-server/main.go", - "pulse-pro:license-server/v6_handlers.go" + "pulse-pro:license-server/v6_handlers.go", + "pulse-pro:scripts/grandfathered_recurring_cutover_preview.py" ], "allow_same_subsystem_tests": false, "test_prefixes": [], "exact_files": [ "pulse-pro:license-server/grandfathering_test.go", - "pulse-pro:license-server/main_test.go" + "pulse-pro:license-server/main_test.go", + "pulse-pro:scripts/tests/test_grandfathered_recurring_cutover_preview.py" ] }, {