VM130_TOOL_bash=present VM130_TOOL_sh=present VM130_TOOL_python3=present VM130_TOOL_sha256sum=present VM130_TOOL_tar=present VM130_TOOL_base64=present VM130_TOOL_ssh=present VM130_TOOL_scp=present VM130_TOOL_flock=present SNAPSHOT_NAME=r20qo-pre-direct-exit SNAPSHOT_NAME_LENGTH=21 TARGET_PACKAGE_EXPECTED_SHA256=b6a9ebbc964981f10188a77c32b249d97e1a048d15ab38ed84cd6c0a6cd50c45 TARGET_PACKAGE_ACTUAL_SHA256=b6a9ebbc964981f10188a77c32b249d97e1a048d15ab38ed84cd6c0a6cd50c45 fixtures/vm100/etc/router-wgpay-selector.d/peers.conf: OK fixtures/vm100/usr/local/lib/router-wgpay-slot-topology-lib.sh: OK fixtures/vm101/usr/local/sbin/router-egress-zero-healthy-bootstrap.sh: OK rootfs/vm100/etc/router-wgpay-slot-topology.conf: OK rootfs/vm100/usr/local/sbin/router-wgpay-direct-mode.sh: OK rootfs/vm100/usr/local/sbin/router-wgpay-slot-topology-apply.sh: OK runtime/vm100-direct-exit-isolated-proof.sh: OK runtime/vm101-refresh-handoff-isolated-proof.sh: OK TARGET_BUSYBOX_SYNTAX_OK=10.71.100.1:payload/rootfs/vm100/usr/local/sbin/router-wgpay-slot-topology-apply.sh TARGET_BUSYBOX_SYNTAX_OK=10.71.100.1:payload/rootfs/vm100/usr/local/sbin/router-wgpay-direct-mode.sh TARGET_BUSYBOX_SYNTAX_OK=10.71.100.1:payload/runtime/vm100-direct-exit-isolated-proof.sh TARGET_BUSYBOX_SYNTAX_OK=10.71.100.2:payload/runtime/vm101-refresh-handoff-isolated-proof.sh TARGET_BUSYBOX_SYNTAX_OK=10.71.100.1:scripts/vm100-preflight.sh TARGET_BUSYBOX_SYNTAX_OK=10.71.100.2:scripts/vm101-preflight.sh TARGET_BUSYBOX_SYNTAX_OK=10.71.100.1:scripts/vm100-backup.sh TARGET_BUSYBOX_SYNTAX_OK=10.71.100.1:scripts/vm100-apply.sh TARGET_BUSYBOX_SYNTAX_OK=10.71.100.1:scripts/vm100-postcheck.sh TARGET_BUSYBOX_SYNTAX_OK=10.71.100.1:scripts/vm100-rollback.sh TARGET_BUSYBOX_SYNTAX_OK=10.71.100.2:scripts/vm101-refresh-proof-run.sh >>> [vm100-source] precheck MODE=--check REPOSITORY_URL=https://github.com/DChuvelev/wg-paid-vm100.git REPO_DIR=/opt/router-ops/state/source-repositories/wg-paid-vm100 >>> [vm100-source] run VM100 git publisher through approved nested SSH >>> [vm100-git] precheck MODE=--check PROFILE=/etc/router-machine-git-source.conf PROFILE_VERSION=2 PROFILE_SHA256=1ab9b29bc9b55c359164350e0112e5deec893d279e8212cce516477b76f67635 MACHINE_ID=vm100 GIT_DIR=/root/.vm100-source.git WORK_TREE=/ BRANCH=main REMOTE_URL=git@github.com:DChuvelev/wg-paid-vm100.git LOCAL_HEAD=fe3d91531cc78dc2139ec862cc7435da2433e782 >>> [vm100-git] verify remote branch ssh: Ignoring unknown configuration option 'IdentitiesOnly=yes' REMOTE_HEAD=fe3d91531cc78dc2139ec862cc7435da2433e782 >>> [vm100-git] build current project allowlist >>> [vm100-git] read paths already tracked by git CURRENT_ALLOWED_COUNT=28 TRACKED_COUNT=28 MANAGED_UNION_COUNT=28 >>> [vm100-git] strict path validation STRICT_PATH_VALIDATION=true >>> [vm100-git] show tracked files now missing from machine TRACKED_PATH_MISSING_COUNT=0 >>> [vm100-git] build simulated git index STAGED_CHANGE_COUNT=0 STAGED_PATHS=NONE >>> [vm100-git] validate simulated staged paths STAGED_PATH_VALIDATION=true SIMULATED_TREE_SHA=c288927e41f45fc605dfbfdbaf3ee6c4d555e772 SIMULATED_TREE_FILE_COUNT=28 >>> [vm100-git] high-confidence secret scan of simulated tree HIGH_CONFIDENCE_SECRET_MATCHES=0 >>> [vm100-git] keyword review scan KEYWORD_REVIEW_FILES=NONE RESULT=PASS_vm100_GIT_PUBLISH_CHECK MACHINE_ID=vm100 GIT_COMMIT=fe3d91531cc78dc2139ec862cc7435da2433e782 GIT_TREE=c288927e41f45fc605dfbfdbaf3ee6c4d555e772 GIT_FILE_COUNT=28 COMMIT_CREATED=false PUSH_PERFORMED=false VM100_RESULT=PASS_vm100_GIT_PUBLISH_CHECK VM100_COMMIT=fe3d91531cc78dc2139ec862cc7435da2433e782 VM100_REMOTE_COMMIT=fe3d91531cc78dc2139ec862cc7435da2433e782 >>> [vm100-source] clone or refresh repository on VM130 CURRENT_ORIGIN=https://github.com/DChuvelev/wg-paid-vm100.git branch 'main' set up to track 'origin/main'. Your branch is up to date with 'origin/main'. HEAD is now at fe3d915 vm100: publish managed source 2026-07-28T20:46:49Z VM130_COMMIT=fe3d91531cc78dc2139ec862cc7435da2433e782 VM130_TREE=c288927e41f45fc605dfbfdbaf3ee6c4d555e772 VM130_FILE_COUNT=28 VM130_STATUS=CLEAN >>> [vm100-source] verify required managed paths REQUIRED_PATH_OK=etc/router-machine-git-source.conf REQUIRED_PATH_OK=usr/local/sbin/router-machine-git-publish.sh REQUIRED_PATH_OK=usr/local/sbin/router-vm100-git-publish.sh RESULT=PASS_VM130_VM100_GIT_SOURCE_CHECK VM100_COMMIT=fe3d91531cc78dc2139ec862cc7435da2433e782 VM130_COMMIT=fe3d91531cc78dc2139ec862cc7435da2433e782 VM130_TREE=c288927e41f45fc605dfbfdbaf3ee6c4d555e772 VM130_FILE_COUNT=28 VM100_PUSH_PERFORMED=false ARCHIVE_CREATED=false PERMANENT_HTTPS_PUBLISHED=false >>> [vm101-source] precheck MODE=--check REPOSITORY_URL=https://github.com/DChuvelev/wg-paid-vm101.git REPO_DIR=/opt/router-ops/state/source-repositories/wg-paid-vm101 >>> [vm101-source] run VM101 git publisher through approved nested SSH >>> [vm101-git] precheck MODE=--check PROFILE=/etc/router-machine-git-source.conf PROFILE_VERSION=2 PROFILE_SHA256=1d183db527698c59f5089ae3c76ba52e8f14f89e6d4e76d2fd748d2abbd0d23f MACHINE_ID=vm101 GIT_DIR=/root/.vm101-source.git WORK_TREE=/ BRANCH=main REMOTE_URL=git@github.com:DChuvelev/wg-paid-vm101.git LOCAL_HEAD=df069285ed7a3291a6b2936cf8762ec639b3bcf2 >>> [vm101-git] verify remote branch REMOTE_HEAD=df069285ed7a3291a6b2936cf8762ec639b3bcf2 >>> [vm101-git] build current project allowlist >>> [vm101-git] read paths already tracked by git CURRENT_ALLOWED_COUNT=51 TRACKED_COUNT=51 MANAGED_UNION_COUNT=51 >>> [vm101-git] strict path validation STRICT_PATH_VALIDATION=true >>> [vm101-git] show tracked files now missing from machine TRACKED_PATH_MISSING_COUNT=0 >>> [vm101-git] build simulated git index STAGED_CHANGE_COUNT=0 STAGED_PATHS=NONE >>> [vm101-git] validate simulated staged paths STAGED_PATH_VALIDATION=true SIMULATED_TREE_SHA=ca653a88d7942e19563d055c25d93756997f8a69 SIMULATED_TREE_FILE_COUNT=51 >>> [vm101-git] high-confidence secret scan of simulated tree HIGH_CONFIDENCE_SECRET_MATCHES=0 >>> [vm101-git] keyword review scan === FILES REQUIRING KEYWORD REVIEW === ca653a88d7942e19563d055c25d93756997f8a69:hmn/hmn-load-vpn-test.sh ca653a88d7942e19563d055c25d93756997f8a69:hmn/hmn-set-code.sh RESULT=PASS_vm101_GIT_PUBLISH_CHECK MACHINE_ID=vm101 GIT_COMMIT=df069285ed7a3291a6b2936cf8762ec639b3bcf2 GIT_TREE=ca653a88d7942e19563d055c25d93756997f8a69 GIT_FILE_COUNT=51 COMMIT_CREATED=false PUSH_PERFORMED=false VM101_PUBLISHER_RC=0 VM101_RESULT=PASS_vm101_GIT_PUBLISH_CHECK VM101_COMMIT=df069285ed7a3291a6b2936cf8762ec639b3bcf2 VM101_REMOTE_COMMIT=df069285ed7a3291a6b2936cf8762ec639b3bcf2 >>> [vm101-source] clone or refresh repository on VM130 CURRENT_ORIGIN=https://github.com/DChuvelev/wg-paid-vm101.git branch 'main' set up to track 'origin/main'. Your branch is up to date with 'origin/main'. HEAD is now at df06928 vm101: publish managed source 2026-07-29T06:39:44Z VM130_COMMIT=df069285ed7a3291a6b2936cf8762ec639b3bcf2 VM130_TREE=ca653a88d7942e19563d055c25d93756997f8a69 VM130_FILE_COUNT=51 VM130_STATUS=CLEAN >>> [vm101-source] verify required managed paths REQUIRED_PATH_OK=etc/crontabs/root REQUIRED_PATH_OK=usr/local/sbin/router-vm101-git-publish.sh RESULT=PASS_VM130_VM101_GIT_SOURCE_CHECK VM101_COMMIT=df069285ed7a3291a6b2936cf8762ec639b3bcf2 VM130_COMMIT=df069285ed7a3291a6b2936cf8762ec639b3bcf2 VM130_TREE=ca653a88d7942e19563d055c25d93756997f8a69 VM130_FILE_COUNT=51 VM101_PUSH_PERFORMED=false ARCHIVE_CREATED=false PERMANENT_HTTPS_PUBLISHED=false PVE_TOOL_qm=present PVE_TOOL_ssh=present PVE_TOOL_scp=present PVE_TOOL_sh=present VM100_QM_STATUS=status: running VM101_QM_STATUS=status: running RESULT=PASS_R20QO_PVE_PREFLIGHT VM100_TOOL_sh=present VM100_TOOL_git=present VM100_TOOL_sha256sum=present VM100_TOOL_awk=present VM100_TOOL_grep=present VM100_TOOL_flock=present VM100_TOOL_nft=present VM100_TOOL_ps=present VM100_CURRENT_COMMIT=fe3d91531cc78dc2139ec862cc7435da2433e782 VM100_CURRENT_TREE=c288927e41f45fc605dfbfdbaf3ee6c4d555e772 VM100_CURRENT_FILE_COUNT=28 VM100_TRACKED_STATUS_CLEAN=true VM100_EXPECTED_CHANGED_PATHS=etc/router-wgpay-slot-topology.conf,usr/local/sbin/router-wgpay-slot-topology-apply.sh,usr/local/sbin/router-wgpay-direct-mode.sh PATH_SHA256=/etc/router-wgpay-slot-topology.conf:73bac9f6b7afcd77ba00b0a9cb4ee29436b1c250eee4d2f967b8480466d65b00 PATH_SHA256=/usr/local/sbin/router-wgpay-slot-topology-apply.sh:67a7cd0bfb0aafb8b89866d959cdd57d8ede3d10ac928a785e3b1a31440e950f PATH_SHA256=/usr/local/sbin/router-wgpay-direct-mode.sh:9ad45ec1af5bb89630bf9a73104e17d479dbbe1e3fbd7e5da3bc2442fcf849cb PATH_SHA256=/etc/router-wgpay-selector.d/peers.conf:46d41783effb8d80ea1b09895f829b98a0946e0edbff1e29e7651eb3ef9b036a VM100_SELECTOR_COUNTS=1,1,1,1,1 VM100_TOPOLOGY_MODE=NORMAL VM100_DIRECT_POLICY_ENABLED=false VM100_ACTIVE_DIRECT_ROUTE=false VM100_ALLOCATOR_RUNNING=true VM100_DIRECT_STATE_PRESENT=false VM100_SELECTOR_LOCK_FREE=true VM100_DIRECT_LOCK_FREE=true VM100_SELECTOR_SHA256=46d41783effb8d80ea1b09895f829b98a0946e0edbff1e29e7651eb3ef9b036a VM100_TOPOLOGY_STATE_SHA256=a2c28478563b7f7d9854c9a6d0f454199b65891b1881ef5b6389759bed513694 VM100_TOPOLOGY_PLAN_SHA256=6b7fed454f6a7c14d37889120f768acf9fd3b4dcd099241a71eb7ddcee00c934 VM100_TOPOLOGY_ACK_SHA256=5ee9f6400facb32b7f7a288b455f42dba0f37986744fe61553b889ef008ff174 RESULT=PASS_R20QO_VM100_PREFLIGHT VM101_TOOL_sh=present VM101_TOOL_git=present VM101_TOOL_sha256sum=present VM101_TOOL_awk=present VM101_TOOL_grep=present VM101_TOOL_ps=present VM101_CURRENT_COMMIT=df069285ed7a3291a6b2936cf8762ec639b3bcf2 VM101_CURRENT_TREE=ca653a88d7942e19563d055c25d93756997f8a69 VM101_CURRENT_FILE_COUNT=51 VM101_TRACKED_STATUS_CLEAN=true VM101_EXPECTED_CHANGED_PATHS=NONE PATH_SHA256=/etc/router-egress-vm101.conf:a4d59b67d514ab0e19fd4ed0108ef0818cc1ad8a92aa373de744b35b82841ff6 PATH_SHA256=/etc/router-egress-zero-healthy-bootstrap.conf:65dca04bed270a51cf0d0deeff568dffc83357102a5f0f98c2aa76765cc4086c PATH_SHA256=/etc/init.d/router-egress-zero-healthy-bootstrap:3c504e60266ccc967b19dcc2c10301e4bb20c7494ef7f74174f1ac6529b3e37f PATH_SHA256=/usr/local/sbin/router-egress-zero-healthy-bootstrap.sh:c1f72430b979af313234f4fada58d7fc89c577dd4b36232aa532ef9d723765a6 PATH_SHA256=/usr/local/lib/router-egress-recovery-state.sh:15e10cba2fee582f83b76df8a79e27217ad4baed7df6fed521ef701b13841ea9 VM101_FALLBACK_MODE=NORMAL VM101_HEALTHY_SLOTS=egress1,egress2,egress3,egress4,egress5 VM101_RECOVERY_MODE=NORMAL VM101_FULL_REFRESH_DUE=false VM101_HEALTHY_SLOT_COUNT=5 VM101_BOOTSTRAP_SERVICE_RUNNING=true VM101_WATCHER_RUNNING=true VM101_RETRY_SERVICE_RUNNING=true VM101_DELIVERY_RUNNING=true VM101_HEAVY_REFRESH_RUNNING=false VM101_DIRECT_SOURCE_PRESENT=false VM101_TOPOLOGY_PENDING_PRESENT=false VM101_BOOTSTRAP_STATE_PRESENT=false VM101_BOOTSTRAP_LOCK_PRESENT=false VM101_RECOVERY_STATE_SHA256=1987d5b037be1c239918dfadb586e40a1d667ceacee3435bfab1b845ca009f12 VM101_FALLBACK_STATE_SHA256=8f536f1357afa50ff97e8bd4871e30deb2357a22ead8683e2058bf0db4faf175 VM101_FALLBACK_ACK_SHA256=dc01d32cf4efacc794cce048b04ac3e9ead7761df0b25fd98d05ab45d2bda9ba VM101_WATCHER_STATE_SHA256=39c7827c64cc6860605dd319f690fbcf3418ae7e599770f19cf57c2af4fc19a3 VM101_DELIVERY_STATE_SHA256=1a75fd6f53612ec22b1d9eb4d2aa0a2a87df7bf7d8522f0022db09ba096baaad VM101_NETWORK_SHA256=f3d6f545b555ab9bc069eaa0045a910969ec1fee403d9a697bf62c8ef38cd79e RESULT=PASS_R20QO_VM101_PREFLIGHT RESULT=PASS_R20QO_PREFLIGHT