{
  "actions": {
    "daemon_reload": {
      "rc": 0,
      "stderr": "",
      "stdout": ""
    },
    "enable_path": {
      "rc": 0,
      "stderr": "",
      "stdout": ""
    },
    "restart_backend": {
      "rc": 0,
      "stderr": "",
      "stdout": "wgaccess-backend"
    },
    "restart_path": {
      "rc": 0,
      "stderr": "",
      "stdout": ""
    }
  },
  "assessment": {
    "all_ok": true,
    "ready_for_042H_create_disable_happy_path": true,
    "success_checks": {
      "admin_imports_or_calls_helper": true,
      "agent_invoked_by_direct_helper_path": true,
      "backend_health_ok": true,
      "backend_restart_ok": true,
      "compile_container_ok": true,
      "compile_host_ok": true,
      "direct_helper_call_ok": true,
      "helper_installed": true,
      "manual_agent_service_start_not_used": true,
      "path_active": true,
      "path_enabled": true,
      "path_unit_uses_event_dir": true,
      "pending_global_zero_after": true,
      "private_material_not_published": true
    }
  },
  "changes": {
    "backend_helper_changed": "YES",
    "backend_restarted": "YES",
    "manual_agent_service_start_used": "NO",
    "private_material_published": "NO",
    "systemd_path_unit_changed": "YES",
    "vm100_changed": "NO_EXPECTED",
    "vm101_changed": "NO",
    "vm121_changed": "YES"
  },
  "errors": [],
  "mode": "IMPLEMENT_DIRECTORY_SPOOL_SYSTEMD_PATH_TRIGGER",
  "precheck": {
    "agent_show_before": "Result=success\nExecMainStartTimestampMonotonic=61122052672\nExecMainStatus=0\nInvocationID=395c8399f7234adca15caed9f3cfd3d6",
    "backend_container": "wgaccess-backend",
    "backend_health": {
      "rc": 0,
      "stderr": "",
      "stdout": "{\"status\":\"ok\",\"service\":\"wg-access-backend\",\"environment\":\"dev\"}"
    },
    "path_active_before": {
      "rc": 0,
      "stderr": "",
      "stdout": "active"
    },
    "path_enabled_before": {
      "rc": 0,
      "stderr": "",
      "stdout": "enabled"
    },
    "pending_global_before": 0
  },
  "rollback": {
    "script": "/root/rollback-step042g-dir-spool-trigger-20260709-102432.sh"
  },
  "schema": "router-step-facts-v1",
  "step": "STEP_042G_RELIABLE_EVENT_TRIGGER_DIR_SPOOL_IMPLEMENT",
  "validation": {
    "admin_call_count_before": 5,
    "admin_imports_helper_before": true,
    "agent_journal_recent": {
      "rc": 0,
      "stderr": "",
      "stdout": "Jul 09 10:24:32 wg-access-dev systemd[1]: Starting wg-access-agent.service - WG Access Agent real poller...\nJul 09 10:24:33 wg-access-dev wg_access_agent.py[144179]: [2026-07-09T10:24:32.553521+00:00] sync desired enabled peers: 5\nJul 09 10:24:33 wg-access-dev wg_access_agent.py[144179]: [2026-07-09T10:24:32.878139+00:00] remote stdout: fmcqSUy1fErBV5RrcoVoex2VAgaxz2i79GzK8qd88UI=        10.253.1.10/32\nJul 09 10:24:33 wg-access-dev wg_access_agent.py[144179]: zwzkWJkpX7q5PfcT9pG2v52Es4yM0VRP3w1drj7LJmw=        10.253.1.11/32\nJul 09 10:24:33 wg-access-dev wg_access_agent.py[144179]: HknQ+VpqOIvsd3RxkrgaUqiR7zkS9nMfDRzDAvdqUVw=        10.253.1.12/32\nJul 09 10:24:33 wg-access-dev wg_access_agent.py[144179]: JQXornv9vzH7nn9E1laZehYLnwMXuitP+eP35Gde0D4=        10.253.1.13/32\nJul 09 10:24:33 wg-access-dev wg_access_agent.py[144179]: Kl5Ox5HbG4yvDUxkRuoyZmAF3Wx5HW0lHbVS9B0vFXM=        10.253.1.14/32\nJul 09 10:24:33 wg-access-dev wg_access_agent.py[144179]: [2026-07-09T10:24:32.878277+00:00] sync current runtime peers: 5\nJul 09 10:24:33 wg-access-dev wg_access_agent.py[144179]: [2026-07-09T10:24:32.878344+00:00] sync keep peer tunnel_ip=10.253.1.10\nJul 09 10:24:33 wg-access-dev wg_access_agent.py[144179]: [2026-07-09T10:24:32.878398+00:00] sync keep peer tunnel_ip=10.253.1.11\nJul 09 10:24:33 wg-access-dev wg_access_agent.py[144179]: [2026-07-09T10:24:32.878450+00:00] sync keep peer tunnel_ip=10.253.1.12\nJul 09 10:24:33 wg-access-dev wg_access_agent.py[144179]: [2026-07-09T10:24:32.878498+00:00] sync keep peer tunnel_ip=10.253.1.13\nJul 09 10:24:33 wg-access-dev wg_access_agent.py[144179]: [2026-07-09T10:24:32.878550+00:00] sync keep peer tunnel_ip=10.253.1.14\nJul 09 10:24:33 wg-access-dev wg_access_agent.py[144179]: [2026-07-09T10:24:33.122305+00:00] remote stdout: interface: wg_paid\nJul 09 10:24:33 wg-access-dev wg_access_agent.py[144179]:   public key: FD1J+KVZ965pCjgtO0YWxJsKANY9uz6v1P54JLkiZzY=\nJul 09 10:24:33 wg-access-dev wg_access_agent.py[144179]:   private key: (hidden)\nJul 09 10:24:33 wg-access-dev wg_access_agent.py[144179]:   listening port: 51830\nJul 09 10:24:33 wg-access-dev wg_access_agent.py[144179]: peer: Kl5Ox5HbG4yvDUxkRuoyZmAF3Wx5HW0lHbVS9B0vFXM=\nJul 09 10:24:33 wg-access-dev wg_access_agent.py[144179]:   preshared key: (hidden)\nJul 09 10:24:33 wg-access-dev wg_access_agent.py[144179]:   endpoint: 10.71.100.2:56264\nJul 09 10:24:33 wg-access-dev wg_access_agent.py[144179]:   allowed ips: 10.253.1.14/32\nJul 09 10:24:33 wg-access-dev wg_access_agent.py[144179]:   latest handshake: 44 minutes, 24 seconds ago\nJul 09 10:24:33 wg-access-dev wg_access_agent.py[144179]:   transfer: 820 B received, 3.61 KiB sent\nJul 09 10:24:33 wg-access-dev wg_access_agent.py[144179]: peer: JQXornv9vzH7nn9E1laZehYLnwMXuitP+eP35Gde0D4=\nJul 09 10:24:33 wg-access-dev wg_access_agent.py[144179]:   preshared key: (hidden)\nJul 09 10:24:33 wg-access-dev wg_access_agent.py[144179]:   endpoint: 10.71.100.2:39020\nJul 09 10:24:33 wg-access-dev wg_access_agent.py[144179]:   allowed ips: 10.253.1.13/32\nJul 09 10:24:33 wg-access-dev wg_access_agent.py[144179]:   latest handshake: 19 hours, 12 minutes ago\nJul 09 10:24:33 wg-access-dev wg_access_agent.py[144179]:   transfer: 1.35 KiB received, 6.96 KiB sent\nJul 09 10:24:33 wg-access-dev wg_access_agent.py[144179]: peer: HknQ+VpqOIvsd3RxkrgaUqiR7zkS9nMfDRzDAvdqUVw=\nJul 09 10:24:33 wg-access-dev wg_access_agent.py[144179]:   preshared key: (hidden)\nJul 09 10:24:33 wg-access-dev wg_access_agent.py[144179]:   endpoint: 10.71.100.2:41351\nJul 09 10:24:33 wg-access-dev wg_access_agent.py[144179]:   allowed ips: 10.253.1.12/32\nJul 09 10:24:33 wg-access-dev wg_access_agent.py[144179]:   latest handshake: 20 hours, 14 minutes, 7 seconds ago\nJul 09 10:24:33 wg-access-dev wg_access_agent.py[144179]:   transfer: 692 B received, 3.48 KiB sent\nJul 09 10:24:33 wg-access-dev wg_access_agent.py[144179]: peer: zwzkWJkpX7q5PfcT9pG2v52Es4yM0VRP3w1drj7LJmw=\nJul 09 10:24:33 wg-access-dev wg_access_agent.py[144179]:   preshared key: (hidden)\nJul 09 10:24:33 wg-access-dev wg_access_agent.py[144179]:   endpoint: 10.71.100.2:35150\nJul 09 10:24:33 wg-access-dev wg_access_agent.py[144179]:   allowed ips: 10.253.1.11/32\nJul 09 10:24:33 wg-access-dev wg_access_agent.py[144179]:   latest handshake: 20 hours, 27 minutes, 44 seconds ago\nJul 09 10:24:33 wg-access-dev wg_access_agent.py[144179]:   transfer: 1.35 KiB received, 6.96 KiB sent\nJul 09 10:24:33 wg-access-dev wg_access_agent.py[144179]: peer: fmcqSUy1fErBV5RrcoVoex2VAgaxz2i79GzK8qd88UI=\nJul 09 10:24:33 wg-access-dev wg_access_agent.py[144179]:   preshared key: (hidden)\nJul 09 10:24:33 wg-access-dev wg_access_agent.py[144179]:   endpoint: 10.71.100.2:40520\nJul 09 10:24:33 wg-access-dev wg_access_agent.py[144179]:   allowed ips: 10.253.1.10/32\nJul 09 10:24:33 wg-access-dev wg_access_agent.py[144179]:   latest handshake: 21 hours, 19 minutes, 3 seconds ago\nJul 09 10:24:33 wg-access-dev wg_access_agent.py[144179]:   transfer: 3.38 KiB received, 17.40 KiB sent\nJul 09 10:24:33 wg-access-dev wg_access_agent.py[144179]: [2026-07-09T10:24:33.768850+00:00] no pending jobs\nJul 09 10:24:33 wg-access-dev systemd[1]: wg-access-agent.service: Deactivated successfully.\nJul 09 10:24:33 wg-access-dev systemd[1]: Finished wg-access-agent.service - WG Access Agent real poller."
    },
    "agent_show_after_direct_helper": "Result=success\nExecMainStartTimestampMonotonic=61388272118\nExecMainStatus=0\nInvocationID=5b37aee84ee2428ab0d23666746a13f9",
    "agent_show_before_direct_helper": "Result=success\nExecMainStartTimestampMonotonic=61388272118\nExecMainStatus=0\nInvocationID=5b37aee84ee2428ab0d23666746a13f9",
    "backend_health_after": {
      "rc": 0,
      "stderr": "",
      "stdout": "{\"status\":\"ok\",\"service\":\"wg-access-backend\",\"environment\":\"dev\"}"
    },
    "direct_helper_call_from_backend_container": {
      "rc": 0,
      "stderr": "",
      "stdout": ""
    },
    "direct_helper_observations": [
      {
        "invocation_changed": false,
        "mono_changed": false,
        "observed_agent_invocation": true,
        "path_journal_has_entry": true,
        "t_sec": 1
      }
    ],
    "event_dir_stat": {
      "rc": 0,
      "stderr": "",
      "stdout": "File: /opt/wg-access/runtime/agent-trigger/events\n  Size: 4096      \tBlocks: 8          IO Block: 4096   directory\nDevice: 8,1\tInode: 131079      Links: 2\nAccess: (0775/drwxrwxr-x)  Uid: (    0/    root)   Gid: (    0/    root)\nAccess: 2026-07-09 10:24:32.438771049 +0000\nModify: 2026-07-09 10:24:32.438771049 +0000\nChange: 2026-07-09 10:24:32.438771049 +0000\n Birth: 2026-07-09 10:24:32.438771049 +0000\ntotal 8\ndrwxrwxr-x 2 root root 4096 Jul  9 10:24 .\ndrwxrwxr-x 3 root root 4096 Jul  9 10:24 .."
    },
    "path_active_after": {
      "rc": 0,
      "stderr": "",
      "stdout": "active"
    },
    "path_cat_after": {
      "rc": 0,
      "stderr": "",
      "stdout": "# /etc/systemd/system/wg-access-agent.path\n[Unit]\nDescription=WG Access agent event trigger path\nAfter=docker.service network-online.target\nWants=network-online.target\n\n[Path]\nPathModified=/opt/wg-access/runtime/agent-trigger/events\nPathChanged=/opt/wg-access/runtime/agent-trigger/pending.trigger\nPathModified=/opt/wg-access/runtime/agent-trigger/pending.trigger\nUnit=wg-access-agent.service\nTriggerLimitIntervalSec=0\n\n[Install]\nWantedBy=multi-user.target"
    },
    "path_enabled_after": {
      "rc": 0,
      "stderr": "",
      "stdout": "enabled"
    },
    "path_journal_recent": {
      "rc": 0,
      "stderr": "",
      "stdout": "Jul 09 10:24:32 wg-access-dev systemd[1]: wg-access-agent.path: Deactivated successfully.\nJul 09 10:24:32 wg-access-dev systemd[1]: Stopped wg-access-agent.path - WG Access agent event trigger path.\nJul 09 10:24:32 wg-access-dev systemd[1]: Stopping wg-access-agent.path - WG Access agent event trigger path...\nJul 09 10:24:32 wg-access-dev systemd[1]: Started wg-access-agent.path - WG Access agent event trigger path."
    },
    "pending_global_after": 0,
    "py_compile_container": {
      "rc": 0,
      "stderr": "",
      "stdout": ""
    },
    "py_compile_host": {
      "rc": 0,
      "stderr": "",
      "stdout": ""
    }
  }
}
