{
  "assessment": {
    "all_ok": true,
    "report_success_checks": {
      "admin_py_compile_container_ok": true,
      "admin_py_compile_host_ok": true,
      "admin_restored_from_good_backup": true,
      "agent_invocation_observed_after_trigger": true,
      "backend_container_can_write_trigger": true,
      "backend_health_ok": true,
      "backend_openapi_ok": true,
      "backend_restart_ok": true,
      "helper_file_installed": true,
      "manual_agent_service_start_not_used": true,
      "path_unit_active": true,
      "path_unit_enabled": true,
      "pending_global_zero_after": true,
      "private_material_not_published": true,
      "trigger_dir_exists": true,
      "trigger_file_exists": true,
      "trigger_write_from_container_ok": true,
      "vm100_peer_count_still_five": true,
      "vm100_selector_count_still_five": true,
      "vm100_uci_still_empty": true,
      "vm101_legacy_table200_vpn1_still_ok": true,
      "vm101_table202_vpn2_still_ok": true
    }
  },
  "changes": {
    "agent_service_started_manually": "NO",
    "agent_started_by_path_trigger": "YES",
    "backend_code_changed": "YES",
    "backend_restarted": "YES",
    "private_material_published": "NO",
    "systemd_path_unit_changed": "YES",
    "vm100_changed": "NO",
    "vm101_changed": "NO",
    "vm121_changed": "YES"
  },
  "current_state_quick": {
    "vm100_peer_count": 5,
    "vm100_selector_count": 5,
    "vm100_uci_wireguard_wg_paid_section_count": 0,
    "vm101_legacy_table200_vpn1_rc": 0,
    "vm101_table202_vpn2_rc": 0
  },
  "implementation": {
    "actions": {
      "admin_patched_cleanly": true,
      "admin_restored_from_042c_backup": "/opt/wg-access/backups/STEP_042C_AGENT_EVENT_TRIGGER_FILE_PATH_IMPLEMENT_20260709-095315/admin.py",
      "backup_root": "/opt/wg-access/backups/STEP_042C2_RECOVER_REAPPLY_EVENT_TRIGGER_CLEAN_20260709-095639",
      "docker_restart_backend": {
        "rc": 0,
        "stderr": "",
        "stdout": "wgaccess-backend"
      },
      "systemctl_daemon_reload": {
        "rc": 0,
        "stderr": "",
        "stdout": ""
      },
      "systemctl_enable_path": {
        "rc": 0,
        "stderr": "",
        "stdout": ""
      },
      "systemctl_restart_path": {
        "rc": 0,
        "stderr": "",
        "stdout": ""
      }
    },
    "assessment": {
      "all_ok": true,
      "ready_for_042D_reconcile": true,
      "success_checks": {
        "admin_py_compile_container_ok": true,
        "admin_py_compile_host_ok": true,
        "admin_restored_from_good_backup": true,
        "agent_invocation_observed_after_trigger": true,
        "backend_container_can_write_trigger": true,
        "backend_health_ok": true,
        "backend_openapi_ok": true,
        "backend_restart_ok": true,
        "helper_file_installed": true,
        "manual_agent_service_start_not_used": true,
        "path_unit_active": true,
        "path_unit_enabled": true,
        "pending_global_zero_after": true,
        "private_material_not_published": true,
        "trigger_dir_exists": true,
        "trigger_file_exists": true,
        "trigger_write_from_container_ok": true
      }
    },
    "changes": {
      "agent_service_started_manually": "NO",
      "agent_started_by_path_trigger": "YES",
      "backend_code_changed": "YES",
      "backend_restarted": "YES",
      "private_material_published": "NO",
      "systemd_path_unit_changed": "YES",
      "vm100_changed": "NO",
      "vm101_changed": "NO",
      "vm121_changed": "YES"
    },
    "errors": [],
    "mode": "RECOVER_BACKEND_SOURCE_AND_REAPPLY_EVENT_TRIGGER",
    "precheck": {
      "admin_exists": true,
      "backend_container": "wgaccess-backend",
      "compile_host_before": {
        "rc": 1,
        "stderr": "File \"/opt/wg-access/backend/app/api/admin.py\", line 18\n    def _trigger_wg_access_agent_best_effort() -> None:\n    ^^^\nSyntaxError: invalid syntax",
        "stdout": ""
      },
      "helper_exists_before": false,
      "pending_global_before": 0,
      "service_unit_exists": true,
      "source_backup": "/opt/wg-access/backups/STEP_042C_AGENT_EVENT_TRIGGER_FILE_PATH_IMPLEMENT_20260709-095315/admin.py"
    },
    "rollback": {
      "script": "/root/rollback-step042c2-recover-reapply-20260709-095639.sh"
    },
    "schema": "router-step-facts-v1",
    "step": "STEP_042C2_RECOVER_REAPPLY_EVENT_TRIGGER_CLEAN",
    "validation": {
      "agent_journal_recent": "Jul 09 09:56:40 wg-access-dev systemd[1]: Starting wg-access-agent.service - WG Access Agent real poller...\nJul 09 09:56:41 wg-access-dev wg_access_agent.py[127545]: [2026-07-09T09:56:41.221518+00:00] sync desired enabled peers: 5\nJul 09 09:56:41 wg-access-dev wg_access_agent.py[127545]: [2026-07-09T09:56:41.442021+00:00] remote stdout: fmcqSUy1fErBV5RrcoVoex2VAgaxz2i79GzK8qd88UI=        10.253.1.10/32\nJul 09 09:56:41 wg-access-dev wg_access_agent.py[127545]: zwzkWJkpX7q5PfcT9pG2v52Es4yM0VRP3w1drj7LJmw=        10.253.1.11/32\nJul 09 09:56:41 wg-access-dev wg_access_agent.py[127545]: HknQ+VpqOIvsd3RxkrgaUqiR7zkS9nMfDRzDAvdqUVw=        10.253.1.12/32\nJul 09 09:56:41 wg-access-dev wg_access_agent.py[127545]: JQXornv9vzH7nn9E1laZehYLnwMXuitP+eP35Gde0D4=        10.253.1.13/32\nJul 09 09:56:41 wg-access-dev wg_access_agent.py[127545]: Kl5Ox5HbG4yvDUxkRuoyZmAF3Wx5HW0lHbVS9B0vFXM=        10.253.1.14/32\nJul 09 09:56:41 wg-access-dev wg_access_agent.py[127545]: [2026-07-09T09:56:41.442131+00:00] sync current runtime peers: 5\nJul 09 09:56:41 wg-access-dev wg_access_agent.py[127545]: [2026-07-09T09:56:41.442217+00:00] sync keep peer tunnel_ip=10.253.1.10\nJul 09 09:56:41 wg-access-dev wg_access_agent.py[127545]: [2026-07-09T09:56:41.442276+00:00] sync keep peer tunnel_ip=10.253.1.11\nJul 09 09:56:41 wg-access-dev wg_access_agent.py[127545]: [2026-07-09T09:56:41.442330+00:00] sync keep peer tunnel_ip=10.253.1.12\nJul 09 09:56:41 wg-access-dev wg_access_agent.py[127545]: [2026-07-09T09:56:41.442380+00:00] sync keep peer tunnel_ip=10.253.1.13\nJul 09 09:56:41 wg-access-dev wg_access_agent.py[127545]: [2026-07-09T09:56:41.442436+00:00] sync keep peer tunnel_ip=10.253.1.14\nJul 09 09:56:41 wg-access-dev wg_access_agent.py[127545]: [2026-07-09T09:56:41.709070+00:00] remote stdout: interface: wg_paid\nJul 09 09:56:41 wg-access-dev wg_access_agent.py[127545]:   public key: FD1J+KVZ965pCjgtO0YWxJsKANY9uz6v1P54JLkiZzY=\nJul 09 09:56:41 wg-access-dev wg_access_agent.py[127545]:   private key: (hidden)\nJul 09 09:56:41 wg-access-dev wg_access_agent.py[127545]:   listening port: 51830\nJul 09 09:56:41 wg-access-dev wg_access_agent.py[127545]: peer: Kl5Ox5HbG4yvDUxkRuoyZmAF3Wx5HW0lHbVS9B0vFXM=\nJul 09 09:56:41 wg-access-dev wg_access_agent.py[127545]:   preshared key: (hidden)\nJul 09 09:56:41 wg-access-dev wg_access_agent.py[127545]:   endpoint: 10.71.100.2:56264\nJul 09 09:56:41 wg-access-dev wg_access_agent.py[127545]:   allowed ips: 10.253.1.14/32\nJul 09 09:56:41 wg-access-dev wg_access_agent.py[127545]:   latest handshake: 16 minutes, 32 seconds ago\nJul 09 09:56:41 wg-access-dev wg_access_agent.py[127545]:   transfer: 820 B received, 3.61 KiB sent\nJul 09 09:56:41 wg-access-dev wg_access_agent.py[127545]: peer: JQXornv9vzH7nn9E1laZehYLnwMXuitP+eP35Gde0D4=\nJul 09 09:56:41 wg-access-dev wg_access_agent.py[127545]:   preshared key: (hidden)\nJul 09 09:56:41 wg-access-dev wg_access_agent.py[127545]:   endpoint: 10.71.100.2:39020\nJul 09 09:56:41 wg-access-dev wg_access_agent.py[127545]:   allowed ips: 10.253.1.13/32\nJul 09 09:56:41 wg-access-dev wg_access_agent.py[127545]:   latest handshake: 18 hours, 44 minutes, 8 seconds ago\nJul 09 09:56:41 wg-access-dev wg_access_agent.py[127545]:   transfer: 1.35 KiB received, 6.96 KiB sent\nJul 09 09:56:41 wg-access-dev wg_access_agent.py[127545]: peer: HknQ+VpqOIvsd3RxkrgaUqiR7zkS9nMfDRzDAvdqUVw=\nJul 09 09:56:41 wg-access-dev wg_access_agent.py[127545]:   preshared key: (hidden)\nJul 09 09:56:41 wg-access-dev wg_access_agent.py[127545]:   endpoint: 10.71.100.2:41351\nJul 09 09:56:41 wg-access-dev wg_access_agent.py[127545]:   allowed ips: 10.253.1.12/32\nJul 09 09:56:41 wg-access-dev wg_access_agent.py[127545]:   latest handshake: 19 hours, 46 minutes, 15 seconds ago\nJul 09 09:56:41 wg-access-dev wg_access_agent.py[127545]:   transfer: 692 B received, 3.48 KiB sent\nJul 09 09:56:41 wg-access-dev wg_access_agent.py[127545]: peer: zwzkWJkpX7q5PfcT9pG2v52Es4yM0VRP3w1drj7LJmw=\nJul 09 09:56:41 wg-access-dev wg_access_agent.py[127545]:   preshared key: (hidden)\nJul 09 09:56:41 wg-access-dev wg_access_agent.py[127545]:   endpoint: 10.71.100.2:35150\nJul 09 09:56:41 wg-access-dev wg_access_agent.py[127545]:   allowed ips: 10.253.1.11/32\nJul 09 09:56:41 wg-access-dev wg_access_agent.py[127545]:   latest handshake: 19 hours, 59 minutes, 52 seconds ago\nJul 09 09:56:41 wg-access-dev wg_access_agent.py[127545]:   transfer: 1.35 KiB received, 6.96 KiB sent\nJul 09 09:56:41 wg-access-dev wg_access_agent.py[127545]: peer: fmcqSUy1fErBV5RrcoVoex2VAgaxz2i79GzK8qd88UI=\nJul 09 09:56:41 wg-access-dev wg_access_agent.py[127545]:   preshared key: (hidden)\nJul 09 09:56:41 wg-access-dev wg_access_agent.py[127545]:   endpoint: 10.71.100.2:40520\nJul 09 09:56:41 wg-access-dev wg_access_agent.py[127545]:   allowed ips: 10.253.1.10/32\nJul 09 09:56:41 wg-access-dev wg_access_agent.py[127545]:   latest handshake: 20 hours, 51 minutes, 11 seconds ago\nJul 09 09:56:41 wg-access-dev wg_access_agent.py[127545]:   transfer: 3.38 KiB received, 17.40 KiB sent\nJul 09 09:56:41 wg-access-dev wg_access_agent.py[127545]: [2026-07-09T09:56:41.716832+00:00] no pending jobs\nJul 09 09:56:41 wg-access-dev systemd[1]: wg-access-agent.service: Deactivated successfully.\nJul 09 09:56:41 wg-access-dev systemd[1]: Finished wg-access-agent.service - WG Access Agent real poller.",
      "agent_show_after_trigger": "Result=success\nExecMainStartTimestamp=Thu 2026-07-09 09:56:40 UTC\nExecMainStartTimestampMonotonic=59716052202\nExecMainStatus=0\nInvocationID=d0c4b78a78b84f46af3a040b1d13e2e0",
      "agent_show_before_trigger": "Result=success\nExecMainStartTimestamp=Thu 2026-07-09 09:56:40 UTC\nExecMainStartTimestampMonotonic=59716052202\nExecMainStatus=0\nInvocationID=d0c4b78a78b84f46af3a040b1d13e2e0",
      "backend_container_write_trigger": {
        "rc": 0,
        "stderr": "",
        "stdout": ""
      },
      "backend_health": {
        "rc": 0,
        "stderr": "",
        "stdout": "{\"status\":\"ok\",\"service\":\"wg-access-backend\",\"environment\":\"dev\"}"
      },
      "backend_openapi": {
        "rc": 0,
        "stderr": "",
        "stdout": "rc=0"
      },
      "compile_after_restore_before_patch": {
        "rc": 0,
        "stderr": "",
        "stdout": ""
      },
      "compile_container_after_patch": {
        "rc": 0,
        "stderr": "",
        "stdout": ""
      },
      "compile_host_after_patch": {
        "rc": 0,
        "stderr": "",
        "stdout": ""
      },
      "path_active": {
        "rc": 0,
        "stderr": "",
        "stdout": "active"
      },
      "path_enabled": {
        "rc": 0,
        "stderr": "",
        "stdout": "enabled"
      },
      "path_journal_recent": "Jul 09 09:56:40 wg-access-dev systemd[1]: wg-access-agent.path: Deactivated successfully.\nJul 09 09:56:40 wg-access-dev systemd[1]: Stopped wg-access-agent.path - WG Access agent event trigger path.\nJul 09 09:56:40 wg-access-dev systemd[1]: Stopping wg-access-agent.path - WG Access agent event trigger path...\nJul 09 09:56:40 wg-access-dev systemd[1]: Started wg-access-agent.path - WG Access agent event trigger path.",
      "pending_global_after": 0,
      "trigger_write_for_invocation_from_container": {
        "rc": 0,
        "stderr": "",
        "stdout": ""
      }
    }
  },
  "mode": "RECOVER_REAPPLY_VALIDATE_EVENT_TRIGGER",
  "publish": {
    "local_report": "http://127.0.0.1:8099/r/e94a0859747d7b96f29c7fdafc2d0351ba603bb0a7e9e5a4/20260709-095639_step042c2_recover_reapply_event_trigger_clean/",
    "trycf_report": "https://helena-background-beam-harry.trycloudflare.com/r/e94a0859747d7b96f29c7fdafc2d0351ba603bb0a7e9e5a4/20260709-095639_step042c2_recover_reapply_event_trigger_clean/"
  },
  "rollback": {
    "script": "/root/rollback-step042c2-recover-reapply-20260709-095639.sh"
  },
  "schema": "router-step-facts-v1",
  "step": "STEP_042C2_RECOVER_REAPPLY_EVENT_TRIGGER_CLEAN"
}
