From b68dcbaaca6a35fdec9fc01fc9a178720230cb28 Mon Sep 17 00:00:00 2001 From: homelab-runtime-publisher Date: Thu, 23 Jul 2026 16:10:31 +0000 Subject: [PATCH] runtime: publish HOMELAB-READER-V3-FEED-CONTRACT-AUDIT-374 --- ...LAB-READER-V3-FEED-CONTRACT-AUDIT-374.json | 30 ++++ ...ELAB-READER-V3-FEED-CONTRACT-AUDIT-374.txt | 63 ++++++++ runtime/latest.json | 14 +- runtime/latest.txt | 149 +++++------------- 4 files changed, 142 insertions(+), 114 deletions(-) create mode 100644 runtime/history/HOMELAB-READER-V3-FEED-CONTRACT-AUDIT-374.json create mode 100644 runtime/history/HOMELAB-READER-V3-FEED-CONTRACT-AUDIT-374.txt diff --git a/runtime/history/HOMELAB-READER-V3-FEED-CONTRACT-AUDIT-374.json b/runtime/history/HOMELAB-READER-V3-FEED-CONTRACT-AUDIT-374.json new file mode 100644 index 0000000..1205ba6 --- /dev/null +++ b/runtime/history/HOMELAB-READER-V3-FEED-CONTRACT-AUDIT-374.json @@ -0,0 +1,30 @@ +{ + "schema_version": 1, + "channel": "homelab-runtime", + "command_id": "HOMELAB-READER-V3-FEED-CONTRACT-AUDIT-374", + "status": "OK", + "rc": 0, + "host": "pve01", + "mode": "read-only", + "component": "cluster-audit", + "started_at_utc": "2026-07-23T16:10:30Z", + "finished_at_utc": "2026-07-23T16:10:30Z", + "reference_register_checked": true, + "reference_sha256": "5763f2f8edc75fcf6f3951f8c95896d1cc112ceccb6cf5b64a383f540a4deb8e", + "error_register_checked": true, + "error_register_sha256": "08b3a769b8e38eaa1acec915352fb328180d70caa7ff6cd9d1ec0da426262752", + "command_sha256": "117ab20f3b55ada28354401cd2a707f61c67b0b1ff189501492795fb36526ae6", + "duplicate_failed_command_blocked": false, + "block_reason": null, + "execution_started": true, + "changes_made": false, + "sanitized": true, + "secrets_included": false, + "private_addresses_included": false, + "raw_evidence_retained_locally": true, + "raw_evidence_sha256": "b256b96004621b936d2338ec79126b6379e5097775d231a75fb1153df1709176", + "sanitized_output_sha256": "b256b96004621b936d2338ec79126b6379e5097775d231a75fb1153df1709176", + "output_truncated_in_json": false, + "full_sanitized_output_url": "https://git.gram1.ru/.well-known/homelab-runtime/latest.txt", + "output": "DETAIL=READER_PROCESS_ARGV_BEGIN\nDETAIL=READER_ARG=/usr/bin/python3\nDETAIL=READER_ARG=-B\nDETAIL=READER_ARG=/usr/local/sbin/homelab-reader-server-v3\nDETAIL=READER_PROCESS_ARGV_END\nDETAIL=READER_SOURCE=/usr/local/sbin/homelab-reader-server-v3|META=root:root|755|3539|regular file|SHA256=092780e76ff18dfe2920c51f8b97dd09d194fd6cbdb59c3755c9fbf6530f3536|SHEBANG=#!/usr/bin/python3|SYNTAX=PASS_PYTHON\nPUBLIC_HEALTH_URL=https://git.gram1.ru/.well-known/homelab-reader/5a2edc1b3a3140d935e48ca0c0123849372dedff6fe55a48d25db7ab4de593b2/health\nDETAIL=PUBLIC_READER_HEALTH={\"status\":\"ok\",\"version\":3}\nDETAIL=READER_ROUTE_LITERALS_BEGIN\nDETAIL=READER_LITERAL=Cache-Control\nDETAIL=READER_LITERAL=feed\nDETAIL=READER_LITERAL=health\nDETAIL=READER_LITERAL=health-v3\nDETAIL=READER_LITERAL=no-cache\nDETAIL=READER_LITERAL=no-store, no-cache, must-revalidate, max-age=0\nDETAIL=READER_LITERAL=results\nDETAIL=READER_LITERAL=results/\nDETAIL=READER_ROUTE_LITERALS_END\nDETAIL=READER_RELEVANT_SOURCE_BEGIN\nDETAIL=READER_SOURCE_LINE=12|RESULTS=ROOT/\"results\"\nDETAIL=READER_SOURCE_LINE=27| self.send_header(\"Cache-Control\",\"no-store, no-cache, must-revalidate, max-age=0\")\nDETAIL=READER_SOURCE_LINE=28| self.send_header(\"Surrogate-Control\",\"no-store\")\nDETAIL=READER_SOURCE_LINE=42| def do_GET(self):\nDETAIL=READER_SOURCE_LINE=54| if relative==\"health\":\nDETAIL=READER_SOURCE_LINE=55| self.reply(200,\"application/json; charset=utf-8\",b\"{\\\"status\\\":\\\"ok\\\",\\\"version\\\":3}\\n\",\"health-v3\",include_body)\nDETAIL=READER_SOURCE_LINE=58| if relative==\"feed\":\nDETAIL=READER_SOURCE_LINE=68| if relative.startswith(\"results/\"):\nDETAIL=READER_SOURCE_LINE=69| name=relative[len(\"results/\"):]\nDETAIL=READER_RELEVANT_SOURCE_END\nDETAIL=LINKED_WRAPPER_FEED_LOGIC_BEGIN\nDETAIL=LINKED_SOURCE_LINE=9|cid=$(/usr/bin/sed -n \"s/^COMMAND_ID=//p\" \"$tmp\" | /usr/bin/tail -n 1)\nDETAIL=LINKED_SOURCE_LINE=15| /usr/bin/printf \"IMMUTABLE_RESULT_URL=https://git.gram1.ru/homelab-admin/homelab-public-context/raw/commit/%s/runtime/history/%s.txt\\n\" \"$sha\" \"$cid\"\nDETAIL=LINKED_SOURCE_LINE=20| /usr/bin/grep -Ei '^(DECISION|DETAIL|FAILURE_REASON|ERROR_CODE|SOURCE_DECISION|NGINX_[A-Z0-9_]*|READER_[A-Z0-9_]*|RESULT_FEED_URL|PUBLIC_HEALTH_URL|HTTPS_[A-Z0-9_]*|LOCAL_[A-Z0-9_]*|CHANGES_MADE)=|Traceback|RuntimeError|SystemExit|FileNotFoundError|PermissionError|command not found|No such file or directory|Connection refused|failed|invalid|missing' \"$raw\" | /usr/bin/tail -n 100 || true\nDETAIL=LINKED_WRAPPER_FEED_LOGIC_END\nDETAIL=READER_RUNNER_STORAGE_REFERENCE_COUNT=0\nDETAIL=READER_RESULT_API_MARKER_COUNT=7\nDETAIL=READER_CACHE_CONTROL_MARKER_COUNT=3\nDETAIL=READER_V3_FEED_CONTRACT_AUDIT=PASS\nCHANGES_MADE=NO\n" +} diff --git a/runtime/history/HOMELAB-READER-V3-FEED-CONTRACT-AUDIT-374.txt b/runtime/history/HOMELAB-READER-V3-FEED-CONTRACT-AUDIT-374.txt new file mode 100644 index 0000000..1911215 --- /dev/null +++ b/runtime/history/HOMELAB-READER-V3-FEED-CONTRACT-AUDIT-374.txt @@ -0,0 +1,63 @@ +CHAT_OUTPUT_BEGIN +COMMAND_ID=HOMELAB-READER-V3-FEED-CONTRACT-AUDIT-374 +STATUS=OK +RC=0 +HOST=pve01 +MODE=read-only +COMPONENT=cluster-audit +REFERENCE_REGISTER_CHECK=OK +REFERENCE_SHA256=5763f2f8edc75fcf6f3951f8c95896d1cc112ceccb6cf5b64a383f540a4deb8e +ERROR_REGISTER_CHECK=OK +ERROR_REGISTER_SHA256=08b3a769b8e38eaa1acec915352fb328180d70caa7ff6cd9d1ec0da426262752 +COMMAND_SHA256=117ab20f3b55ada28354401cd2a707f61c67b0b1ff189501492795fb36526ae6 +DUPLICATE_FAILED_COMMAND_BLOCKED=false +EXECUTION_STARTED=true +CHANGES_MADE=false +SANITIZED=yes +SECRETS_INCLUDED=no +PRIVATE_ADDRESSES_INCLUDED=no +RAW_EVIDENCE_SHA256=b256b96004621b936d2338ec79126b6379e5097775d231a75fb1153df1709176 +SANITIZED_OUTPUT_SHA256=b256b96004621b936d2338ec79126b6379e5097775d231a75fb1153df1709176 +OUTPUT_BEGIN +DETAIL=READER_PROCESS_ARGV_BEGIN +DETAIL=READER_ARG=/usr/bin/python3 +DETAIL=READER_ARG=-B +DETAIL=READER_ARG=/usr/local/sbin/homelab-reader-server-v3 +DETAIL=READER_PROCESS_ARGV_END +DETAIL=READER_SOURCE=/usr/local/sbin/homelab-reader-server-v3|META=root:root|755|3539|regular file|SHA256=092780e76ff18dfe2920c51f8b97dd09d194fd6cbdb59c3755c9fbf6530f3536|SHEBANG=#!/usr/bin/python3|SYNTAX=PASS_PYTHON +PUBLIC_HEALTH_URL=https://git.gram1.ru/.well-known/homelab-reader/5a2edc1b3a3140d935e48ca0c0123849372dedff6fe55a48d25db7ab4de593b2/health +DETAIL=PUBLIC_READER_HEALTH={"status":"ok","version":3} +DETAIL=READER_ROUTE_LITERALS_BEGIN +DETAIL=READER_LITERAL=Cache-Control +DETAIL=READER_LITERAL=feed +DETAIL=READER_LITERAL=health +DETAIL=READER_LITERAL=health-v3 +DETAIL=READER_LITERAL=no-cache +DETAIL=READER_LITERAL=no-store, no-cache, must-revalidate, max-age=0 +DETAIL=READER_LITERAL=results +DETAIL=READER_LITERAL=results/ +DETAIL=READER_ROUTE_LITERALS_END +DETAIL=READER_RELEVANT_SOURCE_BEGIN +DETAIL=READER_SOURCE_LINE=12|RESULTS=ROOT/"results" +DETAIL=READER_SOURCE_LINE=27| self.send_header("Cache-Control","no-store, no-cache, must-revalidate, max-age=0") +DETAIL=READER_SOURCE_LINE=28| self.send_header("Surrogate-Control","no-store") +DETAIL=READER_SOURCE_LINE=42| def do_GET(self): +DETAIL=READER_SOURCE_LINE=54| if relative=="health": +DETAIL=READER_SOURCE_LINE=55| self.reply(200,"application/json; charset=utf-8",b"{\"status\":\"ok\",\"version\":3}\n","health-v3",include_body) +DETAIL=READER_SOURCE_LINE=58| if relative=="feed": +DETAIL=READER_SOURCE_LINE=68| if relative.startswith("results/"): +DETAIL=READER_SOURCE_LINE=69| name=relative[len("results/"):] +DETAIL=READER_RELEVANT_SOURCE_END +DETAIL=LINKED_WRAPPER_FEED_LOGIC_BEGIN +DETAIL=LINKED_SOURCE_LINE=9|cid=$(/usr/bin/sed -n "s/^COMMAND_ID=//p" "$tmp" | /usr/bin/tail -n 1) +DETAIL=LINKED_SOURCE_LINE=15| /usr/bin/printf "IMMUTABLE_RESULT_URL=https://git.gram1.ru/homelab-admin/homelab-public-context/raw/commit/%s/runtime/history/%s.txt\n" "$sha" "$cid" +DETAIL=LINKED_SOURCE_LINE=20| /usr/bin/grep -Ei '^(DECISION|DETAIL|FAILURE_REASON|ERROR_CODE|SOURCE_DECISION|NGINX_[A-Z0-9_]*|READER_[A-Z0-9_]*|RESULT_FEED_URL|PUBLIC_HEALTH_URL|HTTPS_[A-Z0-9_]*|LOCAL_[A-Z0-9_]*|CHANGES_MADE)=|Traceback|RuntimeError|SystemExit|FileNotFoundError|PermissionError|command not found|No such file or directory|Connection refused|failed|invalid|missing' "$raw" | /usr/bin/tail -n 100 || true +DETAIL=LINKED_WRAPPER_FEED_LOGIC_END +DETAIL=READER_RUNNER_STORAGE_REFERENCE_COUNT=0 +DETAIL=READER_RESULT_API_MARKER_COUNT=7 +DETAIL=READER_CACHE_CONTROL_MARKER_COUNT=3 +DETAIL=READER_V3_FEED_CONTRACT_AUDIT=PASS +CHANGES_MADE=NO + +OUTPUT_END +CHAT_OUTPUT_END diff --git a/runtime/latest.json b/runtime/latest.json index feddc1b..1205ba6 100644 --- a/runtime/latest.json +++ b/runtime/latest.json @@ -1,19 +1,19 @@ { "schema_version": 1, "channel": "homelab-runtime", - "command_id": "HOMELAB-GITEA-CHAT-TRANSPORT-AUDIT-373", + "command_id": "HOMELAB-READER-V3-FEED-CONTRACT-AUDIT-374", "status": "OK", "rc": 0, "host": "pve01", "mode": "read-only", "component": "cluster-audit", - "started_at_utc": "2026-07-23T15:55:33Z", - "finished_at_utc": "2026-07-23T15:55:34Z", + "started_at_utc": "2026-07-23T16:10:30Z", + "finished_at_utc": "2026-07-23T16:10:30Z", "reference_register_checked": true, "reference_sha256": "5763f2f8edc75fcf6f3951f8c95896d1cc112ceccb6cf5b64a383f540a4deb8e", "error_register_checked": true, "error_register_sha256": "08b3a769b8e38eaa1acec915352fb328180d70caa7ff6cd9d1ec0da426262752", - "command_sha256": "3a9ed987129355bdf4bf8196206f17e111bde7c10cf4865a4e860249e49dd2e5", + "command_sha256": "117ab20f3b55ada28354401cd2a707f61c67b0b1ff189501492795fb36526ae6", "duplicate_failed_command_blocked": false, "block_reason": null, "execution_started": true, @@ -22,9 +22,9 @@ "secrets_included": false, "private_addresses_included": false, "raw_evidence_retained_locally": true, - "raw_evidence_sha256": "1e8ff2ecf2d6dba9d86a31d1dd9c3c11a02eb154d7c42a46a8d0fe282146a619", - "sanitized_output_sha256": "1e8ff2ecf2d6dba9d86a31d1dd9c3c11a02eb154d7c42a46a8d0fe282146a619", + "raw_evidence_sha256": "b256b96004621b936d2338ec79126b6379e5097775d231a75fb1153df1709176", + "sanitized_output_sha256": "b256b96004621b936d2338ec79126b6379e5097775d231a75fb1153df1709176", "output_truncated_in_json": false, "full_sanitized_output_url": "https://git.gram1.ru/.well-known/homelab-runtime/latest.txt", - "output": "DETAIL=RUNNER_FILE=/usr/local/sbin/homelab-chat-run|SHEBANG=#!/usr/bin/env bash|META=root:root|750|11864|regular file|SHA256=2a88defef9517f89bc60934dce82097f8e316b08af9417e95167ea5d759a10d9|BASH_SYNTAX=PASS\nDETAIL=RUNNER_FILE=/usr/local/sbin/homelab-chat-run-linked|SHEBANG=#!/usr/bin/env bash|META=root:root|755|1289|regular file|SHA256=efa9fce3c768e6e0650903ca14fe4b6d5319d57f20ec87c465a4a00cb300d4e0|BASH_SYNTAX=PASS\nDETAIL=LINKED_WRAPPER_SOURCE_BEGIN\n#!/usr/bin/env bash\nset -o pipefail\ntmp=$(/usr/bin/mktemp)\ntrap '/usr/bin/rm -f \"$tmp\"' EXIT\n\n/usr/local/sbin/homelab-chat-run \"$@\" 2>&1 | /usr/bin/tee \"$tmp\"\nrc=${PIPESTATUS[0]}\n\ncid=$(/usr/bin/sed -n \"s/^COMMAND_ID=//p\" \"$tmp\" | /usr/bin/tail -n 1)\nsha=$(/usr/bin/sed -n \"s/^COMMIT_SHA=//p\" \"$tmp\" | /usr/bin/tail -n 1)\nraw=$(/usr/bin/sed -n \"s/^LOCAL_RAW_FILE=//p\" \"$tmp\" | /usr/bin/tail -n 1)\n\nif [[ \"$cid\" =~ ^[A-Za-z0-9][A-Za-z0-9._-]{0,127}$ && \"$sha\" =~ ^[0-9a-f]{40}$ ]]; then\n /usr/bin/printf \"COMMIT_URL=https://git.gram1.ru/homelab-admin/homelab-public-context/commit/%s\\n\" \"$sha\"\n /usr/bin/printf \"IMMUTABLE_RESULT_URL=https://git.gram1.ru/homelab-admin/homelab-public-context/raw/commit/%s/runtime/history/%s.txt\\n\" \"$sha\" \"$cid\"\nfi\n\n/usr/bin/printf \"FAILURE_DIAGNOSTIC_BEGIN\\n\"\nif [[ -n \"$raw\" && -r \"$raw\" ]]; then\n /usr/bin/grep -Ei '^(DECISION|DETAIL|FAILURE_REASON|ERROR_CODE|SOURCE_DECISION|NGINX_[A-Z0-9_]*|READER_[A-Z0-9_]*|RESULT_FEED_URL|PUBLIC_HEALTH_URL|HTTPS_[A-Z0-9_]*|LOCAL_[A-Z0-9_]*|CHANGES_MADE)=|Traceback|RuntimeError|SystemExit|FileNotFoundError|PermissionError|command not found|No such file or directory|Connection refused|failed|invalid|missing' \"$raw\" | /usr/bin/tail -n 100 || true\nfi\n/usr/bin/printf \"FAILURE_DIAGNOSTIC_END\\n\"\n\nexit \"$rc\"\nDETAIL=LINKED_WRAPPER_SOURCE_END\nDETAIL=MAIN_RUNNER_PUBLICATION_HOOKS_BEGIN\n88- exit 70\n89-}\n90-\n91-STATE_DIR=/var/lib/homelab-chat-run\n92-RAW_DIR=\"$STATE_DIR/raw\"\n93-PUBLIC_DIR=\"$STATE_DIR/public\"\n94:LEDGER=\"$STATE_DIR/state/command-ledger.tsv\"\n95-LOCK=\"$STATE_DIR/state/runner.lock\"\n96-\n97-mkdir -p \"$RAW_DIR\" \"$PUBLIC_DIR\" \"$(dirname \"$LEDGER\")\"\n98-chmod 0700 \"$STATE_DIR\" \"$RAW_DIR\" \"$PUBLIC_DIR\" \"$(dirname \"$LEDGER\")\"\n99-touch \"$LEDGER\"\n100-chmod 0600 \"$LEDGER\"\n--\n490- '${REMOTE_PREFIX}.json' \\\n491- '${REMOTE_PREFIX}.txt'\n492-\n493- exit \\$receiver_rc\n494-\"\n495-\n496:PUBLIC_URL='https://git.gram1.ru/.well-known/homelab-runtime/latest.json'\n497-PUBLIC_VISIBLE=false\n498-\n499-for ATTEMPT in $(seq 1 30); do\n500- CONTENT=\"$(\n501- curl -fsS \\\n502- --max-time 15 \\\n503: \"$PUBLIC_URL\" 2>/dev/null ||\n504- true\n505- )\"\n506-\n507- if printf '%s\\n' \"$CONTENT\" |\n508- grep -Fq \"\\\"command_id\\\": \\\"$COMMAND_ID\\\"\"; then\n509- PUBLIC_VISIBLE=true\n--\n534-echo \"COMMAND_ID=$COMMAND_ID\"\n535-echo \"STATUS=$STATUS\"\n536-echo \"RC=$RC\"\n537-echo 'REFERENCE_REGISTER_CHECK=OK'\n538-echo 'ERROR_REGISTER_CHECK=OK'\n539-echo \"DUPLICATE_FAILED_COMMAND_BLOCKED=$REPEAT_BLOCKED\"\n540:echo 'GITEA_PUBLICATION=OK'\n541:echo \"PUBLIC_URL=$PUBLIC_URL\"\n542-echo \"LOCAL_RAW_FILE=$RAW_FILE\"\n543-echo 'SHELL_SESSION_PRESERVED=yes'\n544-\n545-exit \"$RC\"\nDETAIL=MAIN_RUNNER_PUBLICATION_HOOKS_END\nDETAIL=VM170_PUBLIC_DIRECTORY_METADATA=debian:debian|755|4096|directory\nDETAIL=VM170_WELLKNOWN_FILES_BEGIN\n/opt/stacks/gitea/data/gitea/public/.well-known/gitea-auth-check-014.txt|132|644|root:root\n/opt/stacks/gitea/data/gitea/public/.well-known/homelab-context-manifest.json|838|644|debian:debian\n/opt/stacks/gitea/data/gitea/public/.well-known/runtime-receiver-state-026.txt|368|644|root:root\n/opt/stacks/gitea/data/gitea/public/.well-known/gitea-push-auth-stage-012.txt|115|644|root:root\n/opt/stacks/gitea/data/gitea/public/.well-known/homelab-runtime/latest.json|1517|644|root:root\n/opt/stacks/gitea/data/gitea/public/.well-known/homelab-runtime/index.json|436|644|root:root\n/opt/stacks/gitea/data/gitea/public/.well-known/homelab-runtime/latest.txt|1063|644|root:root\n/opt/stacks/gitea/data/gitea/public/.well-known/homelab-bootstrap.json|3097|644|root:root\n/opt/stacks/gitea/data/gitea/public/.well-known/homelab-context.txt|1710|644|debian:debian\n/opt/stacks/gitea/data/gitea/public/.well-known/homelab-bootstrap.json.bak.20260721T093110Z|3154|644|root:root\n/opt/stacks/gitea/data/gitea/public/.well-known/gitea-real-push-canary.txt|136|644|root:root\n/opt/stacks/gitea/data/gitea/public/.well-known/homelab-context.json|2334|644|debian:debian\n/opt/stacks/gitea/data/gitea/public/.well-known/homelab-bootstrap.json.bak.20260721T092825Z|1915|644|root:root\n/opt/stacks/gitea/data/gitea/public/.well-known/runtime-receiver-preflight-020.txt|807|644|root:root\n/opt/stacks/gitea/data/gitea/public/.well-known/gitea-auth-check-017.txt|82|644|root:root\nDETAIL=VM170_WELLKNOWN_FILES_END\nDETAIL=BOOTSTRAP_HTTP_HEADERS_BEGIN\nHTTP/2 200 \ncontent-type: application/json\ncache-control: max-age=0, private, must-revalidate, no-transform\nlast-modified: Tue, 21 Jul 2026 09:31:10 GMT\nDETAIL=BOOTSTRAP_HTTP_HEADERS_END\nDETAIL=PUBLIC_HANDOFF_HTTP_STATUS=404\nDETAIL=GITEA_CHAT_TRANSPORT_AUDIT=PASS\nCHANGES_MADE=NO\n" + "output": "DETAIL=READER_PROCESS_ARGV_BEGIN\nDETAIL=READER_ARG=/usr/bin/python3\nDETAIL=READER_ARG=-B\nDETAIL=READER_ARG=/usr/local/sbin/homelab-reader-server-v3\nDETAIL=READER_PROCESS_ARGV_END\nDETAIL=READER_SOURCE=/usr/local/sbin/homelab-reader-server-v3|META=root:root|755|3539|regular file|SHA256=092780e76ff18dfe2920c51f8b97dd09d194fd6cbdb59c3755c9fbf6530f3536|SHEBANG=#!/usr/bin/python3|SYNTAX=PASS_PYTHON\nPUBLIC_HEALTH_URL=https://git.gram1.ru/.well-known/homelab-reader/5a2edc1b3a3140d935e48ca0c0123849372dedff6fe55a48d25db7ab4de593b2/health\nDETAIL=PUBLIC_READER_HEALTH={\"status\":\"ok\",\"version\":3}\nDETAIL=READER_ROUTE_LITERALS_BEGIN\nDETAIL=READER_LITERAL=Cache-Control\nDETAIL=READER_LITERAL=feed\nDETAIL=READER_LITERAL=health\nDETAIL=READER_LITERAL=health-v3\nDETAIL=READER_LITERAL=no-cache\nDETAIL=READER_LITERAL=no-store, no-cache, must-revalidate, max-age=0\nDETAIL=READER_LITERAL=results\nDETAIL=READER_LITERAL=results/\nDETAIL=READER_ROUTE_LITERALS_END\nDETAIL=READER_RELEVANT_SOURCE_BEGIN\nDETAIL=READER_SOURCE_LINE=12|RESULTS=ROOT/\"results\"\nDETAIL=READER_SOURCE_LINE=27| self.send_header(\"Cache-Control\",\"no-store, no-cache, must-revalidate, max-age=0\")\nDETAIL=READER_SOURCE_LINE=28| self.send_header(\"Surrogate-Control\",\"no-store\")\nDETAIL=READER_SOURCE_LINE=42| def do_GET(self):\nDETAIL=READER_SOURCE_LINE=54| if relative==\"health\":\nDETAIL=READER_SOURCE_LINE=55| self.reply(200,\"application/json; charset=utf-8\",b\"{\\\"status\\\":\\\"ok\\\",\\\"version\\\":3}\\n\",\"health-v3\",include_body)\nDETAIL=READER_SOURCE_LINE=58| if relative==\"feed\":\nDETAIL=READER_SOURCE_LINE=68| if relative.startswith(\"results/\"):\nDETAIL=READER_SOURCE_LINE=69| name=relative[len(\"results/\"):]\nDETAIL=READER_RELEVANT_SOURCE_END\nDETAIL=LINKED_WRAPPER_FEED_LOGIC_BEGIN\nDETAIL=LINKED_SOURCE_LINE=9|cid=$(/usr/bin/sed -n \"s/^COMMAND_ID=//p\" \"$tmp\" | /usr/bin/tail -n 1)\nDETAIL=LINKED_SOURCE_LINE=15| /usr/bin/printf \"IMMUTABLE_RESULT_URL=https://git.gram1.ru/homelab-admin/homelab-public-context/raw/commit/%s/runtime/history/%s.txt\\n\" \"$sha\" \"$cid\"\nDETAIL=LINKED_SOURCE_LINE=20| /usr/bin/grep -Ei '^(DECISION|DETAIL|FAILURE_REASON|ERROR_CODE|SOURCE_DECISION|NGINX_[A-Z0-9_]*|READER_[A-Z0-9_]*|RESULT_FEED_URL|PUBLIC_HEALTH_URL|HTTPS_[A-Z0-9_]*|LOCAL_[A-Z0-9_]*|CHANGES_MADE)=|Traceback|RuntimeError|SystemExit|FileNotFoundError|PermissionError|command not found|No such file or directory|Connection refused|failed|invalid|missing' \"$raw\" | /usr/bin/tail -n 100 || true\nDETAIL=LINKED_WRAPPER_FEED_LOGIC_END\nDETAIL=READER_RUNNER_STORAGE_REFERENCE_COUNT=0\nDETAIL=READER_RESULT_API_MARKER_COUNT=7\nDETAIL=READER_CACHE_CONTROL_MARKER_COUNT=3\nDETAIL=READER_V3_FEED_CONTRACT_AUDIT=PASS\nCHANGES_MADE=NO\n" } diff --git a/runtime/latest.txt b/runtime/latest.txt index 3db4a9d..1911215 100644 --- a/runtime/latest.txt +++ b/runtime/latest.txt @@ -1,5 +1,5 @@ CHAT_OUTPUT_BEGIN -COMMAND_ID=HOMELAB-GITEA-CHAT-TRANSPORT-AUDIT-373 +COMMAND_ID=HOMELAB-READER-V3-FEED-CONTRACT-AUDIT-374 STATUS=OK RC=0 HOST=pve01 @@ -9,119 +9,54 @@ REFERENCE_REGISTER_CHECK=OK REFERENCE_SHA256=5763f2f8edc75fcf6f3951f8c95896d1cc112ceccb6cf5b64a383f540a4deb8e ERROR_REGISTER_CHECK=OK ERROR_REGISTER_SHA256=08b3a769b8e38eaa1acec915352fb328180d70caa7ff6cd9d1ec0da426262752 -COMMAND_SHA256=3a9ed987129355bdf4bf8196206f17e111bde7c10cf4865a4e860249e49dd2e5 +COMMAND_SHA256=117ab20f3b55ada28354401cd2a707f61c67b0b1ff189501492795fb36526ae6 DUPLICATE_FAILED_COMMAND_BLOCKED=false EXECUTION_STARTED=true CHANGES_MADE=false SANITIZED=yes SECRETS_INCLUDED=no PRIVATE_ADDRESSES_INCLUDED=no -RAW_EVIDENCE_SHA256=1e8ff2ecf2d6dba9d86a31d1dd9c3c11a02eb154d7c42a46a8d0fe282146a619 -SANITIZED_OUTPUT_SHA256=1e8ff2ecf2d6dba9d86a31d1dd9c3c11a02eb154d7c42a46a8d0fe282146a619 +RAW_EVIDENCE_SHA256=b256b96004621b936d2338ec79126b6379e5097775d231a75fb1153df1709176 +SANITIZED_OUTPUT_SHA256=b256b96004621b936d2338ec79126b6379e5097775d231a75fb1153df1709176 OUTPUT_BEGIN -DETAIL=RUNNER_FILE=/usr/local/sbin/homelab-chat-run|SHEBANG=#!/usr/bin/env bash|META=root:root|750|11864|regular file|SHA256=2a88defef9517f89bc60934dce82097f8e316b08af9417e95167ea5d759a10d9|BASH_SYNTAX=PASS -DETAIL=RUNNER_FILE=/usr/local/sbin/homelab-chat-run-linked|SHEBANG=#!/usr/bin/env bash|META=root:root|755|1289|regular file|SHA256=efa9fce3c768e6e0650903ca14fe4b6d5319d57f20ec87c465a4a00cb300d4e0|BASH_SYNTAX=PASS -DETAIL=LINKED_WRAPPER_SOURCE_BEGIN -#!/usr/bin/env bash -set -o pipefail -tmp=$(/usr/bin/mktemp) -trap '/usr/bin/rm -f "$tmp"' EXIT - -/usr/local/sbin/homelab-chat-run "$@" 2>&1 | /usr/bin/tee "$tmp" -rc=${PIPESTATUS[0]} - -cid=$(/usr/bin/sed -n "s/^COMMAND_ID=//p" "$tmp" | /usr/bin/tail -n 1) -sha=$(/usr/bin/sed -n "s/^COMMIT_SHA=//p" "$tmp" | /usr/bin/tail -n 1) -raw=$(/usr/bin/sed -n "s/^LOCAL_RAW_FILE=//p" "$tmp" | /usr/bin/tail -n 1) - -if [[ "$cid" =~ ^[A-Za-z0-9][A-Za-z0-9._-]{0,127}$ && "$sha" =~ ^[0-9a-f]{40}$ ]]; then - /usr/bin/printf "COMMIT_URL=https://git.gram1.ru/homelab-admin/homelab-public-context/commit/%s\n" "$sha" - /usr/bin/printf "IMMUTABLE_RESULT_URL=https://git.gram1.ru/homelab-admin/homelab-public-context/raw/commit/%s/runtime/history/%s.txt\n" "$sha" "$cid" -fi - -/usr/bin/printf "FAILURE_DIAGNOSTIC_BEGIN\n" -if [[ -n "$raw" && -r "$raw" ]]; then - /usr/bin/grep -Ei '^(DECISION|DETAIL|FAILURE_REASON|ERROR_CODE|SOURCE_DECISION|NGINX_[A-Z0-9_]*|READER_[A-Z0-9_]*|RESULT_FEED_URL|PUBLIC_HEALTH_URL|HTTPS_[A-Z0-9_]*|LOCAL_[A-Z0-9_]*|CHANGES_MADE)=|Traceback|RuntimeError|SystemExit|FileNotFoundError|PermissionError|command not found|No such file or directory|Connection refused|failed|invalid|missing' "$raw" | /usr/bin/tail -n 100 || true -fi -/usr/bin/printf "FAILURE_DIAGNOSTIC_END\n" - -exit "$rc" -DETAIL=LINKED_WRAPPER_SOURCE_END -DETAIL=MAIN_RUNNER_PUBLICATION_HOOKS_BEGIN -88- exit 70 -89-} -90- -91-STATE_DIR=/var/lib/homelab-chat-run -92-RAW_DIR="$STATE_DIR/raw" -93-PUBLIC_DIR="$STATE_DIR/public" -94:LEDGER="$STATE_DIR/state/command-ledger.tsv" -95-LOCK="$STATE_DIR/state/runner.lock" -96- -97-mkdir -p "$RAW_DIR" "$PUBLIC_DIR" "$(dirname "$LEDGER")" -98-chmod 0700 "$STATE_DIR" "$RAW_DIR" "$PUBLIC_DIR" "$(dirname "$LEDGER")" -99-touch "$LEDGER" -100-chmod 0600 "$LEDGER" --- -490- '${REMOTE_PREFIX}.json' \ -491- '${REMOTE_PREFIX}.txt' -492- -493- exit \$receiver_rc -494-" -495- -496:PUBLIC_URL='https://git.gram1.ru/.well-known/homelab-runtime/latest.json' -497-PUBLIC_VISIBLE=false -498- -499-for ATTEMPT in $(seq 1 30); do -500- CONTENT="$( -501- curl -fsS \ -502- --max-time 15 \ -503: "$PUBLIC_URL" 2>/dev/null || -504- true -505- )" -506- -507- if printf '%s\n' "$CONTENT" | -508- grep -Fq "\"command_id\": \"$COMMAND_ID\""; then -509- PUBLIC_VISIBLE=true --- -534-echo "COMMAND_ID=$COMMAND_ID" -535-echo "STATUS=$STATUS" -536-echo "RC=$RC" -537-echo 'REFERENCE_REGISTER_CHECK=OK' -538-echo 'ERROR_REGISTER_CHECK=OK' -539-echo "DUPLICATE_FAILED_COMMAND_BLOCKED=$REPEAT_BLOCKED" -540:echo 'GITEA_PUBLICATION=OK' -541:echo "PUBLIC_URL=$PUBLIC_URL" -542-echo "LOCAL_RAW_FILE=$RAW_FILE" -543-echo 'SHELL_SESSION_PRESERVED=yes' -544- -545-exit "$RC" -DETAIL=MAIN_RUNNER_PUBLICATION_HOOKS_END -DETAIL=VM170_PUBLIC_DIRECTORY_METADATA=debian:debian|755|4096|directory -DETAIL=VM170_WELLKNOWN_FILES_BEGIN -/opt/stacks/gitea/data/gitea/public/.well-known/gitea-auth-check-014.txt|132|644|root:root -/opt/stacks/gitea/data/gitea/public/.well-known/homelab-context-manifest.json|838|644|debian:debian -/opt/stacks/gitea/data/gitea/public/.well-known/runtime-receiver-state-026.txt|368|644|root:root -/opt/stacks/gitea/data/gitea/public/.well-known/gitea-push-auth-stage-012.txt|115|644|root:root -/opt/stacks/gitea/data/gitea/public/.well-known/homelab-runtime/latest.json|1517|644|root:root -/opt/stacks/gitea/data/gitea/public/.well-known/homelab-runtime/index.json|436|644|root:root -/opt/stacks/gitea/data/gitea/public/.well-known/homelab-runtime/latest.txt|1063|644|root:root -/opt/stacks/gitea/data/gitea/public/.well-known/homelab-bootstrap.json|3097|644|root:root -/opt/stacks/gitea/data/gitea/public/.well-known/homelab-context.txt|1710|644|debian:debian -/opt/stacks/gitea/data/gitea/public/.well-known/homelab-bootstrap.json.bak.20260721T093110Z|3154|644|root:root -/opt/stacks/gitea/data/gitea/public/.well-known/gitea-real-push-canary.txt|136|644|root:root -/opt/stacks/gitea/data/gitea/public/.well-known/homelab-context.json|2334|644|debian:debian -/opt/stacks/gitea/data/gitea/public/.well-known/homelab-bootstrap.json.bak.20260721T092825Z|1915|644|root:root -/opt/stacks/gitea/data/gitea/public/.well-known/runtime-receiver-preflight-020.txt|807|644|root:root -/opt/stacks/gitea/data/gitea/public/.well-known/gitea-auth-check-017.txt|82|644|root:root -DETAIL=VM170_WELLKNOWN_FILES_END -DETAIL=BOOTSTRAP_HTTP_HEADERS_BEGIN -HTTP/2 200 -content-type: application/json -cache-control: max-age=0, private, must-revalidate, no-transform -last-modified: Tue, 21 Jul 2026 09:31:10 GMT -DETAIL=BOOTSTRAP_HTTP_HEADERS_END -DETAIL=PUBLIC_HANDOFF_HTTP_STATUS=404 -DETAIL=GITEA_CHAT_TRANSPORT_AUDIT=PASS +DETAIL=READER_PROCESS_ARGV_BEGIN +DETAIL=READER_ARG=/usr/bin/python3 +DETAIL=READER_ARG=-B +DETAIL=READER_ARG=/usr/local/sbin/homelab-reader-server-v3 +DETAIL=READER_PROCESS_ARGV_END +DETAIL=READER_SOURCE=/usr/local/sbin/homelab-reader-server-v3|META=root:root|755|3539|regular file|SHA256=092780e76ff18dfe2920c51f8b97dd09d194fd6cbdb59c3755c9fbf6530f3536|SHEBANG=#!/usr/bin/python3|SYNTAX=PASS_PYTHON +PUBLIC_HEALTH_URL=https://git.gram1.ru/.well-known/homelab-reader/5a2edc1b3a3140d935e48ca0c0123849372dedff6fe55a48d25db7ab4de593b2/health +DETAIL=PUBLIC_READER_HEALTH={"status":"ok","version":3} +DETAIL=READER_ROUTE_LITERALS_BEGIN +DETAIL=READER_LITERAL=Cache-Control +DETAIL=READER_LITERAL=feed +DETAIL=READER_LITERAL=health +DETAIL=READER_LITERAL=health-v3 +DETAIL=READER_LITERAL=no-cache +DETAIL=READER_LITERAL=no-store, no-cache, must-revalidate, max-age=0 +DETAIL=READER_LITERAL=results +DETAIL=READER_LITERAL=results/ +DETAIL=READER_ROUTE_LITERALS_END +DETAIL=READER_RELEVANT_SOURCE_BEGIN +DETAIL=READER_SOURCE_LINE=12|RESULTS=ROOT/"results" +DETAIL=READER_SOURCE_LINE=27| self.send_header("Cache-Control","no-store, no-cache, must-revalidate, max-age=0") +DETAIL=READER_SOURCE_LINE=28| self.send_header("Surrogate-Control","no-store") +DETAIL=READER_SOURCE_LINE=42| def do_GET(self): +DETAIL=READER_SOURCE_LINE=54| if relative=="health": +DETAIL=READER_SOURCE_LINE=55| self.reply(200,"application/json; charset=utf-8",b"{\"status\":\"ok\",\"version\":3}\n","health-v3",include_body) +DETAIL=READER_SOURCE_LINE=58| if relative=="feed": +DETAIL=READER_SOURCE_LINE=68| if relative.startswith("results/"): +DETAIL=READER_SOURCE_LINE=69| name=relative[len("results/"):] +DETAIL=READER_RELEVANT_SOURCE_END +DETAIL=LINKED_WRAPPER_FEED_LOGIC_BEGIN +DETAIL=LINKED_SOURCE_LINE=9|cid=$(/usr/bin/sed -n "s/^COMMAND_ID=//p" "$tmp" | /usr/bin/tail -n 1) +DETAIL=LINKED_SOURCE_LINE=15| /usr/bin/printf "IMMUTABLE_RESULT_URL=https://git.gram1.ru/homelab-admin/homelab-public-context/raw/commit/%s/runtime/history/%s.txt\n" "$sha" "$cid" +DETAIL=LINKED_SOURCE_LINE=20| /usr/bin/grep -Ei '^(DECISION|DETAIL|FAILURE_REASON|ERROR_CODE|SOURCE_DECISION|NGINX_[A-Z0-9_]*|READER_[A-Z0-9_]*|RESULT_FEED_URL|PUBLIC_HEALTH_URL|HTTPS_[A-Z0-9_]*|LOCAL_[A-Z0-9_]*|CHANGES_MADE)=|Traceback|RuntimeError|SystemExit|FileNotFoundError|PermissionError|command not found|No such file or directory|Connection refused|failed|invalid|missing' "$raw" | /usr/bin/tail -n 100 || true +DETAIL=LINKED_WRAPPER_FEED_LOGIC_END +DETAIL=READER_RUNNER_STORAGE_REFERENCE_COUNT=0 +DETAIL=READER_RESULT_API_MARKER_COUNT=7 +DETAIL=READER_CACHE_CONTROL_MARKER_COUNT=3 +DETAIL=READER_V3_FEED_CONTRACT_AUDIT=PASS CHANGES_MADE=NO OUTPUT_END