enforced and the previous one is archived.
This keeps every change reviewable: the new version is tested in full before it takes effect, and the switch needs two approvers.
1
Read the live policy
Find the enforced policy with List policies and Save its
status=enforced, then fetch it with its rules.id as LIVE_POLICY_ID. Keep its rule list: it is the starting point for the new draft.2
Create the replacement draft
Create a new draft with Create draft policy. Copy the live rules into Use a new
rules with only the fields the create request takes: name, description, order, action_type, conditions, and action_config. Then make your change.For example, to lower the approval threshold from $10,000 to $5,000, change one condition value:Idempotency-Key for each new draft, for example one that includes a version number. Give the draft a name that says what changed. The name shows up in the approval request your quorum reviews.3
Compare old and new on the same requests
Run your regression cases against both policies. Pass
policy_id as LIVE_POLICY_ID for the current behavior, and as the new draft’s id for the proposed behavior. The cases whose results differ are the effect of your change. Check that they are the ones you intended and nothing else. See Keep a regression suite.For the threshold change above, a $7,500 transfer should go from approved on the live policy to awaiting_approval on the draft. A $500 and a $60,000 transfer should give the same result on both.4
Validate and activate
Run Validate stored draft policy on the draft, then Activate policy with a The live policy keeps being enforced, unchanged, until quorum approves the new one.
comment that summarizes the change and the test result.5
Confirm the switch
When you receive
policy.activated, or Get policy shows the new draft as enforced, dry-run your regression cases once more without policy_id. They should now match the draft’s results. The previous policy is archived.