{
  "assessment": {
    "all_ok": false,
    "decision": "STOP_STEP_046R_VM100_LOCAL_CONTROLLER_ENABLE_DRYRUN_PERIODIC",
    "expected_absence": {
      "jobs_created": false,
      "selector_changed": false,
      "state_changed": false,
      "vm121_db_written": false,
      "wg_runtime_changed": false
    },
    "success_checks": {
      "db_enabled_peers_five": true,
      "db_lease_rows_five": true,
      "db_pending_zero": true,
      "dryrun_action0_seen": true,
      "dryrun_noop_seen": true,
      "dryrun_schema_seen": true,
      "enable_rc_zero": 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_uci_zero": true,
      "log_grew": true,
      "precheck_ok": true,
      "run_count_at_least_two": false,
      "selector_rows_final_five": true,
      "selector_sha_unchanged": true,
      "service_enabled_after": true,
      "service_enabled_final": true,
      "service_running_after": true,
      "service_running_final": true,
      "start_rc_zero": true,
      "state_unchanged": true,
      "vm100_046r_rc_zero": true,
      "vm121_db_safety_ok": true
    },
    "warnings": [
      "This step intentionally leaves the periodic dry-run loop enabled and running.",
      "Loop mode is --dry-run; no selector/state/WG changes are expected.",
      "VM121 DB is read-only and no jobs are created."
    ]
  },
  "changes": {
    "jobs_created": "NO",
    "periodic_dryrun_enabled": "YES",
    "periodic_dryrun_running": "YES",
    "selector_changed": "NO",
    "state_changed": "NO",
    "vm100_init_procd_wrapper_installed": "YES",
    "vm100_loop_script_installed": "YES",
    "vm121_db_changed": "NO",
    "wg_runtime_changed": "NO"
  },
  "db_summary": {
    "enabled_peers": 5,
    "forced_leases": 0,
    "lease_rows": 5,
    "pending_jobs": 0
  },
  "mode": "VM100_PERIODIC_DRYRUN_LOOP_ENABLED_RUNNING",
  "publish": {
    "facts_json": "https://helena-background-beam-harry.trycloudflare.com/r/e94a0859747d7b96f29c7fdafc2d0351ba603bb0a7e9e5a4/20260710-114749_step046r_vm100_enable_periodic_dryrun/facts.json",
    "report_txt": "https://helena-background-beam-harry.trycloudflare.com/r/e94a0859747d7b96f29c7fdafc2d0351ba603bb0a7e9e5a4/20260710-114749_step046r_vm100_enable_periodic_dryrun/report.txt",
    "trycf_report": "https://helena-background-beam-harry.trycloudflare.com/r/e94a0859747d7b96f29c7fdafc2d0351ba603bb0a7e9e5a4/20260710-114749_step046r_vm100_enable_periodic_dryrun/"
  },
  "schema": "router-step-facts-v1",
  "step": "STEP_046R_VM100_LOCAL_CONTROLLER_ENABLE_DRYRUN_PERIODIC",
  "summary": {
    "allowed_ip_count_final": "5",
    "dryrun_action0_count_tail": 2,
    "dryrun_noop_count_tail": 2,
    "dryrun_schema_count_tail": 1,
    "enable_rc": "0",
    "init": "/etc/init.d/router-wgpay-egress-local",
    "init_enabled_final": "true",
    "init_sha256": "8f9ce8e0c9118b11bf65a449b4e181f44832034caf97bcc996da066891ebd386",
    "line_10_final": "10.253.1.10 cs1 canary_vpn3",
    "line_11_final": "10.253.1.11 cs2 canary_vpn4",
    "line_12_final": "10.253.1.12 cs3 canary_vpn5",
    "log_grew": "true",
    "loop": "/usr/local/sbin/router-wgpay-egress-local-loop.sh",
    "loop_sha256": "301c5fe4931707bc768b510f80df2e705d5230e36b2fe2214994edf11c5d6896",
    "peer_count_final": "5",
    "rollback": "/root/rollback-step046r-periodic-dryrun-20260710-114749.sh",
    "run_count_tail": 1,
    "script": "/usr/local/sbin/router-wgpay-egress-local.sh",
    "script_sha256": "24fd978af369fdcab9f7760553bd312b1f02bd41a2fcc1c3daa197572acdbc92",
    "selector_sha_final": "2db1a0c46c1b93d9ede5f560d2d00db2dad3283adbc8f6ca6b0434ab695d8460",
    "selector_sha_pre": "2db1a0c46c1b93d9ede5f560d2d00db2dad3283adbc8f6ca6b0434ab695d8460",
    "service_running_final": "true",
    "start_rc": "0",
    "state_exists_final": "false",
    "state_exists_pre": "false",
    "state_sha_final": "none",
    "state_sha_pre": "none",
    "state_unchanged": true,
    "uci_peer_sections_final": "0"
  }
}
