/etc/router-wgpay-selector.d/peers.conf: OK /var/lib/router-wgpay-topology/state.kv: OK /var/lib/router-wgpay-topology/plan.kv: OK /var/lib/router-wgpay-topology/ack.kv: OK VM100_SELECTOR_SHA256=46d41783effb8d80ea1b09895f829b98a0946e0edbff1e29e7651eb3ef9b036a VM100_PRODUCTION_RUNTIME_UNCHANGED=true DIRECT_POLICY_ENABLED=false ACTIVE_DIRECT_ROUTE=false RESULT=PASS_R20QO_VM100_POSTCHECK >>> [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=3 === STAGED PATHS === etc/router-wgpay-slot-topology.conf usr/local/sbin/router-wgpay-direct-mode.sh usr/local/sbin/router-wgpay-slot-topology-apply.sh >>> [vm100-git] validate simulated staged paths STAGED_PATH_VALIDATION=true SIMULATED_TREE_SHA=f9a7e80c41c48b145bf2631d76afdeee4cc5e62c 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=f9a7e80c41c48b145bf2631d76afdeee4cc5e62c 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 VM100_STAGED_CHANGE_COUNT=3 VM101_STAGED_CHANGE_COUNT=0 PRODUCTION_RUNTIME_STATE_UNCHANGED=true RESULT=PASS_R20QO_POSTCHECK