{
  "errors": [],
  "vm121": {
    "create_result": {
      "rc": 255,
      "stderr": "400 Parameter verification failed.\nsnapname: value may only be 40 characters long\nqm snapshot <vmid> <snapname> [OPTIONS]",
      "stdout": ""
    },
    "created": false,
    "pre_exists": false,
    "pre_list": {
      "rc": 0,
      "stderr": "",
      "stdout": "`-> STEP_002_BACKEND_DB_OK      2026-07-04 13:14:55     wg-access-dev: Docker PostgreSQL + FastAPI health/db OK\n `-> STEP_005_API_DB_OK         2026-07-04 13:30:05     wg-access-dev: DB schema + admin/dev API + provisioning job OK\n  `-> STEP_006_AGENT_PULL_API_OK 2026-07-04 13:35:10     wg-access-dev: agent pull API pending-running-completed OK\n   `-> STEP_007_AGENT_DRY_RUN_OK 2026-07-04 13:39:12     wg-access-dev: local dry-run agent pulls jobs and updates active-peers cache\n    `-> STEP_008_AGENT_TIMER_OK 2026-07-04 13:43:20     wg-access-dev: systemd timer runs dry-run agent automatically\n     `-> STEP_010_AGENT_SSH_TO_VM100_OK 2026-07-04 16:11:41     wg-access-dev: agent SSH key can control VM100 wg_paid\n      `-> STEP_011_MANUAL_WG_SET_VM100_OK 2026-07-04 16:17:22     wg-access-dev: manual SSH wg set add/remove peer on VM100 wg_paid OK\n       `-> STEP_012_REAL_AGENT_PROVISION_VM100_OK 2026-07-04 16:29:59     wg-access-dev: backend creates real WG keys and agent provisions peer to VM100 wg_paid\n        `-> STEP_013_WG_HANDSHAKE_VM121_TO_VM100_OK 2026-07-04 16:36:13     wg-access-dev: real WireGuard handshake from VM121 to VM100 wg_paid OK\n         `-> STEP_014_AGENT_RECONCILE_SYNC_OK 2026-07-04 16:49:14     wg-access-dev: agent reconciliation restores enabled peers to VM100 wg_paid\n          `-> STEP_015_DISABLE_DEPROVISION_OK 2026-07-04 18:14:56     wg-access-dev: disable peer API and agent deprovision from VM100 wg_paid OK\n           `-> STEP_016_CLIENT_CONFIG_RESPONSE_OK 2026-07-04 18:20:16     wg-access-dev: backend returns ready WireGuard client_config and agent provisions peer\n            `-> STEP_018B_POOL_16_REUSE_ALLOCATOR_OK 2026-07-04 18:58:03     wg-access-dev: /16 pool and first-free enabled-peer IP allocator OK\n             `-> STEP_019A_TEST_PEERS_CLEANED_OK 2026-07-04 19:00:35     wg-access-dev: all active test peers disabled and VM100 wg_paid clean\n              `-> STEP_019B_CLEAN_POOL_SMOKE_OK 2026-07-04 19:03:35     wg-access-dev: clean-pool create/provision/handshake/disable/deprovision smoke test OK\n               `-> STEP_020C_AGENT_TIMER_REAL_PERIODIC_OK 2026-07-04 19:08:00     wg-access-dev: real agent systemd timer active and periodically running clean\n                `-> STEP_020D_TIMER_AUTO_OK 2026-07-04 19:25:14     wg-access-dev: timer automatically provisions and deprovisions real WG peers\n                 `-> STEP_021C_ADMIN_SUB_OK 2026-07-04 19:34:57     wg-access-dev: admin subscriptions endpoint creates real WG client flow\n                  `-> STEP_022B_SHARED_WG_OK 2026-07-04 20:25:25     wg-access-dev: dev endpoint uses shared WG service and smoke test OK\n                   `-> STEP_023A_DEV_GUARD_OK 2026-07-04 20:38:22     wg-access-dev: dev endpoints guarded and smoke test clean\n                    `-> STEP_024A_USER_VIEW_OK 2026-07-04 20:57:32     wg-access-dev: admin user detail endpoints smoke test OK\n                     `-> STEP_025A_CANCEL_SUB_OK 2026-07-04 21:15:07     wg-access-dev: admin cancel subscription endpoint smoke test OK\n                      `-> STEP_026A_EXPIRE_SUB_OK 2026-07-04 21:24:34     wg-access-dev: expiration maintenance endpoint smoke test OK\n                       `-> STEP_011_WG_ACCESS_PRECHANGE_OK 2026-07-05 12:42:19     WG Access pre-change wrapper installed and checked\n                        `-> STEP_027B_BEFORE_NEXT_WORK 2026-07-05 12:43:36     before continuing WG Access development\n                         `-> STEP_027C_BEFORE_EXPIRE_AUTOMATION 2026-07-05 12:59:50     before automatic subscription expiration runner\n                          `-> STEP_027C_BEFORE_EXPIRE_TIMER 2026-07-05 13:18:21     before automatic expire-subscriptions timer\n                           `-> STEP_027C_EXPIRE_TIMER_OK 2026-07-05 13:21:40     automatic expire-subscriptions systemd timer installed and smoke OK\n                            `-> STEP_027D_EXPIRE_TIMER_E2E_OK 2026-07-05 13:39:53     expire-subscriptions timer e2e smoke OK: create, provision, expire, deprovision\n                             `-> STEP_004B_WG_PAID_CLIENT_PATH_OK 2026-07-06 18:33:29     VM121: direct MGTS admin via wg-mgts OK; temp wg_paid client smoke OK\n                              `-> STEP_004C_ACCESS_MAP_VM121_DIRECT_OK 2026-07-06 18:43:36     VM121: direct wg-mgts MGTS access documented in router-ops access-map\n                               `-> STEP_028A_MGTS_WG_PAID_E2E_OK 2026-07-06 22:01:06     wg-access-dev: MGTS wg_paid backend-agent-client E2E smoke OK; cleanup OK; backend env updated to MGTS key/internal endpoint\n                                `-> STEP_042K_AGENT_AUTOMATION_OK 2026-07-09 13:51:42     wg-access-dev: STEP_042K agent automation host watcher + bind mount happy path OK, DB dump saved on VM121\n                                 `-> S042K_OK_20260709_1110 2026-07-09 14:10:14     STEP_042K wg-access automation + reboot recovery checkpoint OK\n                                  `-> current                         You are here!"
    },
    "snapshot": "STEP_044U_WG_ACCESS_DB_AFTER_ACTIVITY_SAMPLER_OK"
  },
  "vm130": {
    "create_result": {
      "rc": 255,
      "stderr": "400 Parameter verification failed.\nsnapname: value may only be 40 characters long\nqm snapshot <vmid> <snapname> [OPTIONS]",
      "stdout": ""
    },
    "created": false,
    "pre_exists": false,
    "pre_list": {
      "rc": 0,
      "stderr": "",
      "stdout": "`-> STEP_004_ROUTER_OPS_BASE_OK 2026-07-05 12:29:28     VM130 router-ops base installed: router-run/router-last/router-targets, VM120 and pve-ai SSH OK, guest-agent OK\n `-> STEP_007_VM121_CONNECTED   2026-07-05 12:35:14     router-ops: VM121 wg-access-dev connected by SSH key; pve-ai/vm120/vm121 checks OK\n  `-> STEP_009_WG_ACCESS_STEPS_OK 2026-07-05 12:39:23     router-ops: wg-access/status and wg-access/smoke installed and smoke OK\n   `-> STEP_010_PARAM_STEPS_OK  2026-07-05 12:41:09     router-step supports args; pve snapshot/list/status and wg-access logs installed\n    `-> STEP_012B_SECRET_MASKING_OK 2026-07-05 12:53:52     router-run masks OpenWrt private_key output; VM100 read-only access OK\n     `-> STEP_012C_AGENT_VM100_SMOKE_OK 2026-07-05 12:56:44     WG Access agent SSH to VM100 smoke step installed; VM121 agent key restored on VM100\n      `-> STEP_027C_EXPIRE_TIMER_STEPS_OK 2026-07-05 13:21:47     router-ops expire timer status/run steps installed\n       `-> STEP_027D_EXPIRE_E2E_STEP_OK 2026-07-05 13:39:57     router-ops expire-e2e-smoke step installed, masking strengthened, verified\n        `-> current                                     You are here!"
    },
    "snapshot": "STEP_044U_ACTIVITY_SAMPLER_TIMER_ENABLED_OK"
  }
}
