{
  "assessment": {
    "all_ok": true,
    "success_checks": {
      "backend_container_present": true,
      "backend_health_ok": true,
      "backend_trigger_bind_mount_visible": true,
      "enabled_peer_count_five": true,
      "old_path_inactive": true,
      "pending_global_zero": true,
      "pg_dump_created": true,
      "postgres_container_present": true,
      "private_material_not_published": true,
      "reconcile_timer_active": true,
      "reconcile_timer_enabled": true,
      "watcher_active": true,
      "watcher_enabled": true
    }
  },
  "changes": {
    "manual_agent_service_start_used": "NO",
    "private_material_published": "NO",
    "vm100_changed": "NO",
    "vm101_changed": "NO",
    "vm121_changed": "YES_BACKUP_FILES_ONLY"
  },
  "compose": {
    "default_override": {
      "rc": 0,
      "stderr": "",
      "stdout": "# Generated by STEP_042I3_FIX_BACKEND_TRIGGER_BIND_MOUNT at 20260709-104537\nservices:\n  backend:\n    volumes:\n      - type: bind\n        source: /opt/wg-access/runtime/agent-trigger\n        target: /opt/wg-access/runtime/agent-trigger"
    },
    "important_files": {
      "rc": 0,
      "stderr": "",
      "stdout": "-rw-r--r-- 1 root root 235 Jul  9 10:45 /opt/wg-access/docker-compose.override.yml\n-rw-r--r-- 1 root root 235 Jul  9 10:45 /opt/wg-access/docker-compose.step042i3-trigger-bind.yml\n-rw-r--r-- 1 root root 964 Jul  4 13:25 /opt/wg-access/docker-compose.yml\n-rw-r--r-- 1 root root 951 Jul  4 13:25 /opt/wg-access/docker-compose.yml.BEFORE_REAL_WG_KEYS.20260704-132545"
    },
    "step042i3_override": {
      "rc": 0,
      "stderr": "",
      "stdout": "# Generated by STEP_042I3_FIX_BACKEND_TRIGGER_BIND_MOUNT at 20260709-104537\nservices:\n  backend:\n    volumes:\n      - type: bind\n        source: /opt/wg-access/runtime/agent-trigger\n        target: /opt/wg-access/runtime/agent-trigger"
    }
  },
  "db": {
    "enabled_ips": {
      "rc": 0,
      "stderr": "",
      "stdout": "10.253.1.10\n10.253.1.11\n10.253.1.12\n10.253.1.13\n10.253.1.14"
    },
    "enabled_peer_count": {
      "rc": 0,
      "stderr": "",
      "stdout": "5"
    },
    "pending_global": {
      "rc": 0,
      "stderr": "",
      "stdout": "0"
    },
    "recent_jobs": {
      "rc": 0,
      "stderr": "",
      "stdout": "disable_peer|completed|23\nenable_peer|completed|32"
    }
  },
  "docker": {
    "backend_compose_config_files": {
      "rc": 0,
      "stderr": "",
      "stdout": "/opt/wg-access/docker-compose.yml,/opt/wg-access/docker-compose.step042i3-trigger-bind.yml"
    },
    "backend_compose_project": {
      "rc": 0,
      "stderr": "",
      "stdout": "wg-access"
    },
    "backend_compose_service": {
      "rc": 0,
      "stderr": "",
      "stdout": "backend"
    },
    "backend_compose_working_dir": {
      "rc": 0,
      "stderr": "",
      "stdout": "/opt/wg-access"
    },
    "backend_container": "wgaccess-backend",
    "backend_mounts": {
      "rc": 0,
      "stderr": "",
      "stdout": "[{\"Type\":\"bind\",\"Source\":\"/opt/wg-access/backend\",\"Destination\":\"/app\",\"Mode\":\"rw\",\"RW\":true,\"Propagation\":\"rprivate\"},{\"Type\":\"bind\",\"Source\":\"/opt/wg-access/runtime/agent-trigger\",\"Destination\":\"/opt/wg-access/runtime/agent-trigger\",\"Mode\":\"rw\",\"RW\":true,\"Propagation\":\"rprivate\"}]"
    },
    "backend_trigger_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:49:59.663357453 +0000\nModify: 2026-07-09 10:49:59.471361692 +0000\nChange: 2026-07-09 10:49:59.471361692 +0000\n Birth: 2026-07-09 10:24:32.438771049 +0000"
    },
    "postgres_container": "wgaccess-postgres",
    "ps": {
      "rc": 0,
      "stderr": "",
      "stdout": "NAMES               IMAGE                STATUS                  PORTS\nwgaccess-backend    python:3.12-slim     Up 5 minutes            0.0.0.0:18080->8000/tcp\nwgaccess-postgres   postgres:16-alpine   Up 18 hours (healthy)   127.0.0.1:15432->5432/tcp"
    }
  },
  "errors": [],
  "files": {
    "agent_trigger_helper_sha256": {
      "rc": 0,
      "stderr": "",
      "stdout": "aec72aa5d755ae655db1d04160fb8432a6243b197964050cdb9d5fa3a71d3f05  /opt/wg-access/backend/app/agent_trigger.py"
    },
    "backend_admin_sha256": {
      "rc": 0,
      "stderr": "",
      "stdout": "afb1dd26942e25b2194cd21a9f3947675994f6b107bc11ffb31adbeec1ea1634  /opt/wg-access/backend/app/api/admin.py"
    },
    "trigger_dir": {
      "rc": 0,
      "stderr": "",
      "stdout": "drwxrwxr-x 3 root root 4096 Jul  9 10:24 /opt/wg-access/runtime/agent-trigger\ndrwxrwxr-x 2 root root 4096 Jul  9 10:49 /opt/wg-access/runtime/agent-trigger/events"
    },
    "watcher_script_sha256": {
      "rc": 0,
      "stderr": "",
      "stdout": "1009a74e02d63f9447102f921f0d8e3cf36195ff5ea4e400ce63ce88cb4d05ea  /usr/local/sbin/wg-access-trigger-watch.py"
    },
    "watcher_unit_sha256": {
      "rc": 0,
      "stderr": "",
      "stdout": "b0d6557a994de6157e56252b392bac4129899e44612dc80432df7fa5702bdfe4  /etc/systemd/system/wg-access-trigger-watch.service"
    }
  },
  "mode": "CHECKPOINT_VM121_AGENT_AUTOMATION_STATE",
  "pg_backup": {
    "dump_ls": {
      "rc": 0,
      "stderr": "",
      "stdout": "-rw-r--r-- 1 root root 29K Jul  9 10:51 /opt/wg-access/backups/STEP_042K_CHECKPOINT_AGENT_AUTOMATION_OK_20260709-105135/wgaccess-db.pg_dump"
    },
    "dump_path_on_vm121": "/opt/wg-access/backups/STEP_042K_CHECKPOINT_AGENT_AUTOMATION_OK_20260709-105135/wgaccess-db.pg_dump",
    "dump_sha256": {
      "rc": 0,
      "stderr": "",
      "stdout": "68a0b4b77397a5bfc10840b9bb544794de29d11d8779af9ff83f09bd3a2277c6  /opt/wg-access/backups/STEP_042K_CHECKPOINT_AGENT_AUTOMATION_OK_20260709-105135/wgaccess-db.pg_dump"
    },
    "pg_dump": {
      "rc": 0,
      "stderr": "",
      "stdout": ""
    }
  },
  "schema": "router-step-facts-v1",
  "services": {
    "agent_service_state": {
      "rc": 0,
      "stderr": "",
      "stdout": "Result=success\nExecMainStatus=0\nActiveState=inactive\nSubState=dead"
    },
    "backend_health": {
      "rc": 0,
      "stderr": "",
      "stdout": "{\"status\":\"ok\",\"service\":\"wg-access-backend\",\"environment\":\"dev\"}"
    },
    "old_path_active": {
      "rc": 3,
      "stderr": "",
      "stdout": "inactive"
    },
    "old_path_enabled": {
      "rc": 1,
      "stderr": "",
      "stdout": "disabled"
    },
    "reconcile_timer_active": {
      "rc": 0,
      "stderr": "",
      "stdout": "active"
    },
    "reconcile_timer_enabled": {
      "rc": 0,
      "stderr": "",
      "stdout": "enabled"
    },
    "reconcile_timer_list": {
      "rc": 0,
      "stderr": "",
      "stdout": "Thu 2026-07-09 10:55:13 UTC 3min 37s left Thu 2026-07-09 10:50:06 UTC 1min 29s ago wg-access-reconcile.timer            wg-access-reconcile.service"
    },
    "watcher_active": {
      "rc": 0,
      "stderr": "",
      "stdout": "active"
    },
    "watcher_enabled": {
      "rc": 0,
      "stderr": "",
      "stdout": "enabled"
    },
    "watcher_status": {
      "rc": 0,
      "stderr": "",
      "stdout": "● wg-access-trigger-watch.service - WG Access host-side trigger watcher\n     Loaded: loaded (/etc/systemd/system/wg-access-trigger-watch.service; enabled; preset: enabled)\n     Active: active (running) since Thu 2026-07-09 10:37:59 UTC; 13min ago\n   Main PID: 147081 (python3)\n      Tasks: 1 (limit: 4686)\n     Memory: 5.6M\n        CPU: 191ms\n     CGroup: /system.slice/wg-access-trigger-watch.service\n             └─147081 python3 /usr/local/sbin/wg-access-trigger-watch.py\n\nJul 09 10:45:53 wg-access-dev wg-access-trigger-watch.py[147081]: [2026-07-09T10:45:53Z] wg-access-trigger-watch: wg-access-agent.service start failed rc=1 stdout='' stderr='Job for wg-access-agent.service failed because the control process exited with error code.\\nSee \"systemctl status wg-access-agent.service\" and \"journalctl -xeu wg-access-agent.service\" for details.\\n'\nJul 09 10:47:56 wg-access-dev wg-access-trigger-watch.py[147081]: [2026-07-09T10:47:56Z] wg-access-trigger-watch: new_events=1 first=event-1783594076311494704-9c8e0f44d5b849fab78bd8e9f47ed4ca.trigger:145842:1783594076310062723:20\nJul 09 10:47:56 wg-access-dev wg-access-trigger-watch.py[147081]: [2026-07-09T10:47:56Z] wg-access-trigger-watch: starting wg-access-agent.service reason=new_events=1\nJul 09 10:47:57 wg-access-dev wg-access-trigger-watch.py[147081]: [2026-07-09T10:47:57Z] wg-access-trigger-watch: wg-access-agent.service start requested OK\nJul 09 10:49:55 wg-access-dev wg-access-trigger-watch.py[147081]: [2026-07-09T10:49:55Z] wg-access-trigger-watch: new_events=1 first=event-1783594194822815906-e9b98a1066fe47f6aef89a625241cf8c.trigger:145791:1783594194819464384:20\nJul 09 10:49:55 wg-access-dev wg-access-trigger-watch.py[147081]: [2026-07-09T10:49:55Z] wg-access-trigger-watch: starting wg-access-agent.service reason=new_events=1\nJul 09 10:49:56 wg-access-dev wg-access-trigger-watch.py[147081]: [2026-07-09T10:49:56Z] wg-access-trigger-watch: wg-access-agent.service start requested OK\nJul 09 10:49:59 wg-access-dev wg-access-trigger-watch.py[147081]: [2026-07-09T10:49:59Z] wg-access-trigger-watch: new_events=1 first=event-1783594199475340237-f0d88a82bafc4b7ea6d7db352214a58a.trigger:131075:1783594199471361692:20\nJul 09 10:49:59 wg-access-dev wg-access-trigger-watch.py[147081]: [2026-07-09T10:49:59Z] wg-access-trigger-watch: starting wg-access-agent.service reason=new_events=1\nJul 09 10:50:00 wg-access-dev wg-access-trigger-watch.py[147081]: [2026-07-09T10:50:00Z] wg-access-trigger-watch: wg-access-agent.service start requested OK"
    }
  },
  "step": "STEP_042K_CHECKPOINT_AGENT_AUTOMATION_OK"
}
