{
  "agent": {
    "action": {
      "systemctl_start_rc": 0,
      "systemctl_start_stderr_tail": "",
      "systemctl_start_stdout_tail": ""
    },
    "assessment": {
      "agent_start_succeeded": true,
      "peer_enabled_in_db_after": true,
      "pending_global_after": 0,
      "target_job_completed": true,
      "target_job_failed": false,
      "target_job_status_after": "completed"
    },
    "changes": {
      "agent_start_attempted": true,
      "agent_start_rc": 0,
      "job_modified_by_agent": "YES_IF_STATUS_OR_TIMES_UPDATED",
      "private_material_published": "NO",
      "selector_changed_by_this_script": "NO",
      "vm100_may_change_by_agent": "YES_EXPECTED_PEER_ONLY"
    },
    "errors": [],
    "mode": "CONTROLLED_AGENT_ONESHOT_DYNAMIC_JOB_COLUMNS",
    "observe": {
      "job_after": {
        "query_rc": 0,
        "row": {
          "action": "enable_peer",
          "completed_at": "2026-07-09 08:21:19.032836+00",
          "created_at": "2026-07-09 08:12:15.185453+00",
          "id": "455dc5b2-d16f-4606-a088-99dc3fd0f15a",
          "last_error": "",
          "node_id": "ddn-test",
          "peer_id": "d54cd6da-c416-4245-a0dc-22182495f798",
          "started_at": "2026-07-09 08:21:18.476185+00",
          "status": "completed"
        },
        "stderr": ""
      },
      "journal_excerpt": "15:05:42 wg-access-dev wg_access_agent.py[773338]:   transfer: 1.35 KiB received, 6.96 KiB sent\nJul 08 15:05:42 wg-access-dev wg_access_agent.py[773338]: peer: fmcqSUy1fErBV5RrcoVoex2VAgaxz2i79GzK8qd88UI=\nJul 08 15:05:42 wg-access-dev wg_access_agent.py[773338]:   preshared key: (hidden)\nJul 08 15:05:42 wg-access-dev wg_access_agent.py[773338]:   endpoint: 10.71.100.2:40520\nJul 08 15:05:42 wg-access-dev wg_access_agent.py[773338]:   allowed ips: 10.253.1.10/32\nJul 08 15:05:42 wg-access-dev wg_access_agent.py[773338]:   latest handshake: 2 hours, 12 seconds ago\nJul 08 15:05:42 wg-access-dev wg_access_agent.py[773338]:   transfer: 3.38 KiB received, 17.40 KiB sent\nJul 08 15:05:42 wg-access-dev wg_access_agent.py[773338]: peer: JQXornv9vzH7nn9E1laZehYLnwMXuitP+eP35Gde0D4=\nJul 08 15:05:42 wg-access-dev wg_access_agent.py[773338]:   preshared key: (hidden)\nJul 08 15:05:42 wg-access-dev wg_access_agent.py[773338]:   allowed ips: 10.253.1.13/32\nJul 08 15:05:42 wg-access-dev wg_access_agent.py[773338]: [2026-07-08T15:05:42.776389+00:00] REAL enable_peer peer_id=219a1f63-ec47-4f72-9663-c1a17d82301e tunnel_ip=10.253.1.13\nJul 08 15:05:42 wg-access-dev wg_access_agent.py[773338]: [2026-07-08T15:05:42.783687+00:00] completed job_id=d6e07a1e-78d5-401f-a8c7-501cf75a9bf7 status=completed attempts=1\nJul 08 15:05:42 wg-access-dev systemd[1]: wg-access-agent.service: Deactivated successfully.\nJul 08 15:05:42 wg-access-dev systemd[1]: Finished wg-access-agent.service - WG Access Agent real poller.\n-- Boot 753bd7ce9dc84320b8c29502403651cb --\nJul 09 08:21:17 wg-access-dev systemd[1]: Starting wg-access-agent.service - WG Access Agent real poller...\nJul 09 08:21:19 wg-access-dev wg_access_agent.py[112493]: [2026-07-09T08:21:17.564437+00:00] sync desired enabled peers: 5\nJul 09 08:21:19 wg-access-dev wg_access_agent.py[112493]: [2026-07-09T08:21:17.830709+00:00] remote stdout: fmcqSUy1fErBV5RrcoVoex2VAgaxz2i79GzK8qd88UI=        10.253.1.10/32\nJul 09 08:21:19 wg-access-dev wg_access_agent.py[112493]: zwzkWJkpX7q5PfcT9pG2v52Es4yM0VRP3w1drj7LJmw=        10.253.1.11/32\nJul 09 08:21:19 wg-access-dev wg_access_agent.py[112493]: HknQ+VpqOIvsd3RxkrgaUqiR7zkS9nMfDRzDAvdqUVw=        10.253.1.12/32\nJul 09 08:21:19 wg-access-dev wg_access_agent.py[112493]: JQXornv9vzH7nn9E1laZehYLnwMXuitP+eP35Gde0D4=        10.253.1.13/32\nJul 09 08:21:19 wg-access-dev wg_access_agent.py[112493]: [2026-07-09T08:21:17.830803+00:00] sync current runtime peers: 4\nJul 09 08:21:19 wg-access-dev wg_access_agent.py[112493]: [2026-07-09T08:21:17.830869+00:00] sync keep peer tunnel_ip=10.253.1.10\nJul 09 08:21:19 wg-access-dev wg_access_agent.py[112493]: [2026-07-09T08:21:17.830924+00:00] sync keep peer tunnel_ip=10.253.1.11\nJul 09 08:21:19 wg-access-dev wg_access_agent.py[112493]: [2026-07-09T08:21:17.831000+00:00] sync keep peer tunnel_ip=10.253.1.12\nJul 09 08:21:19 wg-access-dev wg_access_agent.py[112493]: [2026-07-09T08:21:17.831051+00:00] sync keep peer tunnel_ip=10.253.1.13\nJul 09 08:21:19 wg-access-dev wg_access_agent.py[112493]: [2026-07-09T08:21:18.143056+00:00] sync set peer tunnel_ip=10.253.1.14\nJul 09 08:21:19 wg-access-dev wg_access_agent.py[112493]: [2026-07-09T08:21:18.465390+00:00] remote stdout: interface: wg_paid\nJul 09 08:21:19 wg-access-dev wg_access_agent.py[112493]:   public key: FD1J+KVZ965pCjgtO0YWxJsKANY9uz6v1P54JLkiZzY=\nJul 09 08:21:19 wg-access-dev wg_access_agent.py[112493]:   private key: (hidden)\nJul 09 08:21:19 wg-access-dev wg_access_agent.py[112493]:   listening port: 51830\nJul 09 08:21:19 wg-access-dev wg_access_agent.py[112493]: peer: JQXornv9vzH7nn9E1laZehYLnwMXuitP+eP35Gde0D4=\nJul 09 08:21:19 wg-access-dev wg_access_agent.py[112493]:   preshared key: (hidden)\nJul 09 08:21:19 wg-access-dev wg_access_agent.py[112493]:   endpoint: 10.71.100.2:39020\nJul 09 08:21:19 wg-access-dev wg_access_agent.py[112493]:   allowed ips: 10.253.1.13/32\nJul 09 08:21:19 wg-access-dev wg_access_agent.py[112493]:   latest handshake: 17 hours, 8 minutes, 45 seconds ago\nJul 09 08:21:19 wg-access-dev wg_access_agent.py[112493]:   transfer: 1.35 KiB received, 6.96 KiB sent\nJul 09 08:21:19 wg-access-dev wg_access_agent.py[112493]: peer: HknQ+VpqOIvsd3RxkrgaUqiR7zkS9nMfDRzDAvdqUVw=\nJul 09 08:21:19 wg-access-dev wg_access_agent.py[112493]:   preshared key: (hidden)\nJul 09 08:21:19 wg-access-dev wg_access_agent.py[112493]:   endpoint: 10.71.100.2:41351\nJul 09 08:21:19 wg-access-dev wg_access_agent.py[112493]:   allowed ips: 10.253.1.12/32\nJul 09 08:21:19 wg-access-dev wg_access_agent.py[112493]:   latest handshake: 18 hours, 10 minutes, 52 seconds ago\nJul 09 08:21:19 wg-access-dev wg_access_agent.py[112493]:   transfer: 692 B received, 3.48 KiB sent\nJul 09 08:21:19 wg-access-dev wg_access_agent.py[112493]: peer: zwzkWJkpX7q5PfcT9pG2v52Es4yM0VRP3w1drj7LJmw=\nJul 09 08:21:19 wg-access-dev wg_access_agent.py[112493]:   preshared key: (hidden)\nJul 09 08:21:19 wg-access-dev wg_access_agent.py[112493]:   endpoint: 10.71.100.2:35150\nJul 09 08:21:19 wg-access-dev wg_access_agent.py[112493]:   allowed ips: 10.253.1.11/32\nJul 09 08:21:19 wg-access-dev wg_access_agent.py[112493]:   latest handshake: 18 hours, 24 minutes, 29 seconds ago\nJul 09 08:21:19 wg-access-dev wg_access_agent.py[112493]:   transfer: 1.35 KiB received, 6.96 KiB sent\nJul 09 08:21:19 wg-access-dev wg_access_agent.py[112493]: peer: fmcqSUy1fErBV5RrcoVoex2VAgaxz2i79GzK8qd88UI=\nJul 09 08:21:19 wg-access-dev wg_access_agent.py[112493]:   preshared key: (hidden)\nJul 09 08:21:19 wg-access-dev wg_access_agent.py[112493]:   endpoint: 10.71.100.2:40520\nJul 09 08:21:19 wg-access-dev wg_access_agent.py[112493]:   allowed ips: 10.253.1.10/32\nJul 09 08:21:19 wg-access-dev wg_access_agent.py[112493]:   latest handshake: 19 hours, 15 minutes, 48 seconds ago\nJul 09 08:21:19 wg-access-dev wg_access_agent.py[112493]:   transfer: 3.38 KiB received, 17.40 KiB sent\nJul 09 08:21:19 wg-access-dev wg_access_agent.py[112493]: peer: FtGKm8gt92kmNI1+SYbKNt5uE8xLq/6yjEYIxg7INXI=\nJul 09 08:21:19 wg-access-dev wg_access_agent.py[112493]:   preshared key: (hidden)\nJul 09 08:21:19 wg-access-dev wg_access_agent.py[112493]:   allowed ips: 10.253.1.14/32\nJul 09 08:21:19 wg-access-dev wg_access_agent.py[112493]: [2026-07-09T08:21:18.472612+00:00] fetched pending jobs: 1\nJul 09 08:21:19 wg-access-dev wg_access_agent.py[112493]: [2026-07-09T08:21:18.472690+00:00] starting job_id=455dc5b2-d16f-4606-a088-99dc3fd0f15a action=enable_peer\nJul 09 08:21:19 wg-access-dev wg_access_agent.py[112493]: [2026-07-09T08:21:19.029368+00:00] remote stdout: interface: wg_paid\nJul 09 08:21:19 wg-access-dev wg_access_agent.py[112493]:   public key: FD1J+KVZ965pCjgtO0YWxJsKANY9uz6v1P54JLkiZzY=\nJul 09 08:21:19 wg-access-dev wg_access_agent.py[112493]:   private key: (hidden)\nJul 09 08:21:19 wg-access-dev wg_access_agent.py[112493]:   listening port: 51830\nJul 09 08:21:19 wg-access-dev wg_access_agent.py[112493]: peer: JQXornv9vzH7nn9E1laZehYLnwMXuitP+eP35Gde0D4=\nJul 09 08:21:19 wg-access-dev wg_access_agent.py[112493]:   preshared key: (hidden)\nJul 09 08:21:19 wg-access-dev wg_access_agent.py[112493]:   endpoint: 10.71.100.2:39020\nJul 09 08:21:19 wg-access-dev wg_access_agent.py[112493]:   allowed ips: 10.253.1.13/32\nJul 09 08:21:19 wg-access-dev wg_access_agent.py[112493]:   latest handshake: 17 hours, 8 minutes, 46 seconds ago\nJul 09 08:21:19 wg-access-dev wg_access_agent.py[112493]:   transfer: 1.35 KiB received, 6.96 KiB sent\nJul 09 08:21:19 wg-access-dev wg_access_agent.py[112493]: peer: HknQ+VpqOIvsd3RxkrgaUqiR7zkS9nMfDRzDAvdqUVw=\nJul 09 08:21:19 wg-access-dev wg_access_agent.py[112493]:   preshared key: (hidden)\nJul 09 08:21:19 wg-access-dev wg_access_agent.py[112493]:   endpoint: 10.71.100.2:41351\nJul 09 08:21:19 wg-access-dev wg_access_agent.py[112493]:   allowed ips: 10.253.1.12/32\nJul 09 08:21:19 wg-access-dev wg_access_agent.py[112493]:   latest handshake: 18 hours, 10 minutes, 53 seconds ago\nJul 09 08:21:19 wg-access-dev wg_access_agent.py[112493]:   transfer: 692 B received, 3.48 KiB sent\nJul 09 08:21:19 wg-access-dev wg_access_agent.py[112493]: peer: zwzkWJkpX7q5PfcT9pG2v52Es4yM0VRP3w1drj7LJmw=\nJul 09 08:21:19 wg-access-dev wg_access_agent.py[112493]:   preshared key: (hidden)\nJul 09 08:21:19 wg-access-dev wg_access_agent.py[112493]:   endpoint: 10.71.100.2:35150\nJul 09 08:21:19 wg-access-dev wg_access_agent.py[112493]:   allowed ips: 10.253.1.11/32\nJul 09 08:21:19 wg-access-dev wg_access_agent.py[112493]:   latest handshake: 18 hours, 24 minutes, 30 seconds ago\nJul 09 08:21:19 wg-access-dev wg_access_agent.py[112493]:   transfer: 1.35 KiB received, 6.96 KiB sent\nJul 09 08:21:19 wg-access-dev wg_access_agent.py[112493]: peer: fmcqSUy1fErBV5RrcoVoex2VAgaxz2i79GzK8qd88UI=\nJul 09 08:21:19 wg-access-dev wg_access_agent.py[112493]:   preshared key: (hidden)\nJul 09 08:21:19 wg-access-dev wg_access_agent.py[112493]:   endpoint: 10.71.100.2:40520\nJul 09 08:21:19 wg-access-dev wg_access_agent.py[112493]:   allowed ips: 10.253.1.10/32\nJul 09 08:21:19 wg-access-dev wg_access_agent.py[112493]:   latest handshake: 19 hours, 15 minutes, 49 seconds ago\nJul 09 08:21:19 wg-access-dev wg_access_agent.py[112493]:   transfer: 3.38 KiB received, 17.40 KiB sent\nJul 09 08:21:19 wg-access-dev wg_access_agent.py[112493]: peer: FtGKm8gt92kmNI1+SYbKNt5uE8xLq/6yjEYIxg7INXI=\nJul 09 08:21:19 wg-access-dev wg_access_agent.py[112493]:   preshared key: (hidden)\nJul 09 08:21:19 wg-access-dev wg_access_agent.py[112493]:   allowed ips: 10.253.1.14/32\nJul 09 08:21:19 wg-access-dev wg_access_agent.py[112493]: [2026-07-09T08:21:19.029851+00:00] REAL enable_peer peer_id=d54cd6da-c416-4245-a0dc-22182495f798 tunnel_ip=10.253.1.14\nJul 09 08:21:19 wg-access-dev wg_access_agent.py[112493]: [2026-07-09T08:21:19.037154+00:00] completed job_id=455dc5b2-d16f-4606-a088-99dc3fd0f15a status=completed attempts=1\nJul 09 08:21:19 wg-access-dev systemd[1]: wg-access-agent.service: Deactivated successfully.\nJul 09 08:21:19 wg-access-dev systemd[1]: Finished wg-access-agent.service - WG Access Agent real poller.",
      "journal_rc": 0,
      "observations": [
        {
          "job": {
            "query_rc": 0,
            "row": {
              "action": "enable_peer",
              "completed_at": "2026-07-09 08:21:19.032836+00",
              "created_at": "2026-07-09 08:12:15.185453+00",
              "id": "455dc5b2-d16f-4606-a088-99dc3fd0f15a",
              "last_error": "",
              "node_id": "ddn-test",
              "peer_id": "d54cd6da-c416-4245-a0dc-22182495f798",
              "started_at": "2026-07-09 08:21:18.476185+00",
              "status": "completed"
            },
            "stderr": ""
          },
          "service_active": "inactive",
          "status_counts": {
            "counts": {
              "completed": 41
            },
            "query_rc": 0
          },
          "t_sec": 0
        }
      ],
      "peer_after": {
        "query_rc": 0,
        "rows": [
          {
            "created_at": "2026-07-04 13:28:02.964577+00",
            "disabled_at": "2026-07-04 15:13:41.913497+00",
            "enabled": "false",
            "id": "813515db-bf25-46c9-bc83-c9c45d51ba68",
            "node_id": "ddn-test",
            "public_key_md5": "6a14a78db834c09dd1bcb876ee832843",
            "tunnel_ip": "10.253.1.14"
          },
          {
            "created_at": "2026-07-09 08:12:15.183587+00",
            "disabled_at": "",
            "enabled": "true",
            "id": "d54cd6da-c416-4245-a0dc-22182495f798",
            "node_id": "ddn-test",
            "public_key_md5": "0db8e90b312a67c6dbaa4952e1b0ddea",
            "tunnel_ip": "10.253.1.14"
          }
        ]
      },
      "status_counts_after": {
        "counts": {
          "completed": 41
        },
        "query_rc": 0
      },
      "systemctl_status_excerpt": "○ wg-access-agent.service - WG Access Agent real poller\n     Loaded: loaded (/etc/systemd/system/wg-access-agent.service; static)\n     Active: inactive (dead) since Thu 2026-07-09 08:21:19 UTC; 417ms ago\n    Process: 112493 ExecStart=/opt/wg-access/agent/wg_access_agent.py (code=exited, status=0/SUCCESS)\n   Main PID: 112493 (code=exited, status=0/SUCCESS)\n        CPU: 136ms\n\nJul 09 08:21:19 wg-access-dev wg_access_agent.py[112493]:   allowed ips: 10.253.1.10/32\nJul 09 08:21:19 wg-access-dev wg_access_agent.py[112493]:   latest handshake: 19 hours, 15 minutes, 49 seconds ago\nJul 09 08:21:19 wg-access-dev wg_access_agent.py[112493]:   transfer: 3.38 KiB received, 17.40 KiB sent\nJul 09 08:21:19 wg-access-dev wg_access_agent.py[112493]: peer: FtGKm8gt92kmNI1+SYbKNt5uE8xLq/6yjEYIxg7INXI=\nJul 09 08:21:19 wg-access-dev wg_access_agent.py[112493]:   preshared key: (hidden)\nJul 09 08:21:19 wg-access-dev wg_access_agent.py[112493]:   allowed ips: 10.253.1.14/32\nJul 09 08:21:19 wg-access-dev wg_access_agent.py[112493]: [2026-07-09T08:21:19.029851+00:00] REAL enable_peer peer_id=d54cd6da-c416-4245-a0dc-22182495f798 tunnel_ip=10.253.1.14\nJul 09 08:21:19 wg-access-dev wg_access_agent.py[112493]: [2026-07-09T08:21:19.037154+00:00] completed job_id=455dc5b2-d16f-4606-a088-99dc3fd0f15a status=completed attempts=1\nJul 09 08:21:19 wg-access-dev systemd[1]: wg-access-agent.service: Deactivated successfully.\nJul 09 08:21:19 wg-access-dev systemd[1]: Finished wg-access-agent.service - WG Access Agent real poller.",
      "systemctl_status_rc": 3
    },
    "precheck": {
      "job_before": {
        "query_rc": 0,
        "row": {
          "action": "enable_peer",
          "completed_at": "",
          "created_at": "2026-07-09 08:12:15.185453+00",
          "id": "455dc5b2-d16f-4606-a088-99dc3fd0f15a",
          "last_error": "",
          "node_id": "ddn-test",
          "peer_id": "d54cd6da-c416-4245-a0dc-22182495f798",
          "started_at": "",
          "status": "pending"
        },
        "stderr": ""
      },
      "job_columns": {
        "columns": [
          "id",
          "node_id",
          "action",
          "peer_id",
          "payload_json",
          "status",
          "attempts",
          "created_at",
          "started_at",
          "completed_at",
          "last_error"
        ],
        "rc": 0,
        "stderr": ""
      },
      "peer_before": {
        "query_rc": 0,
        "rows": [
          {
            "created_at": "2026-07-04 13:28:02.964577+00",
            "disabled_at": "2026-07-04 15:13:41.913497+00",
            "enabled": "false",
            "id": "813515db-bf25-46c9-bc83-c9c45d51ba68",
            "node_id": "ddn-test",
            "public_key_md5": "6a14a78db834c09dd1bcb876ee832843",
            "tunnel_ip": "10.253.1.14"
          },
          {
            "created_at": "2026-07-09 08:12:15.183587+00",
            "disabled_at": "",
            "enabled": "true",
            "id": "d54cd6da-c416-4245-a0dc-22182495f798",
            "node_id": "ddn-test",
            "public_key_md5": "0db8e90b312a67c6dbaa4952e1b0ddea",
            "tunnel_ip": "10.253.1.14"
          }
        ]
      },
      "pg_container_found": true,
      "pg_container_name": "wgaccess-postgres",
      "service_active_before": "inactive",
      "service_enabled_rc": 0,
      "status_counts_before": {
        "counts": {
          "completed": 40,
          "pending": 1
        },
        "query_rc": 0
      },
      "systemctl_cat_excerpt": "# /etc/systemd/system/wg-access-agent.service\n[Unit]\nDescription=WG Access Agent real poller\nAfter=network-online.target docker.service\nWants=network-online.target\n\n[Service]\nType=oneshot\nUser=root\nWorkingDirectory=/opt/wg-access/agent\nEnvironment=WG_ACCESS_AGENT_ENV=/opt/wg-access/agent/agent.env\nExecStart=/opt/wg-access/agent/wg_access_agent.py",
      "systemctl_cat_rc": 0,
      "target_job_action": "enable_peer",
      "target_job_peer_matches": true,
      "target_job_pending_before": true,
      "target_job_status_before": "pending"
    },
    "schema": "router-step-facts-v1",
    "step": "STEP_041C3_CONTROLLED_AGENT_RUN_DYNAMIC_JOB_COLUMNS",
    "target": {
      "job_id": "455dc5b2-d16f-4606-a088-99dc3fd0f15a",
      "peer_id": "d54cd6da-c416-4245-a0dc-22182495f798",
      "service": "wg-access-agent.service",
      "tunnel_ip": "10.253.1.14"
    }
  },
  "assessment": {
    "agent_job_completed": true,
    "agent_job_failed": false,
    "ready_for_selector_apply_next": true,
    "selector_still_absent": true,
    "vm100_peer_count_incremented": true,
    "vm100_peer_now_visible": true
  },
  "changes": {
    "agent_start_attempted": true,
    "agent_start_rc": 0,
    "private_material_published": "NO",
    "selector_changed": "NO_EXPECTED",
    "target_job_completed": true,
    "vm100_peer_added_by_agent": "YES"
  },
  "mode": "CONTROLLED_AGENT_RUN_APPLY_PEER_ONLY_DYNAMIC_JOB_COLUMNS",
  "publish": {
    "local_report": "http://127.0.0.1:8099/r/e94a0859747d7b96f29c7fdafc2d0351ba603bb0a7e9e5a4/20260709-082115_step041c3_controlled_agent_run_dynamic_job_columns/",
    "trycf_report": "https://helena-background-beam-harry.trycloudflare.com/r/e94a0859747d7b96f29c7fdafc2d0351ba603bb0a7e9e5a4/20260709-082115_step041c3_controlled_agent_run_dynamic_job_columns/"
  },
  "schema": "router-step-facts-v1",
  "step": "STEP_041C3_CONTROLLED_AGENT_RUN_DYNAMIC_JOB_COLUMNS",
  "vm100_after": {
    "nft_ip14_cs5_visible_rc": 1,
    "selector_count": 4,
    "selector_ip14_cs5_present_rc": 1,
    "wg_paid_ip14_peer_visible_rc": 0,
    "wg_paid_peer_count": 5
  },
  "vm100_before": {
    "nft_ip14_cs5_visible_rc": 1,
    "selector_count": 4,
    "selector_ip14_cs5_present_rc": 1,
    "wg_paid_ip14_peer_visible_rc": 1,
    "wg_paid_peer_count": 4
  }
}
