{
  "assessment": {
    "all_ok": true,
    "decision": "PASS_STEP_046S2_VM100_PERIODIC_COMMIT_CONFIG_MODE_CANARY",
    "expected_absence": {
      "jobs_created": false,
      "selector_changed_final": false,
      "state_changed_final": false,
      "vm121_db_written": false,
      "wg_runtime_changed": false
    },
    "success_checks": {
      "after_commit_allowed_ip_count_stable": true,
      "after_commit_balanced": true,
      "after_commit_peer_count_stable": true,
      "commit_action_seen": true,
      "commit_json_seen": true,
      "commit_mode_seen": true,
      "commit_run_rc0_seen": true,
      "commit_selector_apply_seen": true,
      "commit_selector_update_seen": true,
      "commit_service_running": true,
      "commit_start_ok": true,
      "commit_state_write_seen": true,
      "commit_stop_ok": true,
      "config_file_installed": true,
      "db_enabled_peers_five": true,
      "db_lease_rows_five": true,
      "db_pending_zero": true,
      "dry_config_final": true,
      "dry_enable_ok": true,
      "dry_interval_final": true,
      "dry_start_ok": true,
      "enable_ok": true,
      "final_allowed_ip_count_five": true,
      "final_line_10_ok": true,
      "final_line_11_ok": true,
      "final_line_12_ok": true,
      "final_peer_count_five": true,
      "final_rows_five": true,
      "final_uci_zero": true,
      "imbalance_apply_ok": true,
      "imbalance_cs1_two": true,
      "imbalance_cs2_zero": true,
      "imbalance_rewrite_ok": true,
      "precheck_ok": true,
      "restore_apply_ok": true,
      "selector_restore_copy_ok": true,
      "selector_sha_restored": true,
      "service_enabled_final": true,
      "service_running_final": true,
      "state_action_count_after_commit_ok": true,
      "state_action_to_class_after_commit_ok": true,
      "state_restore_ok": true,
      "state_restored": true,
      "state_written_after_commit": true,
      "vm100_046s2_rc_zero": true,
      "vm121_db_safety_ok": true
    },
    "warnings": [
      "This step replaces env-driven service mode with explicit config-file mode.",
      "It intentionally runs periodic --commit for a short canary window against a temporary selector imbalance.",
      "After the canary window it restores selector/state and leaves the service enabled/running in --dry-run mode."
    ]
  },
  "changes": {
    "config_file_mode_installed": "YES",
    "final_service_mode": "DRY_RUN_ENABLED_RUNNING",
    "jobs_created": "NO",
    "periodic_commit_window_ran": "YES",
    "selector_apply_ran": "YES_COMMIT_AND_RESTORE",
    "state_file_temporarily_written": "YES_RESTORED",
    "temporary_selector_imbalance": "YES_RESTORED",
    "vm121_db_changed": "NO"
  },
  "db_summary": {
    "enabled_peers": 5,
    "forced_leases": 0,
    "lease_rows": 5,
    "pending_jobs": 0
  },
  "mode": "VM100_PERIODIC_COMMIT_CONFIG_FILE_MODE_CANARY_RESTORE_TO_DRYRUN",
  "publish": {
    "facts_json": "https://helena-background-beam-harry.trycloudflare.com/r/e94a0859747d7b96f29c7fdafc2d0351ba603bb0a7e9e5a4/20260710-115918_step046s2_vm100_periodic_commit_config_mode_canary/facts.json",
    "report_txt": "https://helena-background-beam-harry.trycloudflare.com/r/e94a0859747d7b96f29c7fdafc2d0351ba603bb0a7e9e5a4/20260710-115918_step046s2_vm100_periodic_commit_config_mode_canary/report.txt",
    "trycf_report": "https://helena-background-beam-harry.trycloudflare.com/r/e94a0859747d7b96f29c7fdafc2d0351ba603bb0a7e9e5a4/20260710-115918_step046s2_vm100_periodic_commit_config_mode_canary/"
  },
  "schema": "router-step-facts-v1",
  "step": "STEP_046S2_VM100_PERIODIC_COMMIT_CONFIG_MODE_CANARY",
  "summary": {
    "allowed_ip_count_final": "5",
    "class_cs1_after_commit": "1",
    "class_cs2_after_commit": "1",
    "conf": "/etc/router-wgpay-egress-local.conf",
    "conf_interval_final": "INTERVAL=30",
    "conf_mode_final": "MODE=--dry-run",
    "init_enabled_final": "true",
    "line_10_after_commit": "10.253.1.10 cs2 canary_vpn4",
    "line_10_final": "10.253.1.10 cs1 canary_vpn3",
    "line_11_after_commit": "10.253.1.11 cs1 canary_vpn3",
    "line_11_final": "10.253.1.11 cs2 canary_vpn4",
    "line_12_final": "10.253.1.12 cs3 canary_vpn5",
    "peer_count_final": "5",
    "rollback": "/root/rollback-step046s2-periodic-commit-config-20260710-115918.sh",
    "segment_action_count": 1,
    "segment_commit_json_count": 4,
    "segment_commit_mode_count": 5,
    "segment_run_rc0_count": 4,
    "segment_selector_apply_count": 1,
    "segment_selector_update_count": 1,
    "segment_state_write_count": 2,
    "selector_backup": "/root/step046s2-selector-20260710-115918.backup",
    "selector_sha_final": "2db1a0c46c1b93d9ede5f560d2d00db2dad3283adbc8f6ca6b0434ab695d8460",
    "selector_sha_pre": "2db1a0c46c1b93d9ede5f560d2d00db2dad3283adbc8f6ca6b0434ab695d8460",
    "service_running_final": "true",
    "state_action_ip_after_commit": "action_ip=10.253.1.10",
    "state_exists_after_commit": "true",
    "state_exists_final": "false",
    "state_exists_pre": "false",
    "state_restored": true,
    "state_sha_after_commit": "2288a15d8da11a4b3c0e85b253bc580bc931d3543d09abc5e5873ed3891b7af8",
    "state_sha_final": "none",
    "state_sha_pre": "none",
    "uci_peer_sections_final": "0"
  }
}
