{
  "assessment": {
    "all_ok": true,
    "blockers": [],
    "decision": "PASS_STEP_046H_VM100_LOCAL_ONE_IDLE_SELECTOR_CHANGE",
    "expected_absence": {
      "jobs_created": false,
      "manual_agent_service_start_used": false,
      "private_material_published": false,
      "prototype_apply_preview_wrote_db": false,
      "real_apply_enabled": false,
      "timer_disabled": false,
      "vm100_final_selector_drift": false,
      "vm100_wg_peer_runtime_changed": false,
      "vm101_changed": false,
      "vm121_db_written": false
    },
    "success_checks": {
      "db_active_one": true,
      "db_enabled_peers_five": true,
      "db_forced_zero": true,
      "db_idle_four": true,
      "db_lease_rows_five": true,
      "db_pending_zero": true,
      "post_timer_enabled_active": true,
      "pre_timer_enabled_active": true,
      "prototype_apply_preview_no_write": true,
      "prototype_apply_preview_ok": true,
      "prototype_apply_preview_zero_actions": true,
      "prototype_apply_preview_zero_jobs": true,
      "prototype_apply_preview_zero_updates": true,
      "prototype_real_apply_refused": true,
      "prototype_rebalancer_dryrun_ok": true,
      "prototype_rebalancer_executable": true,
      "prototype_rebalancer_noop": true,
      "prototype_rows_all_have_peer_id": true,
      "prototype_sampler_executable": true,
      "prototype_sampler_post_ok": true,
      "prototype_sampler_post_rows_five": true,
      "prototype_sampler_post_selector_match_five": true,
      "public_index_rebuilt": true,
      "public_report_created": true,
      "router_ops_post_state_collected": true,
      "router_ops_pre_state_collected": true,
      "vm100_backup_ok": true,
      "vm100_change_apply_ok": true,
      "vm100_change_awk_ok": true,
      "vm100_change_mv_ok": true,
      "vm100_changed_line_expected": true,
      "vm100_changed_nft_contains_cs2": true,
      "vm100_changed_nft_contains_ip": true,
      "vm100_changed_sha_differs": true,
      "vm100_controlled_change_json_created": true,
      "vm100_controlled_change_ok": true,
      "vm100_controlled_change_raw_ok": true,
      "vm100_final_allowed_ip_count_five": true,
      "vm100_final_check_ok": true,
      "vm100_final_line_12_restored": true,
      "vm100_final_nft_contains_cs3": true,
      "vm100_final_peer_count_five": true,
      "vm100_final_selector_rows_five": true,
      "vm100_final_sha_matches_pre": true,
      "vm100_final_uci_peer_sections_zero": true,
      "vm100_post_line_expected": true,
      "vm100_post_nft_contains_cs3": true,
      "vm100_post_nft_contains_ip": true,
      "vm100_post_sha_matches_pre": true,
      "vm100_pre_backup_sha_match": true,
      "vm100_precheck_ok": true,
      "vm100_restore_apply_ok": true,
      "vm100_restore_copy_ok": true,
      "vm100_restore_ok": true,
      "vm100_rollback_script_ok": true,
      "vm100_wg_runtime_stable": true,
      "vm101_cs1_to_vpn3": true,
      "vm101_cs2_to_vpn4": true,
      "vm101_cs3_to_vpn5": true,
      "vm101_cs4_to_vpn1": true,
      "vm101_cs5_to_vpn2": true,
      "vm101_static_mapper_check_ok": true,
      "vm121_backend_admin_history_only": true,
      "vm121_not_dynamic_decision_owner": true,
      "vm121_not_selector_apply_owner": true,
      "vm121_pending_zero": true,
      "vm121_role_check_ok": true
    },
    "warnings": [
      "This step intentionally performs one transient real selector change and then restores the original balanced selector.",
      "A rollback script is created on VM100 before changing selector file.",
      "Final pass requires selector SHA restored, .12 restored to cs3/canary_vpn5, WG runtime stable, and no VM101/VM121 DB changes."
    ]
  },
  "changes": {
    "jobs_created": "NO",
    "manual_agent_service_start_used": "NO",
    "private_material_published": "NO",
    "router_ops_changed": "NO_READONLY_REPORT_ARTIFACT_ONLY",
    "vm100_final_selector_changed": "NO",
    "vm100_rollback_script_created": "YES",
    "vm100_selector_apply_run": "YES_CHANGE_AND_RESTORE",
    "vm100_selector_transiently_changed": "YES_RESTORED",
    "vm100_wg_peer_runtime_changed": "NO",
    "vm101_changed": "NO",
    "vm121_db_changed": "NO"
  },
  "db_summary": {
    "active_leases": 1,
    "enabled_peers": 5,
    "forced_leases": 0,
    "idle_leases": 4,
    "lease_rows": 5,
    "pending_jobs": 0
  },
  "mode": "VM100_CONTROLLED_ONE_IDLE_SELECTOR_CHANGE_AND_RESTORE",
  "prototype_apply_preview_summary": {
    "action_count": 0,
    "mode": "apply-preview-no-write",
    "would_create_jobs": 0,
    "would_update_lease_rows": 0
  },
  "prototype_rebalancer_summary": {
    "action_count": 0,
    "active_count": 1,
    "blocked": false,
    "forced_count": 0,
    "idle_count": 4,
    "lease_rows": 5,
    "noop": true,
    "selector_match_count": 5,
    "slot_seen_count": 5,
    "target_count": 5
  },
  "prototype_sampler_post_summary": {
    "active_by_new_delta_count": 0,
    "rows": 5,
    "rows_with_selector_match": 5,
    "rows_with_zero_delta": 5
  },
  "publish": {
    "local_report": "http://127.0.0.1:8099/r/e94a0859747d7b96f29c7fdafc2d0351ba603bb0a7e9e5a4/20260710-073826_step046h_vm100_local_one_idle_selector_change/",
    "public_index_rebuilt": true,
    "trycf_report": "https://helena-background-beam-harry.trycloudflare.com/r/e94a0859747d7b96f29c7fdafc2d0351ba603bb0a7e9e5a4/20260710-073826_step046h_vm100_local_one_idle_selector_change/"
  },
  "schema": "router-step-facts-v1",
  "step": "STEP_046H_VM100_LOCAL_ONE_IDLE_SELECTOR_CHANGE",
  "vm100_controlled_change_summary": {
    "backup_path": "/root/step046h-selector-20260710-073833.backup",
    "backup_rc": 0,
    "backup_sha256": "2db1a0c46c1b93d9ede5f560d2d00db2dad3283adbc8f6ca6b0434ab695d8460",
    "change_apply_rc": 0,
    "change_awk_rc": 0,
    "change_mv_rc": 0,
    "changed_allowed_ip_count": 5,
    "changed_line_12": "10.253.1.12 cs2 canary_vpn4",
    "changed_line_expected": true,
    "changed_nft_contains_cs2": true,
    "changed_nft_contains_target_ip": true,
    "changed_peer_count": 5,
    "changed_selector_sha256": "a4050ae41e421773172f3d603480896a2813937d949f233b70114c7fba55a44e",
    "changed_sha_differs_from_pre": true,
    "changed_uci_peer_sections": 0,
    "controlled_change_ok": true,
    "from_class": "cs3",
    "from_tag": "canary_vpn5",
    "mode": "vm100-controlled-one-idle-selector-change-and-restore",
    "post_allowed_ip_count": 5,
    "post_line_12": "10.253.1.12 cs3 canary_vpn5",
    "post_line_expected": true,
    "post_nft_contains_cs3": true,
    "post_nft_contains_target_ip": true,
    "post_peer_count": 5,
    "post_selector_sha256": "2db1a0c46c1b93d9ede5f560d2d00db2dad3283adbc8f6ca6b0434ab695d8460",
    "post_sha_matches_pre": true,
    "post_uci_peer_sections": 0,
    "pre_allowed_ip_count": 5,
    "pre_backup_sha_match": true,
    "pre_line_12": "10.253.1.12 cs3 canary_vpn5",
    "pre_line_expected": true,
    "pre_peer_count": 5,
    "pre_selector_sha256": "2db1a0c46c1b93d9ede5f560d2d00db2dad3283adbc8f6ca6b0434ab695d8460",
    "pre_uci_peer_sections": 0,
    "precheck_ok": true,
    "restore_apply_rc": 0,
    "restore_copy_rc": 0,
    "restore_ok": true,
    "rollback_script": "/root/rollback-step046h-selector-20260710-073833.sh",
    "rollback_script_rc": 0,
    "selector_apply_run": true,
    "selector_restored": true,
    "selector_transiently_changed": true,
    "target_ip": "10.253.1.12",
    "to_class": "cs2",
    "to_tag": "canary_vpn4",
    "wg_runtime_stable": true
  },
  "vm121_db_summary": {
    "active_leases": 1,
    "enabled_peers": 5,
    "forced_leases": 0,
    "idle_leases": 4,
    "lease_rows": 5,
    "pending_jobs": 0
  }
}
