diff --git a/runtime/history/SUPPORT-261007-PVE01-64020-ARTIFACT-RECOVERY-RCA-99759R1.json b/runtime/history/SUPPORT-261007-PVE01-64020-ARTIFACT-RECOVERY-RCA-99759R1.json new file mode 100644 index 00000000..61a87f6c --- /dev/null +++ b/runtime/history/SUPPORT-261007-PVE01-64020-ARTIFACT-RECOVERY-RCA-99759R1.json @@ -0,0 +1,38 @@ +{ + "schema_version": 1, + "channel": "homelab-runtime", + "command_id": "SUPPORT-261007-PVE01-64020-ARTIFACT-RECOVERY-RCA-99759R1", + "status": "OK", + "rc": 0, + "host": "pve01", + "mode": "read-only", + "component": "pve01-64020-artifact-recovery-rca", + "started_at_utc": "2026-10-07T04:57:58Z", + "finished_at_utc": "2026-10-07T04:58:24Z", + "reference_register_checked": true, + "reference_sha256": "5a3d8e5154c41cb582a4e0aca68090be1f0138918bf82131a948df326f9d8d66", + "error_register_checked": true, + "error_register_sha256": "3b09a553ec0f527ed3afeed4753f52a74ee3036045bbfb3c685e9f8af4ba7ba0", + "command_sha256": "c57c2a602e05695f02ad28341a5f49d2680992922641c75621b51fc2bb8bf2d5", + "duplicate_failed_command_blocked": false, + "block_reason": null, + "execution_started": true, + "change_declared": false, + "result_contract_valid": true, + "result_contract_status": null, + "result_contract_error": null, + "command_rc": 0, + "changes_made": false, + "rollback_started": false, + "rollback_restored": null, + "mutation_outcome": "NO_MUTATION", + "sanitized": true, + "secrets_included": false, + "private_addresses_included": false, + "raw_evidence_retained_locally": true, + "raw_evidence_sha256": "15cb2d40f87fb4b3686067060cf42a503a68188ab6309b35e24648dfd1d9432c", + "sanitized_output_sha256": "15cb2d40f87fb4b3686067060cf42a503a68188ab6309b35e24648dfd1d9432c", + "output_truncated_in_json": false, + "full_sanitized_output_url": "https://git.gram1.ru/.well-known/homelab-runtime/latest.txt", + "output": "PVE01_64020_ARTIFACT_RECOVERY_RCA=V1\nMODE=read-only\nNO_MUTATION=true\nHOST=pve01\nPVE64020_LISTENER_COUNT=0\nPVE64020_SSHD_OWNER_COUNT=0\nSOCAT_PRESENT=0\nCURL_PRESENT=0\nPYTHON3_PRESENT=0\nARTIFACT_CANDIDATE_COUNT=0\nFILES_SCANNED_CAPPED_AT=30001\nREC|HISTORY|IDX=1|BASENAME=.bash_history|LINE=302|TEXT= echo \"PVE64020_LISTENER_COUNT=${P64020:-0}\"\nREC|HISTORY|IDX=2|BASENAME=.bash_history|LINE=303|TEXT= echo \"PVE64020_TELEGRAM_OK=${P64020_TG:-false}\"\nREC|HISTORY|IDX=3|BASENAME=.bash_history|LINE=304|TEXT= echo \"PVE64020_IOBIT_OK=${P64020_IO:-false}\"\nREC|HISTORY|IDX=4|BASENAME=.bash_history|LINE=456|TEXT=P64020=\"$(ss -ltnH 2> / awk '$4 ~ /:64020$/ {n++} END{print n+0}')\"\nREC|HISTORY|IDX=5|BASENAME=.bash_history|LINE=457|TEXT=P64020_TG=false; P64020_IO=false\nREC|HISTORY|IDX=6|BASENAME=.bash_history|LINE=458|TEXT=if [ \"$P64020\" -gt 0 ] && command -v curl > 2>&1; then\nREC|HISTORY|IDX=7|BASENAME=.bash_history|LINE=459|TEXT= T=\"$(curl -ksS -o -w '%{http_code}' --connect-timeout 5 --max-time 15 --socks5-hostname :64020 https://telegram.org/ 2> // true)\"\nREC|HISTORY|IDX=8|BASENAME=.bash_history|LINE=460|TEXT= I=\"$(curl -ksS -o -w '%{http_code}' --connect-timeout 5 --max-time 15 --socks5-hostname :64020 https://www.iobit.com/ 2> // true)\"\nREC|HISTORY|IDX=9|BASENAME=.bash_history|LINE=461|TEXT= [ -n \"$T\" ] && [ \"$T\" != 000 ] && P64020_TG=true\nREC|HISTORY|IDX=10|BASENAME=.bash_history|LINE=462|TEXT= [ -n \"$I\" ] && [ \"$I\" != 000 ] && P64020_IO=true\nHISTORY_MATCH_COUNT=10\nREC|JOURNAL_META|UNIT=skladchik-pve64020-local-relay-w2.service|BOOT=-1|COMM=systemd|EXE=systemd|CMD=|MSG=Started skladchik-pve64020-local-relay-w2.service - Skladchik local CONNECT relay to PVE64020.\nREC|JOURNAL_META|UNIT=skladchik-pve64020-local-relay-w2.service|BOOT=-1|COMM=systemd|EXE=systemd|CMD=|MSG=Stopping skladchik-pve64020-local-relay-w2.service - Skladchik local CONNECT relay to PVE64020...\nREC|JOURNAL_META|UNIT=skladchik-pve64020-local-relay-w2.service|BOOT=-1|COMM=systemd|EXE=systemd|CMD=|MSG=skladchik-pve64020-local-relay-w2.service: Deactivated successfully.\nREC|JOURNAL_META|UNIT=skladchik-pve64020-local-relay-w2.service|BOOT=-1|COMM=systemd|EXE=systemd|CMD=|MSG=Stopped skladchik-pve64020-local-relay-w2.service - Skladchik local CONNECT relay to PVE64020.\nJOURNAL_RECORD_COUNT|UNIT=skladchik-pve64020-local-relay-w2.service|BOOT=-1|COUNT=4\nREC|JOURNAL_META|UNIT=skladchik-pve64020-relay-w2.service|BOOT=-1|COMM=systemd|EXE=systemd|CMD=|MSG=Started skladchik-pve64020-relay-w2.service - Skladchik PVE64020 restricted relay.\nREC|JOURNAL_META|UNIT=skladchik-pve64020-relay-w2.service|BOOT=-1|COMM=systemd|EXE=systemd|CMD=|MSG=Stopping skladchik-pve64020-relay-w2.service - Skladchik PVE64020 restricted relay...\nREC|JOURNAL_META|UNIT=skladchik-pve64020-relay-w2.service|BOOT=-1|COMM=systemd|EXE=systemd|CMD=|MSG=skladchik-pve64020-relay-w2.service: Deactivated successfully.\nREC|JOURNAL_META|UNIT=skladchik-pve64020-relay-w2.service|BOOT=-1|COMM=systemd|EXE=systemd|CMD=|MSG=Stopped skladchik-pve64020-relay-w2.service - Skladchik PVE64020 restricted relay.\nJOURNAL_RECORD_COUNT|UNIT=skladchik-pve64020-relay-w2.service|BOOT=-1|COUNT=4\nREC|JOURNAL_META|UNIT=skladchik-pve-connect-w2.service|BOOT=-1|COMM=systemd|EXE=systemd|CMD=|MSG=Started skladchik-pve-connect-w2.service - Skladchik target-locked CONNECT proxy over selected SOCKS egress.\nREC|JOURNAL_META|UNIT=skladchik-pve-connect-w2.service|BOOT=-1|COMM=systemd|EXE=systemd|CMD=|MSG=Stopping skladchik-pve-connect-w2.service - Skladchik target-locked CONNECT proxy over selected SOCKS egress...\nREC|JOURNAL_META|UNIT=skladchik-pve-connect-w2.service|BOOT=-1|COMM=systemd|EXE=systemd|CMD=|MSG=skladchik-pve-connect-w2.service: Deactivated successfully.\nREC|JOURNAL_META|UNIT=skladchik-pve-connect-w2.service|BOOT=-1|COMM=systemd|EXE=systemd|CMD=|MSG=Stopped skladchik-pve-connect-w2.service - Skladchik target-locked CONNECT proxy over selected SOCKS egress.\nJOURNAL_RECORD_COUNT|UNIT=skladchik-pve-connect-w2.service|BOOT=-1|COUNT=28\nREC|GIT_HISTORY_ROOT|REPO_BASENAME=homelab-desired-state|REPO_PATH_SHA=4127c2c0fd546c50b3e47204c649300242e01b83080b84198fc2dec81f0949a4|NEEDLE=64020|COUNT=4\nREC|GIT_COMMIT|REPO=homelab-desired-state|NEEDLE=64020|COMMIT=f961ac7f37eb3de61901e6518aff803547c87a04|DATE=2026-07-10T22:20:26+03:00|SUBJECT=desired-state sync 2026-07-10T19:20:26Z\nREC|GIT_COMMIT|REPO=homelab-desired-state|NEEDLE=64020|COMMIT=52c1529465cf42ae262bee67c771c02073635c8a|DATE=2026-07-10T22:15:52+03:00|SUBJECT=desired-state sync 2026-07-10T19:15:52Z\nREC|GIT_COMMIT|REPO=homelab-desired-state|NEEDLE=64020|COMMIT=63545467db73aa53475320b9d4a64191bedb827f|DATE=2026-07-07T07:01:36+03:00|SUBJECT=desired-state sync 2026-07-07T04:01:35Z\nREC|GIT_COMMIT|REPO=homelab-desired-state|NEEDLE=64020|COMMIT=bb8e23f72483acac13f1f1108ae0db3ba6f61473|DATE=2026-07-07T06:46:26+03:00|SUBJECT=desired-state sync 2026-07-07T03:46:25Z\nREC|GIT_HISTORY_ROOT|REPO_BASENAME=homelab-desired-state|REPO_PATH_SHA=aa772c204b72d67c5cb9e0f4386cf8d7808fa8b852aeb1b9262a64e34a690d24|NEEDLE=64020|COUNT=4\nREC|GIT_COMMIT|REPO=homelab-desired-state|NEEDLE=64020|COMMIT=f961ac7f37eb3de61901e6518aff803547c87a04|DATE=2026-07-10T22:20:26+03:00|SUBJECT=desired-state sync 2026-07-10T19:20:26Z\nREC|GIT_COMMIT|REPO=homelab-desired-state|NEEDLE=64020|COMMIT=52c1529465cf42ae262bee67c771c02073635c8a|DATE=2026-07-10T22:15:52+03:00|SUBJECT=desired-state sync 2026-07-10T19:15:52Z\nREC|GIT_COMMIT|REPO=homelab-desired-state|NEEDLE=64020|COMMIT=63545467db73aa53475320b9d4a64191bedb827f|DATE=2026-07-07T07:01:36+03:00|SUBJECT=desired-state sync 2026-07-07T04:01:35Z\nREC|GIT_COMMIT|REPO=homelab-desired-state|NEEDLE=64020|COMMIT=bb8e23f72483acac13f1f1108ae0db3ba6f61473|DATE=2026-07-07T06:46:26+03:00|SUBJECT=desired-state sync 2026-07-07T03:46:25Z\nREC|GIT_HISTORY_ROOT|REPO_BASENAME=homelab-desired-state|REPO_PATH_SHA=2aadb8e7adf59a3fcbec9edddcbbda20aa45c3a0d6569385bda09c5401085bb6|NEEDLE=64020|COUNT=4\nREC|GIT_COMMIT|REPO=homelab-desired-state|NEEDLE=64020|COMMIT=f961ac7f37eb3de61901e6518aff803547c87a04|DATE=2026-07-10T22:20:26+03:00|SUBJECT=desired-state sync 2026-07-10T19:20:26Z\nREC|GIT_COMMIT|REPO=homelab-desired-state|NEEDLE=64020|COMMIT=52c1529465cf42ae262bee67c771c02073635c8a|DATE=2026-07-10T22:15:52+03:00|SUBJECT=desired-state sync 2026-07-10T19:15:52Z\nREC|GIT_COMMIT|REPO=homelab-desired-state|NEEDLE=64020|COMMIT=63545467db73aa53475320b9d4a64191bedb827f|DATE=2026-07-07T07:01:36+03:00|SUBJECT=desired-state sync 2026-07-07T04:01:35Z\nREC|GIT_COMMIT|REPO=homelab-desired-state|NEEDLE=64020|COMMIT=bb8e23f72483acac13f1f1108ae0db3ba6f61473|DATE=2026-07-07T06:46:26+03:00|SUBJECT=desired-state sync 2026-07-07T03:46:25Z\nCLUSTER_QUORATE=true\nNETBIRD_LAZY=false\nNETBIRD_MANAGEMENT=true\nNETBIRD_SIGNAL=true\nNETBIRD_CONNECTED=5\nDECISION=PASS_PVE01_64020_ARTIFACT_RECOVERY_RCA\nNEXT_GATE=RESTORE_PROVEN_PVE64020_ENDPOINT\nTASK_RESULT=PVE01_64020_ARTIFACT_RECOVERY_RCA\nCHANGES_MADE=false\nROLLBACK_STARTED=false\nROLLBACK_RESTORED=null\nMUTATION_OUTCOME=NO_MUTATION\nHOMELAB_RESULT_CONTRACT={\"version\":1,\"command_id\":\"SUPPORT-261007-PVE01-64020-ARTIFACT-RECOVERY-RCA-99759R1\",\"status\":\"OK\",\"changes_made\":false,\"rollback_started\":false,\"rollback_restored\":null}\n" +} diff --git a/runtime/history/SUPPORT-261007-PVE01-64020-ARTIFACT-RECOVERY-RCA-99759R1.txt b/runtime/history/SUPPORT-261007-PVE01-64020-ARTIFACT-RECOVERY-RCA-99759R1.txt new file mode 100644 index 00000000..00af8738 --- /dev/null +++ b/runtime/history/SUPPORT-261007-PVE01-64020-ARTIFACT-RECOVERY-RCA-99759R1.txt @@ -0,0 +1,97 @@ +CHAT_OUTPUT_BEGIN +COMMAND_ID=SUPPORT-261007-PVE01-64020-ARTIFACT-RECOVERY-RCA-99759R1 +STATUS=OK +RC=0 +HOST=pve01 +MODE=read-only +COMPONENT=pve01-64020-artifact-recovery-rca +REFERENCE_REGISTER_CHECK=OK +REFERENCE_SHA256=5a3d8e5154c41cb582a4e0aca68090be1f0138918bf82131a948df326f9d8d66 +ERROR_REGISTER_CHECK=OK +ERROR_REGISTER_SHA256=3b09a553ec0f527ed3afeed4753f52a74ee3036045bbfb3c685e9f8af4ba7ba0 +COMMAND_SHA256=c57c2a602e05695f02ad28341a5f49d2680992922641c75621b51fc2bb8bf2d5 +DUPLICATE_FAILED_COMMAND_BLOCKED=false +EXECUTION_STARTED=true +CHANGE_DECLARED=false +RESULT_CONTRACT_VALID=true +RESULT_CONTRACT_STATUS=NOT_APPLICABLE +RESULT_CONTRACT_ERROR=NONE +COMMAND_RC=0 +CHANGES_MADE=false +ROLLBACK_STARTED=false +ROLLBACK_RESTORED=null +MUTATION_OUTCOME=NO_MUTATION +SANITIZED=yes +SECRETS_INCLUDED=no +PRIVATE_ADDRESSES_INCLUDED=no +RAW_EVIDENCE_SHA256=15cb2d40f87fb4b3686067060cf42a503a68188ab6309b35e24648dfd1d9432c +SANITIZED_OUTPUT_SHA256=15cb2d40f87fb4b3686067060cf42a503a68188ab6309b35e24648dfd1d9432c +OUTPUT_BEGIN +PVE01_64020_ARTIFACT_RECOVERY_RCA=V1 +MODE=read-only +NO_MUTATION=true +HOST=pve01 +PVE64020_LISTENER_COUNT=0 +PVE64020_SSHD_OWNER_COUNT=0 +SOCAT_PRESENT=0 +CURL_PRESENT=0 +PYTHON3_PRESENT=0 +ARTIFACT_CANDIDATE_COUNT=0 +FILES_SCANNED_CAPPED_AT=30001 +REC|HISTORY|IDX=1|BASENAME=.bash_history|LINE=302|TEXT= echo "PVE64020_LISTENER_COUNT=${P64020:-0}" +REC|HISTORY|IDX=2|BASENAME=.bash_history|LINE=303|TEXT= echo "PVE64020_TELEGRAM_OK=${P64020_TG:-false}" +REC|HISTORY|IDX=3|BASENAME=.bash_history|LINE=304|TEXT= echo "PVE64020_IOBIT_OK=${P64020_IO:-false}" +REC|HISTORY|IDX=4|BASENAME=.bash_history|LINE=456|TEXT=P64020="$(ss -ltnH 2> / awk '$4 ~ /:64020$/ {n++} END{print n+0}')" +REC|HISTORY|IDX=5|BASENAME=.bash_history|LINE=457|TEXT=P64020_TG=false; P64020_IO=false +REC|HISTORY|IDX=6|BASENAME=.bash_history|LINE=458|TEXT=if [ "$P64020" -gt 0 ] && command -v curl > 2>&1; then +REC|HISTORY|IDX=7|BASENAME=.bash_history|LINE=459|TEXT= T="$(curl -ksS -o -w '%{http_code}' --connect-timeout 5 --max-time 15 --socks5-hostname :64020 https://telegram.org/ 2> // true)" +REC|HISTORY|IDX=8|BASENAME=.bash_history|LINE=460|TEXT= I="$(curl -ksS -o -w '%{http_code}' --connect-timeout 5 --max-time 15 --socks5-hostname :64020 https://www.iobit.com/ 2> // true)" +REC|HISTORY|IDX=9|BASENAME=.bash_history|LINE=461|TEXT= [ -n "$T" ] && [ "$T" != 000 ] && P64020_TG=true +REC|HISTORY|IDX=10|BASENAME=.bash_history|LINE=462|TEXT= [ -n "$I" ] && [ "$I" != 000 ] && P64020_IO=true +HISTORY_MATCH_COUNT=10 +REC|JOURNAL_META|UNIT=skladchik-pve64020-local-relay-w2.service|BOOT=-1|COMM=systemd|EXE=systemd|CMD=|MSG=Started skladchik-pve64020-local-relay-w2.service - Skladchik local CONNECT relay to PVE64020. +REC|JOURNAL_META|UNIT=skladchik-pve64020-local-relay-w2.service|BOOT=-1|COMM=systemd|EXE=systemd|CMD=|MSG=Stopping skladchik-pve64020-local-relay-w2.service - Skladchik local CONNECT relay to PVE64020... +REC|JOURNAL_META|UNIT=skladchik-pve64020-local-relay-w2.service|BOOT=-1|COMM=systemd|EXE=systemd|CMD=|MSG=skladchik-pve64020-local-relay-w2.service: Deactivated successfully. +REC|JOURNAL_META|UNIT=skladchik-pve64020-local-relay-w2.service|BOOT=-1|COMM=systemd|EXE=systemd|CMD=|MSG=Stopped skladchik-pve64020-local-relay-w2.service - Skladchik local CONNECT relay to PVE64020. +JOURNAL_RECORD_COUNT|UNIT=skladchik-pve64020-local-relay-w2.service|BOOT=-1|COUNT=4 +REC|JOURNAL_META|UNIT=skladchik-pve64020-relay-w2.service|BOOT=-1|COMM=systemd|EXE=systemd|CMD=|MSG=Started skladchik-pve64020-relay-w2.service - Skladchik PVE64020 restricted relay. +REC|JOURNAL_META|UNIT=skladchik-pve64020-relay-w2.service|BOOT=-1|COMM=systemd|EXE=systemd|CMD=|MSG=Stopping skladchik-pve64020-relay-w2.service - Skladchik PVE64020 restricted relay... +REC|JOURNAL_META|UNIT=skladchik-pve64020-relay-w2.service|BOOT=-1|COMM=systemd|EXE=systemd|CMD=|MSG=skladchik-pve64020-relay-w2.service: Deactivated successfully. +REC|JOURNAL_META|UNIT=skladchik-pve64020-relay-w2.service|BOOT=-1|COMM=systemd|EXE=systemd|CMD=|MSG=Stopped skladchik-pve64020-relay-w2.service - Skladchik PVE64020 restricted relay. +JOURNAL_RECORD_COUNT|UNIT=skladchik-pve64020-relay-w2.service|BOOT=-1|COUNT=4 +REC|JOURNAL_META|UNIT=skladchik-pve-connect-w2.service|BOOT=-1|COMM=systemd|EXE=systemd|CMD=|MSG=Started skladchik-pve-connect-w2.service - Skladchik target-locked CONNECT proxy over selected SOCKS egress. +REC|JOURNAL_META|UNIT=skladchik-pve-connect-w2.service|BOOT=-1|COMM=systemd|EXE=systemd|CMD=|MSG=Stopping skladchik-pve-connect-w2.service - Skladchik target-locked CONNECT proxy over selected SOCKS egress... +REC|JOURNAL_META|UNIT=skladchik-pve-connect-w2.service|BOOT=-1|COMM=systemd|EXE=systemd|CMD=|MSG=skladchik-pve-connect-w2.service: Deactivated successfully. +REC|JOURNAL_META|UNIT=skladchik-pve-connect-w2.service|BOOT=-1|COMM=systemd|EXE=systemd|CMD=|MSG=Stopped skladchik-pve-connect-w2.service - Skladchik target-locked CONNECT proxy over selected SOCKS egress. +JOURNAL_RECORD_COUNT|UNIT=skladchik-pve-connect-w2.service|BOOT=-1|COUNT=28 +REC|GIT_HISTORY_ROOT|REPO_BASENAME=homelab-desired-state|REPO_PATH_SHA=4127c2c0fd546c50b3e47204c649300242e01b83080b84198fc2dec81f0949a4|NEEDLE=64020|COUNT=4 +REC|GIT_COMMIT|REPO=homelab-desired-state|NEEDLE=64020|COMMIT=f961ac7f37eb3de61901e6518aff803547c87a04|DATE=2026-07-10T22:20:26+03:00|SUBJECT=desired-state sync 2026-07-10T19:20:26Z +REC|GIT_COMMIT|REPO=homelab-desired-state|NEEDLE=64020|COMMIT=52c1529465cf42ae262bee67c771c02073635c8a|DATE=2026-07-10T22:15:52+03:00|SUBJECT=desired-state sync 2026-07-10T19:15:52Z +REC|GIT_COMMIT|REPO=homelab-desired-state|NEEDLE=64020|COMMIT=63545467db73aa53475320b9d4a64191bedb827f|DATE=2026-07-07T07:01:36+03:00|SUBJECT=desired-state sync 2026-07-07T04:01:35Z +REC|GIT_COMMIT|REPO=homelab-desired-state|NEEDLE=64020|COMMIT=bb8e23f72483acac13f1f1108ae0db3ba6f61473|DATE=2026-07-07T06:46:26+03:00|SUBJECT=desired-state sync 2026-07-07T03:46:25Z +REC|GIT_HISTORY_ROOT|REPO_BASENAME=homelab-desired-state|REPO_PATH_SHA=aa772c204b72d67c5cb9e0f4386cf8d7808fa8b852aeb1b9262a64e34a690d24|NEEDLE=64020|COUNT=4 +REC|GIT_COMMIT|REPO=homelab-desired-state|NEEDLE=64020|COMMIT=f961ac7f37eb3de61901e6518aff803547c87a04|DATE=2026-07-10T22:20:26+03:00|SUBJECT=desired-state sync 2026-07-10T19:20:26Z +REC|GIT_COMMIT|REPO=homelab-desired-state|NEEDLE=64020|COMMIT=52c1529465cf42ae262bee67c771c02073635c8a|DATE=2026-07-10T22:15:52+03:00|SUBJECT=desired-state sync 2026-07-10T19:15:52Z +REC|GIT_COMMIT|REPO=homelab-desired-state|NEEDLE=64020|COMMIT=63545467db73aa53475320b9d4a64191bedb827f|DATE=2026-07-07T07:01:36+03:00|SUBJECT=desired-state sync 2026-07-07T04:01:35Z +REC|GIT_COMMIT|REPO=homelab-desired-state|NEEDLE=64020|COMMIT=bb8e23f72483acac13f1f1108ae0db3ba6f61473|DATE=2026-07-07T06:46:26+03:00|SUBJECT=desired-state sync 2026-07-07T03:46:25Z +REC|GIT_HISTORY_ROOT|REPO_BASENAME=homelab-desired-state|REPO_PATH_SHA=2aadb8e7adf59a3fcbec9edddcbbda20aa45c3a0d6569385bda09c5401085bb6|NEEDLE=64020|COUNT=4 +REC|GIT_COMMIT|REPO=homelab-desired-state|NEEDLE=64020|COMMIT=f961ac7f37eb3de61901e6518aff803547c87a04|DATE=2026-07-10T22:20:26+03:00|SUBJECT=desired-state sync 2026-07-10T19:20:26Z +REC|GIT_COMMIT|REPO=homelab-desired-state|NEEDLE=64020|COMMIT=52c1529465cf42ae262bee67c771c02073635c8a|DATE=2026-07-10T22:15:52+03:00|SUBJECT=desired-state sync 2026-07-10T19:15:52Z +REC|GIT_COMMIT|REPO=homelab-desired-state|NEEDLE=64020|COMMIT=63545467db73aa53475320b9d4a64191bedb827f|DATE=2026-07-07T07:01:36+03:00|SUBJECT=desired-state sync 2026-07-07T04:01:35Z +REC|GIT_COMMIT|REPO=homelab-desired-state|NEEDLE=64020|COMMIT=bb8e23f72483acac13f1f1108ae0db3ba6f61473|DATE=2026-07-07T06:46:26+03:00|SUBJECT=desired-state sync 2026-07-07T03:46:25Z +CLUSTER_QUORATE=true +NETBIRD_LAZY=false +NETBIRD_MANAGEMENT=true +NETBIRD_SIGNAL=true +NETBIRD_CONNECTED=5 +DECISION=PASS_PVE01_64020_ARTIFACT_RECOVERY_RCA +NEXT_GATE=RESTORE_PROVEN_PVE64020_ENDPOINT +TASK_RESULT=PVE01_64020_ARTIFACT_RECOVERY_RCA +CHANGES_MADE=false +ROLLBACK_STARTED=false +ROLLBACK_RESTORED=null +MUTATION_OUTCOME=NO_MUTATION +HOMELAB_RESULT_CONTRACT={"version":1,"command_id":"SUPPORT-261007-PVE01-64020-ARTIFACT-RECOVERY-RCA-99759R1","status":"OK","changes_made":false,"rollback_started":false,"rollback_restored":null} + +OUTPUT_END +CHAT_OUTPUT_END diff --git a/runtime/latest.json b/runtime/latest.json index 23c97665..61a87f6c 100644 --- a/runtime/latest.json +++ b/runtime/latest.json @@ -1,19 +1,19 @@ { "schema_version": 1, "channel": "homelab-runtime", - "command_id": "SUPPORT-261007-WINDOWS-DACHA-WATCHDOG-SANITIZED-SOURCE-99758R1", + "command_id": "SUPPORT-261007-PVE01-64020-ARTIFACT-RECOVERY-RCA-99759R1", "status": "OK", "rc": 0, "host": "pve01", "mode": "read-only", - "component": "windows-dacha-watchdog-sanitized-source", - "started_at_utc": "2026-10-07T04:30:48Z", - "finished_at_utc": "2026-10-07T04:30:49Z", + "component": "pve01-64020-artifact-recovery-rca", + "started_at_utc": "2026-10-07T04:57:58Z", + "finished_at_utc": "2026-10-07T04:58:24Z", "reference_register_checked": true, "reference_sha256": "5a3d8e5154c41cb582a4e0aca68090be1f0138918bf82131a948df326f9d8d66", "error_register_checked": true, "error_register_sha256": "3b09a553ec0f527ed3afeed4753f52a74ee3036045bbfb3c685e9f8af4ba7ba0", - "command_sha256": "82372359d1dfece3cca84734e47b1a82a17c43fb88ef3c8c418ee0f99f500497", + "command_sha256": "c57c2a602e05695f02ad28341a5f49d2680992922641c75621b51fc2bb8bf2d5", "duplicate_failed_command_blocked": false, "block_reason": null, "execution_started": true, @@ -30,9 +30,9 @@ "secrets_included": false, "private_addresses_included": false, "raw_evidence_retained_locally": true, - "raw_evidence_sha256": "07576991b3bcf03a1f05666fc4f906e8ce3bab611b76ac9d0e0cd4f2ff28da02", - "sanitized_output_sha256": "07576991b3bcf03a1f05666fc4f906e8ce3bab611b76ac9d0e0cd4f2ff28da02", + "raw_evidence_sha256": "15cb2d40f87fb4b3686067060cf42a503a68188ab6309b35e24648dfd1d9432c", + "sanitized_output_sha256": "15cb2d40f87fb4b3686067060cf42a503a68188ab6309b35e24648dfd1d9432c", "output_truncated_in_json": false, "full_sanitized_output_url": "https://git.gram1.ru/.well-known/homelab-runtime/latest.txt", - "output": "WINDOWS_DACHA_WATCHDOG_SANITIZED_SOURCE=V1\nMODE=read-only\nNO_MUTATION=true\nWINDOWS_LOCAL_INSPECT_RC=0\nWINDOWS_EVIDENCE_PRESENT=true\nWATCHDOG_SHORTCUT_MATCH_COUNT=1\nWATCHDOG_PS1_RESOLVED=true\nWATCHDOG_PS1_BASENAME=watchdog.ps1\nWATCHDOG_PS1_SIZE=5001\nWATCHDOG_LINE_COUNT=169\nSANITIZED_SOURCE_BEGIN\nSRC|001|$ErrorActionPreference='SilentlyContinue'\nSRC|003|$HostKey=''\nSRC|004|$PlinkPath=' Files\\PuTTY\\plink.exe'\nSRC|005|$Target=''\nSRC|006|$FailureStreak=0\nSRC|008|function Get-Listeners {\nSRC|009| try {\nSRC|010| return @(Get-NetTCPConnection -State Listen -LocalPort 64020 -ErrorAction SilentlyContinue)\nSRC|011| } catch {\nSRC|012| return @()\nSRC|013| }\nSRC|014|}\nSRC|016|function Get-ProcessCommandLine([int]$processId) {\nSRC|017| try {\nSRC|018| $proc = Get-CimInstance Win32_Process -Filter \"ProcessId=$processId\"\nSRC|019| if ($proc) { return [string]$proc.CommandLine }\nSRC|020| } catch {}\nSRC|021| return ''\nSRC|022|}\nSRC|024|function Test-ExactOwner([int]$processId) {\nSRC|025| $commandLine = Get-ProcessCommandLine $processId\nSRC|026| if ([string]::IsNullOrWhiteSpace($commandLine)) { return $false }\nSRC|028| return (\nSRC|029| $commandLine -match '(?i)\\bplink(\\.exe)?\\b' -and\nSRC|030| $commandLine -match '(?i)-L\\s+127\\.0\\.0\\.1:64020:127\\.0\\.0\\.1:64020' -and\nSRC|031| $commandLine -match '(?i)root@192\\.168\\.50\\.11' -and\nSRC|032| $commandLine -match [regex]::Escape($HostKey)\nSRC|033| )\nSRC|034|}\nSRC|036|function Test-Tcp22 {\nSRC|037| $client = $null\nSRC|038| try {\nSRC|039| $client = New-Object Net.Sockets.TcpClient\nSRC|040| $task = $client.ConnectAsync($Target, 22)\nSRC|041| if (-not $task.Wait(1800)) { return $false }\nSRC|042| return $client.Connected\nSRC|043| } catch {\nSRC|044| return $false\nSRC|045| } finally {\nSRC|046| try { if ($client) { $client.Close() } } catch {}\nSRC|047| }\nSRC|048|}\nSRC|050|function Test-Tcp64020 {\nSRC|051| $client = $null\nSRC|052| try {\nSRC|053| $client = New-Object Net.Sockets.TcpClient\nSRC|054| $task = $client.ConnectAsync('', 64020)\nSRC|055| if (-not $task.Wait(1200)) { return $false }\nSRC|056| return $client.Connected\nSRC|057| } catch {\nSRC|058| return $false\nSRC|059| } finally {\nSRC|060| try { if ($client) { $client.Close() } } catch {}\nSRC|061| }\nSRC|062|}\nSRC|064|function Test-Socks {\nSRC|065| $curl = (Get-Command curl.exe -ErrorAction SilentlyContinue).Source\nSRC|066| if (-not $curl) { return $false }\nSRC|068| try {\nSRC|069| $code = ((& $curl '-sS' '-o' 'NUL' '--connect-timeout' '4' '--max-time' '10' '-w' '%{http_code}' '--socks5-hostname' ':64020' 'https://api.telegram.org' 2>$null) | Out-String).Trim()\nSRC|070| return ($LASTEXITCODE -eq 0 -and $code -match '^[1-5][0-9][0-9]$' -and $code -ne '000')\nSRC|071| } catch {\nSRC|072| return $false\nSRC|073| }\nSRC|074|}\nSRC|076|function Get-ExactPlinkPids {\nSRC|077| $result = New-Object 'System.Collections.Generic.List[int]'\nSRC|078| try {\nSRC|079| foreach ($proc in (Get-CimInstance Win32_Process -Filter \"Name='plink.exe'\" -ErrorAction SilentlyContinue)) {\nSRC|080| if (Test-ExactOwner ([int]$proc.ProcessId)) {\nSRC|081| $result.Add([int]$proc.ProcessId)\nSRC|082| }\nSRC|083| }\nSRC|084| } catch {}\nSRC|085| return @($result | Sort-Object -Unique)\nSRC|086|}\nSRC|088|function Start-Route {\nSRC|089| if (-not (Test-Path -LiteralPath $PlinkPath -PathType Leaf)) { return $false }\nSRC|090| if (-not (Test-Tcp22)) { return $false }\nSRC|092| $proc = $null\nSRC|093| try {\nSRC|094| $psi = New-Object Diagnostics.ProcessStartInfo\nSRC|095| $psi.FileName = $PlinkPath\nSRC|096| $psi.UseShellExecute = $false\nSRC|097| $psi.CreateNoWindow = $true\nSRC|098| $psi.Arguments = \"-batch -agent -noshare -no-antispoof -ssh -4 -P 22 -hostkey -N -L :64020::64020 @\"\nSRC|099| $proc = [Diagnostics.Process]::Start($psi)\nSRC|100| } catch {\nSRC|101| return $false\nSRC|102| }\nSRC|104| if ($null -eq $proc) { return $false }\nSRC|106| for ($i = 1; $i -le 30; $i++) {\nSRC|107| Start-Sleep -Milliseconds 500\nSRC|108| $rows = Get-Listeners\nSRC|109| $owners = @($rows | ForEach-Object { $_.OwningProcess } | Where-Object { $_ -gt 0 } | Sort-Object -Unique)\nSRC|111| if ($owners.Count -eq 1 -and $owners[0] -eq $proc.Id -and (Test-Tcp64020)) {\nSRC|112| return $true\nSRC|113| }\nSRC|115| try {\nSRC|116| if ($proc.HasExited) { break }\nSRC|117| } catch {}\nSRC|118| }\nSRC|120| try {\nSRC|121| if (-not $proc.HasExited) {\nSRC|122| Stop-Process -Id $proc.Id -Force -ErrorAction SilentlyContinue\nSRC|123| }\nSRC|124| } catch {}\nSRC|126| return $false\nSRC|127|}\nSRC|129|while ($true) {\nSRC|130| $rows = Get-Listeners\nSRC|131| $owners = @($rows | ForEach-Object { $_.OwningProcess } | Where-Object { $_ -gt 0 } | Sort-Object -Unique)\nSRC|133| if ($rows.Count -eq 0) {\nSRC|134| $FailureStreak = 0\nSRC|136| foreach ($staleProcessId in (Get-ExactPlinkPids)) {\nSRC|137| try {\nSRC|138| Stop-Process -Id $staleProcessId -Force -ErrorAction SilentlyContinue\nSRC|139| } catch {}\nSRC|140| }\nSRC|142| Start-Route | Out-Null\nSRC|143| }\nSRC|144| elseif ($owners.Count -eq 1 -and (Test-ExactOwner ([int]$owners[0]))) {\nSRC|145| if (Test-Socks) {\nSRC|146| $FailureStreak = 0\nSRC|147| }\nSRC|148| else {\nSRC|149| $FailureStreak++\nSRC|151| if ($FailureStreak -ge 3) {\nSRC|152| try {\nSRC|153| Stop-Process -Id ([int]$owners[0]) -Force -ErrorAction SilentlyContinue\nSRC|154| } catch {}\nSRC|156| $FailureStreak = 0\nSRC|157| Start-Sleep -Seconds 1\nSRC|158| Start-Route | Out-Null\nSRC|159| }\nSRC|160| }\nSRC|161| }\nSRC|162| else {\nSRC|163| # Safety hold: never terminate an unknown or competing owner.\nSRC|164| $FailureStreak = 0\nSRC|165| }\nSRC|167| Start-Sleep -Seconds 12\nSRC|168|}\nSANITIZED_SOURCE_END\nRUNNING_WATCHDOG_PS_COUNT=2\nRUNNING_BRIDGE_PS_COUNT=2\nREC|CURRENT_PLINK|IDX=1|HAS_R=false|HAS_L=true|HAS_D=false|HAS_64020=true|HAS_64022=false|HAS_AGENT=true|HAS_BATCH=true|HAS_N=true\nCURRENT_PLINK_COUNT=1\nWATCHDOG_PS1_SHA256=7738599c1d229c105f1073f04b420063bd776f3444b3f6fcf7d09bd320cce0e3\nWATCHDOG_PS1_SHA_MATCH=true\nPVE64020_LISTENER_COUNT=0\nPVE64020_SSHD_OWNER_COUNT=0\nCLUSTER_QUORATE=true\nNETBIRD_LAZY=false\nNETBIRD_MANAGEMENT=true\nNETBIRD_SIGNAL=true\nNETBIRD_CONNECTED=5\nDECISION=PASS_WINDOWS_DACHA_WATCHDOG_SANITIZED_SOURCE\nNEXT_GATE=EXACT_WATCHDOG_LOGIC_REPAIR\nTASK_RESULT=WINDOWS_DACHA_WATCHDOG_SANITIZED_SOURCE\nCHANGES_MADE=false\nROLLBACK_STARTED=false\nROLLBACK_RESTORED=null\nMUTATION_OUTCOME=NO_MUTATION\nHOMELAB_RESULT_CONTRACT={\"version\":1,\"command_id\":\"SUPPORT-261007-WINDOWS-DACHA-WATCHDOG-SANITIZED-SOURCE-99758R1\",\"status\":\"OK\",\"changes_made\":false,\"rollback_started\":false,\"rollback_restored\":null}\n" + "output": "PVE01_64020_ARTIFACT_RECOVERY_RCA=V1\nMODE=read-only\nNO_MUTATION=true\nHOST=pve01\nPVE64020_LISTENER_COUNT=0\nPVE64020_SSHD_OWNER_COUNT=0\nSOCAT_PRESENT=0\nCURL_PRESENT=0\nPYTHON3_PRESENT=0\nARTIFACT_CANDIDATE_COUNT=0\nFILES_SCANNED_CAPPED_AT=30001\nREC|HISTORY|IDX=1|BASENAME=.bash_history|LINE=302|TEXT= echo \"PVE64020_LISTENER_COUNT=${P64020:-0}\"\nREC|HISTORY|IDX=2|BASENAME=.bash_history|LINE=303|TEXT= echo \"PVE64020_TELEGRAM_OK=${P64020_TG:-false}\"\nREC|HISTORY|IDX=3|BASENAME=.bash_history|LINE=304|TEXT= echo \"PVE64020_IOBIT_OK=${P64020_IO:-false}\"\nREC|HISTORY|IDX=4|BASENAME=.bash_history|LINE=456|TEXT=P64020=\"$(ss -ltnH 2> / awk '$4 ~ /:64020$/ {n++} END{print n+0}')\"\nREC|HISTORY|IDX=5|BASENAME=.bash_history|LINE=457|TEXT=P64020_TG=false; P64020_IO=false\nREC|HISTORY|IDX=6|BASENAME=.bash_history|LINE=458|TEXT=if [ \"$P64020\" -gt 0 ] && command -v curl > 2>&1; then\nREC|HISTORY|IDX=7|BASENAME=.bash_history|LINE=459|TEXT= T=\"$(curl -ksS -o -w '%{http_code}' --connect-timeout 5 --max-time 15 --socks5-hostname :64020 https://telegram.org/ 2> // true)\"\nREC|HISTORY|IDX=8|BASENAME=.bash_history|LINE=460|TEXT= I=\"$(curl -ksS -o -w '%{http_code}' --connect-timeout 5 --max-time 15 --socks5-hostname :64020 https://www.iobit.com/ 2> // true)\"\nREC|HISTORY|IDX=9|BASENAME=.bash_history|LINE=461|TEXT= [ -n \"$T\" ] && [ \"$T\" != 000 ] && P64020_TG=true\nREC|HISTORY|IDX=10|BASENAME=.bash_history|LINE=462|TEXT= [ -n \"$I\" ] && [ \"$I\" != 000 ] && P64020_IO=true\nHISTORY_MATCH_COUNT=10\nREC|JOURNAL_META|UNIT=skladchik-pve64020-local-relay-w2.service|BOOT=-1|COMM=systemd|EXE=systemd|CMD=|MSG=Started skladchik-pve64020-local-relay-w2.service - Skladchik local CONNECT relay to PVE64020.\nREC|JOURNAL_META|UNIT=skladchik-pve64020-local-relay-w2.service|BOOT=-1|COMM=systemd|EXE=systemd|CMD=|MSG=Stopping skladchik-pve64020-local-relay-w2.service - Skladchik local CONNECT relay to PVE64020...\nREC|JOURNAL_META|UNIT=skladchik-pve64020-local-relay-w2.service|BOOT=-1|COMM=systemd|EXE=systemd|CMD=|MSG=skladchik-pve64020-local-relay-w2.service: Deactivated successfully.\nREC|JOURNAL_META|UNIT=skladchik-pve64020-local-relay-w2.service|BOOT=-1|COMM=systemd|EXE=systemd|CMD=|MSG=Stopped skladchik-pve64020-local-relay-w2.service - Skladchik local CONNECT relay to PVE64020.\nJOURNAL_RECORD_COUNT|UNIT=skladchik-pve64020-local-relay-w2.service|BOOT=-1|COUNT=4\nREC|JOURNAL_META|UNIT=skladchik-pve64020-relay-w2.service|BOOT=-1|COMM=systemd|EXE=systemd|CMD=|MSG=Started skladchik-pve64020-relay-w2.service - Skladchik PVE64020 restricted relay.\nREC|JOURNAL_META|UNIT=skladchik-pve64020-relay-w2.service|BOOT=-1|COMM=systemd|EXE=systemd|CMD=|MSG=Stopping skladchik-pve64020-relay-w2.service - Skladchik PVE64020 restricted relay...\nREC|JOURNAL_META|UNIT=skladchik-pve64020-relay-w2.service|BOOT=-1|COMM=systemd|EXE=systemd|CMD=|MSG=skladchik-pve64020-relay-w2.service: Deactivated successfully.\nREC|JOURNAL_META|UNIT=skladchik-pve64020-relay-w2.service|BOOT=-1|COMM=systemd|EXE=systemd|CMD=|MSG=Stopped skladchik-pve64020-relay-w2.service - Skladchik PVE64020 restricted relay.\nJOURNAL_RECORD_COUNT|UNIT=skladchik-pve64020-relay-w2.service|BOOT=-1|COUNT=4\nREC|JOURNAL_META|UNIT=skladchik-pve-connect-w2.service|BOOT=-1|COMM=systemd|EXE=systemd|CMD=|MSG=Started skladchik-pve-connect-w2.service - Skladchik target-locked CONNECT proxy over selected SOCKS egress.\nREC|JOURNAL_META|UNIT=skladchik-pve-connect-w2.service|BOOT=-1|COMM=systemd|EXE=systemd|CMD=|MSG=Stopping skladchik-pve-connect-w2.service - Skladchik target-locked CONNECT proxy over selected SOCKS egress...\nREC|JOURNAL_META|UNIT=skladchik-pve-connect-w2.service|BOOT=-1|COMM=systemd|EXE=systemd|CMD=|MSG=skladchik-pve-connect-w2.service: Deactivated successfully.\nREC|JOURNAL_META|UNIT=skladchik-pve-connect-w2.service|BOOT=-1|COMM=systemd|EXE=systemd|CMD=|MSG=Stopped skladchik-pve-connect-w2.service - Skladchik target-locked CONNECT proxy over selected SOCKS egress.\nJOURNAL_RECORD_COUNT|UNIT=skladchik-pve-connect-w2.service|BOOT=-1|COUNT=28\nREC|GIT_HISTORY_ROOT|REPO_BASENAME=homelab-desired-state|REPO_PATH_SHA=4127c2c0fd546c50b3e47204c649300242e01b83080b84198fc2dec81f0949a4|NEEDLE=64020|COUNT=4\nREC|GIT_COMMIT|REPO=homelab-desired-state|NEEDLE=64020|COMMIT=f961ac7f37eb3de61901e6518aff803547c87a04|DATE=2026-07-10T22:20:26+03:00|SUBJECT=desired-state sync 2026-07-10T19:20:26Z\nREC|GIT_COMMIT|REPO=homelab-desired-state|NEEDLE=64020|COMMIT=52c1529465cf42ae262bee67c771c02073635c8a|DATE=2026-07-10T22:15:52+03:00|SUBJECT=desired-state sync 2026-07-10T19:15:52Z\nREC|GIT_COMMIT|REPO=homelab-desired-state|NEEDLE=64020|COMMIT=63545467db73aa53475320b9d4a64191bedb827f|DATE=2026-07-07T07:01:36+03:00|SUBJECT=desired-state sync 2026-07-07T04:01:35Z\nREC|GIT_COMMIT|REPO=homelab-desired-state|NEEDLE=64020|COMMIT=bb8e23f72483acac13f1f1108ae0db3ba6f61473|DATE=2026-07-07T06:46:26+03:00|SUBJECT=desired-state sync 2026-07-07T03:46:25Z\nREC|GIT_HISTORY_ROOT|REPO_BASENAME=homelab-desired-state|REPO_PATH_SHA=aa772c204b72d67c5cb9e0f4386cf8d7808fa8b852aeb1b9262a64e34a690d24|NEEDLE=64020|COUNT=4\nREC|GIT_COMMIT|REPO=homelab-desired-state|NEEDLE=64020|COMMIT=f961ac7f37eb3de61901e6518aff803547c87a04|DATE=2026-07-10T22:20:26+03:00|SUBJECT=desired-state sync 2026-07-10T19:20:26Z\nREC|GIT_COMMIT|REPO=homelab-desired-state|NEEDLE=64020|COMMIT=52c1529465cf42ae262bee67c771c02073635c8a|DATE=2026-07-10T22:15:52+03:00|SUBJECT=desired-state sync 2026-07-10T19:15:52Z\nREC|GIT_COMMIT|REPO=homelab-desired-state|NEEDLE=64020|COMMIT=63545467db73aa53475320b9d4a64191bedb827f|DATE=2026-07-07T07:01:36+03:00|SUBJECT=desired-state sync 2026-07-07T04:01:35Z\nREC|GIT_COMMIT|REPO=homelab-desired-state|NEEDLE=64020|COMMIT=bb8e23f72483acac13f1f1108ae0db3ba6f61473|DATE=2026-07-07T06:46:26+03:00|SUBJECT=desired-state sync 2026-07-07T03:46:25Z\nREC|GIT_HISTORY_ROOT|REPO_BASENAME=homelab-desired-state|REPO_PATH_SHA=2aadb8e7adf59a3fcbec9edddcbbda20aa45c3a0d6569385bda09c5401085bb6|NEEDLE=64020|COUNT=4\nREC|GIT_COMMIT|REPO=homelab-desired-state|NEEDLE=64020|COMMIT=f961ac7f37eb3de61901e6518aff803547c87a04|DATE=2026-07-10T22:20:26+03:00|SUBJECT=desired-state sync 2026-07-10T19:20:26Z\nREC|GIT_COMMIT|REPO=homelab-desired-state|NEEDLE=64020|COMMIT=52c1529465cf42ae262bee67c771c02073635c8a|DATE=2026-07-10T22:15:52+03:00|SUBJECT=desired-state sync 2026-07-10T19:15:52Z\nREC|GIT_COMMIT|REPO=homelab-desired-state|NEEDLE=64020|COMMIT=63545467db73aa53475320b9d4a64191bedb827f|DATE=2026-07-07T07:01:36+03:00|SUBJECT=desired-state sync 2026-07-07T04:01:35Z\nREC|GIT_COMMIT|REPO=homelab-desired-state|NEEDLE=64020|COMMIT=bb8e23f72483acac13f1f1108ae0db3ba6f61473|DATE=2026-07-07T06:46:26+03:00|SUBJECT=desired-state sync 2026-07-07T03:46:25Z\nCLUSTER_QUORATE=true\nNETBIRD_LAZY=false\nNETBIRD_MANAGEMENT=true\nNETBIRD_SIGNAL=true\nNETBIRD_CONNECTED=5\nDECISION=PASS_PVE01_64020_ARTIFACT_RECOVERY_RCA\nNEXT_GATE=RESTORE_PROVEN_PVE64020_ENDPOINT\nTASK_RESULT=PVE01_64020_ARTIFACT_RECOVERY_RCA\nCHANGES_MADE=false\nROLLBACK_STARTED=false\nROLLBACK_RESTORED=null\nMUTATION_OUTCOME=NO_MUTATION\nHOMELAB_RESULT_CONTRACT={\"version\":1,\"command_id\":\"SUPPORT-261007-PVE01-64020-ARTIFACT-RECOVERY-RCA-99759R1\",\"status\":\"OK\",\"changes_made\":false,\"rollback_started\":false,\"rollback_restored\":null}\n" } diff --git a/runtime/latest.txt b/runtime/latest.txt index e9052e5a..00af8738 100644 --- a/runtime/latest.txt +++ b/runtime/latest.txt @@ -1,15 +1,15 @@ CHAT_OUTPUT_BEGIN -COMMAND_ID=SUPPORT-261007-WINDOWS-DACHA-WATCHDOG-SANITIZED-SOURCE-99758R1 +COMMAND_ID=SUPPORT-261007-PVE01-64020-ARTIFACT-RECOVERY-RCA-99759R1 STATUS=OK RC=0 HOST=pve01 MODE=read-only -COMPONENT=windows-dacha-watchdog-sanitized-source +COMPONENT=pve01-64020-artifact-recovery-rca REFERENCE_REGISTER_CHECK=OK REFERENCE_SHA256=5a3d8e5154c41cb582a4e0aca68090be1f0138918bf82131a948df326f9d8d66 ERROR_REGISTER_CHECK=OK ERROR_REGISTER_SHA256=3b09a553ec0f527ed3afeed4753f52a74ee3036045bbfb3c685e9f8af4ba7ba0 -COMMAND_SHA256=82372359d1dfece3cca84734e47b1a82a17c43fb88ef3c8c418ee0f99f500497 +COMMAND_SHA256=c57c2a602e05695f02ad28341a5f49d2680992922641c75621b51fc2bb8bf2d5 DUPLICATE_FAILED_COMMAND_BLOCKED=false EXECUTION_STARTED=true CHANGE_DECLARED=false @@ -24,185 +24,74 @@ MUTATION_OUTCOME=NO_MUTATION SANITIZED=yes SECRETS_INCLUDED=no PRIVATE_ADDRESSES_INCLUDED=no -RAW_EVIDENCE_SHA256=07576991b3bcf03a1f05666fc4f906e8ce3bab611b76ac9d0e0cd4f2ff28da02 -SANITIZED_OUTPUT_SHA256=07576991b3bcf03a1f05666fc4f906e8ce3bab611b76ac9d0e0cd4f2ff28da02 +RAW_EVIDENCE_SHA256=15cb2d40f87fb4b3686067060cf42a503a68188ab6309b35e24648dfd1d9432c +SANITIZED_OUTPUT_SHA256=15cb2d40f87fb4b3686067060cf42a503a68188ab6309b35e24648dfd1d9432c OUTPUT_BEGIN -WINDOWS_DACHA_WATCHDOG_SANITIZED_SOURCE=V1 +PVE01_64020_ARTIFACT_RECOVERY_RCA=V1 MODE=read-only NO_MUTATION=true -WINDOWS_LOCAL_INSPECT_RC=0 -WINDOWS_EVIDENCE_PRESENT=true -WATCHDOG_SHORTCUT_MATCH_COUNT=1 -WATCHDOG_PS1_RESOLVED=true -WATCHDOG_PS1_BASENAME=watchdog.ps1 -WATCHDOG_PS1_SIZE=5001 -WATCHDOG_LINE_COUNT=169 -SANITIZED_SOURCE_BEGIN -SRC|001|$ErrorActionPreference='SilentlyContinue' -SRC|003|$HostKey='' -SRC|004|$PlinkPath=' Files\PuTTY\plink.exe' -SRC|005|$Target='' -SRC|006|$FailureStreak=0 -SRC|008|function Get-Listeners { -SRC|009| try { -SRC|010| return @(Get-NetTCPConnection -State Listen -LocalPort 64020 -ErrorAction SilentlyContinue) -SRC|011| } catch { -SRC|012| return @() -SRC|013| } -SRC|014|} -SRC|016|function Get-ProcessCommandLine([int]$processId) { -SRC|017| try { -SRC|018| $proc = Get-CimInstance Win32_Process -Filter "ProcessId=$processId" -SRC|019| if ($proc) { return [string]$proc.CommandLine } -SRC|020| } catch {} -SRC|021| return '' -SRC|022|} -SRC|024|function Test-ExactOwner([int]$processId) { -SRC|025| $commandLine = Get-ProcessCommandLine $processId -SRC|026| if ([string]::IsNullOrWhiteSpace($commandLine)) { return $false } -SRC|028| return ( -SRC|029| $commandLine -match '(?i)\bplink(\.exe)?\b' -and -SRC|030| $commandLine -match '(?i)-L\s+127\.0\.0\.1:64020:127\.0\.0\.1:64020' -and -SRC|031| $commandLine -match '(?i)root@192\.168\.50\.11' -and -SRC|032| $commandLine -match [regex]::Escape($HostKey) -SRC|033| ) -SRC|034|} -SRC|036|function Test-Tcp22 { -SRC|037| $client = $null -SRC|038| try { -SRC|039| $client = New-Object Net.Sockets.TcpClient -SRC|040| $task = $client.ConnectAsync($Target, 22) -SRC|041| if (-not $task.Wait(1800)) { return $false } -SRC|042| return $client.Connected -SRC|043| } catch { -SRC|044| return $false -SRC|045| } finally { -SRC|046| try { if ($client) { $client.Close() } } catch {} -SRC|047| } -SRC|048|} -SRC|050|function Test-Tcp64020 { -SRC|051| $client = $null -SRC|052| try { -SRC|053| $client = New-Object Net.Sockets.TcpClient -SRC|054| $task = $client.ConnectAsync('', 64020) -SRC|055| if (-not $task.Wait(1200)) { return $false } -SRC|056| return $client.Connected -SRC|057| } catch { -SRC|058| return $false -SRC|059| } finally { -SRC|060| try { if ($client) { $client.Close() } } catch {} -SRC|061| } -SRC|062|} -SRC|064|function Test-Socks { -SRC|065| $curl = (Get-Command curl.exe -ErrorAction SilentlyContinue).Source -SRC|066| if (-not $curl) { return $false } -SRC|068| try { -SRC|069| $code = ((& $curl '-sS' '-o' 'NUL' '--connect-timeout' '4' '--max-time' '10' '-w' '%{http_code}' '--socks5-hostname' ':64020' 'https://api.telegram.org' 2>$null) | Out-String).Trim() -SRC|070| return ($LASTEXITCODE -eq 0 -and $code -match '^[1-5][0-9][0-9]$' -and $code -ne '000') -SRC|071| } catch { -SRC|072| return $false -SRC|073| } -SRC|074|} -SRC|076|function Get-ExactPlinkPids { -SRC|077| $result = New-Object 'System.Collections.Generic.List[int]' -SRC|078| try { -SRC|079| foreach ($proc in (Get-CimInstance Win32_Process -Filter "Name='plink.exe'" -ErrorAction SilentlyContinue)) { -SRC|080| if (Test-ExactOwner ([int]$proc.ProcessId)) { -SRC|081| $result.Add([int]$proc.ProcessId) -SRC|082| } -SRC|083| } -SRC|084| } catch {} -SRC|085| return @($result | Sort-Object -Unique) -SRC|086|} -SRC|088|function Start-Route { -SRC|089| if (-not (Test-Path -LiteralPath $PlinkPath -PathType Leaf)) { return $false } -SRC|090| if (-not (Test-Tcp22)) { return $false } -SRC|092| $proc = $null -SRC|093| try { -SRC|094| $psi = New-Object Diagnostics.ProcessStartInfo -SRC|095| $psi.FileName = $PlinkPath -SRC|096| $psi.UseShellExecute = $false -SRC|097| $psi.CreateNoWindow = $true -SRC|098| $psi.Arguments = "-batch -agent -noshare -no-antispoof -ssh -4 -P 22 -hostkey -N -L :64020::64020 @" -SRC|099| $proc = [Diagnostics.Process]::Start($psi) -SRC|100| } catch { -SRC|101| return $false -SRC|102| } -SRC|104| if ($null -eq $proc) { return $false } -SRC|106| for ($i = 1; $i -le 30; $i++) { -SRC|107| Start-Sleep -Milliseconds 500 -SRC|108| $rows = Get-Listeners -SRC|109| $owners = @($rows | ForEach-Object { $_.OwningProcess } | Where-Object { $_ -gt 0 } | Sort-Object -Unique) -SRC|111| if ($owners.Count -eq 1 -and $owners[0] -eq $proc.Id -and (Test-Tcp64020)) { -SRC|112| return $true -SRC|113| } -SRC|115| try { -SRC|116| if ($proc.HasExited) { break } -SRC|117| } catch {} -SRC|118| } -SRC|120| try { -SRC|121| if (-not $proc.HasExited) { -SRC|122| Stop-Process -Id $proc.Id -Force -ErrorAction SilentlyContinue -SRC|123| } -SRC|124| } catch {} -SRC|126| return $false -SRC|127|} -SRC|129|while ($true) { -SRC|130| $rows = Get-Listeners -SRC|131| $owners = @($rows | ForEach-Object { $_.OwningProcess } | Where-Object { $_ -gt 0 } | Sort-Object -Unique) -SRC|133| if ($rows.Count -eq 0) { -SRC|134| $FailureStreak = 0 -SRC|136| foreach ($staleProcessId in (Get-ExactPlinkPids)) { -SRC|137| try { -SRC|138| Stop-Process -Id $staleProcessId -Force -ErrorAction SilentlyContinue -SRC|139| } catch {} -SRC|140| } -SRC|142| Start-Route | Out-Null -SRC|143| } -SRC|144| elseif ($owners.Count -eq 1 -and (Test-ExactOwner ([int]$owners[0]))) { -SRC|145| if (Test-Socks) { -SRC|146| $FailureStreak = 0 -SRC|147| } -SRC|148| else { -SRC|149| $FailureStreak++ -SRC|151| if ($FailureStreak -ge 3) { -SRC|152| try { -SRC|153| Stop-Process -Id ([int]$owners[0]) -Force -ErrorAction SilentlyContinue -SRC|154| } catch {} -SRC|156| $FailureStreak = 0 -SRC|157| Start-Sleep -Seconds 1 -SRC|158| Start-Route | Out-Null -SRC|159| } -SRC|160| } -SRC|161| } -SRC|162| else { -SRC|163| # Safety hold: never terminate an unknown or competing owner. -SRC|164| $FailureStreak = 0 -SRC|165| } -SRC|167| Start-Sleep -Seconds 12 -SRC|168|} -SANITIZED_SOURCE_END -RUNNING_WATCHDOG_PS_COUNT=2 -RUNNING_BRIDGE_PS_COUNT=2 -REC|CURRENT_PLINK|IDX=1|HAS_R=false|HAS_L=true|HAS_D=false|HAS_64020=true|HAS_64022=false|HAS_AGENT=true|HAS_BATCH=true|HAS_N=true -CURRENT_PLINK_COUNT=1 -WATCHDOG_PS1_SHA256=7738599c1d229c105f1073f04b420063bd776f3444b3f6fcf7d09bd320cce0e3 -WATCHDOG_PS1_SHA_MATCH=true +HOST=pve01 PVE64020_LISTENER_COUNT=0 PVE64020_SSHD_OWNER_COUNT=0 +SOCAT_PRESENT=0 +CURL_PRESENT=0 +PYTHON3_PRESENT=0 +ARTIFACT_CANDIDATE_COUNT=0 +FILES_SCANNED_CAPPED_AT=30001 +REC|HISTORY|IDX=1|BASENAME=.bash_history|LINE=302|TEXT= echo "PVE64020_LISTENER_COUNT=${P64020:-0}" +REC|HISTORY|IDX=2|BASENAME=.bash_history|LINE=303|TEXT= echo "PVE64020_TELEGRAM_OK=${P64020_TG:-false}" +REC|HISTORY|IDX=3|BASENAME=.bash_history|LINE=304|TEXT= echo "PVE64020_IOBIT_OK=${P64020_IO:-false}" +REC|HISTORY|IDX=4|BASENAME=.bash_history|LINE=456|TEXT=P64020="$(ss -ltnH 2> / awk '$4 ~ /:64020$/ {n++} END{print n+0}')" +REC|HISTORY|IDX=5|BASENAME=.bash_history|LINE=457|TEXT=P64020_TG=false; P64020_IO=false +REC|HISTORY|IDX=6|BASENAME=.bash_history|LINE=458|TEXT=if [ "$P64020" -gt 0 ] && command -v curl > 2>&1; then +REC|HISTORY|IDX=7|BASENAME=.bash_history|LINE=459|TEXT= T="$(curl -ksS -o -w '%{http_code}' --connect-timeout 5 --max-time 15 --socks5-hostname :64020 https://telegram.org/ 2> // true)" +REC|HISTORY|IDX=8|BASENAME=.bash_history|LINE=460|TEXT= I="$(curl -ksS -o -w '%{http_code}' --connect-timeout 5 --max-time 15 --socks5-hostname :64020 https://www.iobit.com/ 2> // true)" +REC|HISTORY|IDX=9|BASENAME=.bash_history|LINE=461|TEXT= [ -n "$T" ] && [ "$T" != 000 ] && P64020_TG=true +REC|HISTORY|IDX=10|BASENAME=.bash_history|LINE=462|TEXT= [ -n "$I" ] && [ "$I" != 000 ] && P64020_IO=true +HISTORY_MATCH_COUNT=10 +REC|JOURNAL_META|UNIT=skladchik-pve64020-local-relay-w2.service|BOOT=-1|COMM=systemd|EXE=systemd|CMD=|MSG=Started skladchik-pve64020-local-relay-w2.service - Skladchik local CONNECT relay to PVE64020. +REC|JOURNAL_META|UNIT=skladchik-pve64020-local-relay-w2.service|BOOT=-1|COMM=systemd|EXE=systemd|CMD=|MSG=Stopping skladchik-pve64020-local-relay-w2.service - Skladchik local CONNECT relay to PVE64020... +REC|JOURNAL_META|UNIT=skladchik-pve64020-local-relay-w2.service|BOOT=-1|COMM=systemd|EXE=systemd|CMD=|MSG=skladchik-pve64020-local-relay-w2.service: Deactivated successfully. +REC|JOURNAL_META|UNIT=skladchik-pve64020-local-relay-w2.service|BOOT=-1|COMM=systemd|EXE=systemd|CMD=|MSG=Stopped skladchik-pve64020-local-relay-w2.service - Skladchik local CONNECT relay to PVE64020. +JOURNAL_RECORD_COUNT|UNIT=skladchik-pve64020-local-relay-w2.service|BOOT=-1|COUNT=4 +REC|JOURNAL_META|UNIT=skladchik-pve64020-relay-w2.service|BOOT=-1|COMM=systemd|EXE=systemd|CMD=|MSG=Started skladchik-pve64020-relay-w2.service - Skladchik PVE64020 restricted relay. +REC|JOURNAL_META|UNIT=skladchik-pve64020-relay-w2.service|BOOT=-1|COMM=systemd|EXE=systemd|CMD=|MSG=Stopping skladchik-pve64020-relay-w2.service - Skladchik PVE64020 restricted relay... +REC|JOURNAL_META|UNIT=skladchik-pve64020-relay-w2.service|BOOT=-1|COMM=systemd|EXE=systemd|CMD=|MSG=skladchik-pve64020-relay-w2.service: Deactivated successfully. +REC|JOURNAL_META|UNIT=skladchik-pve64020-relay-w2.service|BOOT=-1|COMM=systemd|EXE=systemd|CMD=|MSG=Stopped skladchik-pve64020-relay-w2.service - Skladchik PVE64020 restricted relay. +JOURNAL_RECORD_COUNT|UNIT=skladchik-pve64020-relay-w2.service|BOOT=-1|COUNT=4 +REC|JOURNAL_META|UNIT=skladchik-pve-connect-w2.service|BOOT=-1|COMM=systemd|EXE=systemd|CMD=|MSG=Started skladchik-pve-connect-w2.service - Skladchik target-locked CONNECT proxy over selected SOCKS egress. +REC|JOURNAL_META|UNIT=skladchik-pve-connect-w2.service|BOOT=-1|COMM=systemd|EXE=systemd|CMD=|MSG=Stopping skladchik-pve-connect-w2.service - Skladchik target-locked CONNECT proxy over selected SOCKS egress... +REC|JOURNAL_META|UNIT=skladchik-pve-connect-w2.service|BOOT=-1|COMM=systemd|EXE=systemd|CMD=|MSG=skladchik-pve-connect-w2.service: Deactivated successfully. +REC|JOURNAL_META|UNIT=skladchik-pve-connect-w2.service|BOOT=-1|COMM=systemd|EXE=systemd|CMD=|MSG=Stopped skladchik-pve-connect-w2.service - Skladchik target-locked CONNECT proxy over selected SOCKS egress. +JOURNAL_RECORD_COUNT|UNIT=skladchik-pve-connect-w2.service|BOOT=-1|COUNT=28 +REC|GIT_HISTORY_ROOT|REPO_BASENAME=homelab-desired-state|REPO_PATH_SHA=4127c2c0fd546c50b3e47204c649300242e01b83080b84198fc2dec81f0949a4|NEEDLE=64020|COUNT=4 +REC|GIT_COMMIT|REPO=homelab-desired-state|NEEDLE=64020|COMMIT=f961ac7f37eb3de61901e6518aff803547c87a04|DATE=2026-07-10T22:20:26+03:00|SUBJECT=desired-state sync 2026-07-10T19:20:26Z +REC|GIT_COMMIT|REPO=homelab-desired-state|NEEDLE=64020|COMMIT=52c1529465cf42ae262bee67c771c02073635c8a|DATE=2026-07-10T22:15:52+03:00|SUBJECT=desired-state sync 2026-07-10T19:15:52Z +REC|GIT_COMMIT|REPO=homelab-desired-state|NEEDLE=64020|COMMIT=63545467db73aa53475320b9d4a64191bedb827f|DATE=2026-07-07T07:01:36+03:00|SUBJECT=desired-state sync 2026-07-07T04:01:35Z +REC|GIT_COMMIT|REPO=homelab-desired-state|NEEDLE=64020|COMMIT=bb8e23f72483acac13f1f1108ae0db3ba6f61473|DATE=2026-07-07T06:46:26+03:00|SUBJECT=desired-state sync 2026-07-07T03:46:25Z +REC|GIT_HISTORY_ROOT|REPO_BASENAME=homelab-desired-state|REPO_PATH_SHA=aa772c204b72d67c5cb9e0f4386cf8d7808fa8b852aeb1b9262a64e34a690d24|NEEDLE=64020|COUNT=4 +REC|GIT_COMMIT|REPO=homelab-desired-state|NEEDLE=64020|COMMIT=f961ac7f37eb3de61901e6518aff803547c87a04|DATE=2026-07-10T22:20:26+03:00|SUBJECT=desired-state sync 2026-07-10T19:20:26Z +REC|GIT_COMMIT|REPO=homelab-desired-state|NEEDLE=64020|COMMIT=52c1529465cf42ae262bee67c771c02073635c8a|DATE=2026-07-10T22:15:52+03:00|SUBJECT=desired-state sync 2026-07-10T19:15:52Z +REC|GIT_COMMIT|REPO=homelab-desired-state|NEEDLE=64020|COMMIT=63545467db73aa53475320b9d4a64191bedb827f|DATE=2026-07-07T07:01:36+03:00|SUBJECT=desired-state sync 2026-07-07T04:01:35Z +REC|GIT_COMMIT|REPO=homelab-desired-state|NEEDLE=64020|COMMIT=bb8e23f72483acac13f1f1108ae0db3ba6f61473|DATE=2026-07-07T06:46:26+03:00|SUBJECT=desired-state sync 2026-07-07T03:46:25Z +REC|GIT_HISTORY_ROOT|REPO_BASENAME=homelab-desired-state|REPO_PATH_SHA=2aadb8e7adf59a3fcbec9edddcbbda20aa45c3a0d6569385bda09c5401085bb6|NEEDLE=64020|COUNT=4 +REC|GIT_COMMIT|REPO=homelab-desired-state|NEEDLE=64020|COMMIT=f961ac7f37eb3de61901e6518aff803547c87a04|DATE=2026-07-10T22:20:26+03:00|SUBJECT=desired-state sync 2026-07-10T19:20:26Z +REC|GIT_COMMIT|REPO=homelab-desired-state|NEEDLE=64020|COMMIT=52c1529465cf42ae262bee67c771c02073635c8a|DATE=2026-07-10T22:15:52+03:00|SUBJECT=desired-state sync 2026-07-10T19:15:52Z +REC|GIT_COMMIT|REPO=homelab-desired-state|NEEDLE=64020|COMMIT=63545467db73aa53475320b9d4a64191bedb827f|DATE=2026-07-07T07:01:36+03:00|SUBJECT=desired-state sync 2026-07-07T04:01:35Z +REC|GIT_COMMIT|REPO=homelab-desired-state|NEEDLE=64020|COMMIT=bb8e23f72483acac13f1f1108ae0db3ba6f61473|DATE=2026-07-07T06:46:26+03:00|SUBJECT=desired-state sync 2026-07-07T03:46:25Z CLUSTER_QUORATE=true NETBIRD_LAZY=false NETBIRD_MANAGEMENT=true NETBIRD_SIGNAL=true NETBIRD_CONNECTED=5 -DECISION=PASS_WINDOWS_DACHA_WATCHDOG_SANITIZED_SOURCE -NEXT_GATE=EXACT_WATCHDOG_LOGIC_REPAIR -TASK_RESULT=WINDOWS_DACHA_WATCHDOG_SANITIZED_SOURCE +DECISION=PASS_PVE01_64020_ARTIFACT_RECOVERY_RCA +NEXT_GATE=RESTORE_PROVEN_PVE64020_ENDPOINT +TASK_RESULT=PVE01_64020_ARTIFACT_RECOVERY_RCA CHANGES_MADE=false ROLLBACK_STARTED=false ROLLBACK_RESTORED=null MUTATION_OUTCOME=NO_MUTATION -HOMELAB_RESULT_CONTRACT={"version":1,"command_id":"SUPPORT-261007-WINDOWS-DACHA-WATCHDOG-SANITIZED-SOURCE-99758R1","status":"OK","changes_made":false,"rollback_started":false,"rollback_restored":null} +HOMELAB_RESULT_CONTRACT={"version":1,"command_id":"SUPPORT-261007-PVE01-64020-ARTIFACT-RECOVERY-RCA-99759R1","status":"OK","changes_made":false,"rollback_started":false,"rollback_restored":null} OUTPUT_END CHAT_OUTPUT_END