From 3da10ecb41d56885a6fe1c53ca3795d2855df1b5 Mon Sep 17 00:00:00 2001 From: homelab-runtime-publisher Date: Wed, 5 Aug 2026 15:04:48 +0000 Subject: [PATCH] runtime: publish HOMELAB-SKLADCHIK-EDGE-REAUTH-TARGET-INPUT-CONTRACT-READ-ONLY-20260805T150200Z --- ...T-CONTRACT-READ-ONLY-20260805T150200Z.json | 38 +++++++++++++++++++ ...UT-CONTRACT-READ-ONLY-20260805T150200Z.txt | 34 +++++++++++++++++ runtime/latest.json | 36 +++++++++--------- runtime/latest.txt | 36 +++++++++--------- 4 files changed, 108 insertions(+), 36 deletions(-) create mode 100644 runtime/history/HOMELAB-SKLADCHIK-EDGE-REAUTH-TARGET-INPUT-CONTRACT-READ-ONLY-20260805T150200Z.json create mode 100644 runtime/history/HOMELAB-SKLADCHIK-EDGE-REAUTH-TARGET-INPUT-CONTRACT-READ-ONLY-20260805T150200Z.txt diff --git a/runtime/history/HOMELAB-SKLADCHIK-EDGE-REAUTH-TARGET-INPUT-CONTRACT-READ-ONLY-20260805T150200Z.json b/runtime/history/HOMELAB-SKLADCHIK-EDGE-REAUTH-TARGET-INPUT-CONTRACT-READ-ONLY-20260805T150200Z.json new file mode 100644 index 0000000..d6ab46f --- /dev/null +++ b/runtime/history/HOMELAB-SKLADCHIK-EDGE-REAUTH-TARGET-INPUT-CONTRACT-READ-ONLY-20260805T150200Z.json @@ -0,0 +1,38 @@ +{ + "schema_version": 1, + "channel": "homelab-runtime", + "command_id": "HOMELAB-SKLADCHIK-EDGE-REAUTH-TARGET-INPUT-CONTRACT-READ-ONLY-20260805T150200Z", + "status": "OK", + "rc": 0, + "host": "pve01", + "mode": "verify", + "component": "skladchik-edge-reauth-target-contract-ro", + "started_at_utc": "2026-08-05T15:04:47Z", + "finished_at_utc": "2026-08-05T15:04:48Z", + "reference_register_checked": true, + "reference_sha256": "5763f2f8edc75fcf6f3951f8c95896d1cc112ceccb6cf5b64a383f540a4deb8e", + "error_register_checked": true, + "error_register_sha256": "24934a2c7fa5c26f6e828583c4aefac7f143b40c0171736ed7571e617d55ab83", + "command_sha256": "796fc4a8a5bf7db50078828e9de5df78bf8f77a440ca292c677e0ba948f5b7c5", + "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": "90c36f3b2f32ba3f5ed40addf79efd07f3abb485561af9781676cb88dfdd1bf6", + "sanitized_output_sha256": "90c36f3b2f32ba3f5ed40addf79efd07f3abb485561af9781676cb88dfdd1bf6", + "output_truncated_in_json": false, + "full_sanitized_output_url": "https://git.gram1.ru/.well-known/homelab-runtime/latest.txt", + "output": "HOMELAB_RESULT_CONTRACT={\"changes_made\":false,\"command_id\":\"HOMELAB-SKLADCHIK-EDGE-REAUTH-TARGET-INPUT-CONTRACT-READ-ONLY-20260805T150200Z\",\"command_rc\":0,\"mutation_outcome\":\"NO_MUTATION\",\"output_truncated_in_json\":false,\"rc\":0,\"rollback_restored\":null,\"rollback_started\":false,\"status\":\"OK\",\"version\":1}\n{\"analysis_ready\":true,\"changes_made\":false,\"command_id\":\"HOMELAB-SKLADCHIK-EDGE-REAUTH-TARGET-INPUT-CONTRACT-READ-ONLY-20260805T150200Z\",\"command_rc\":0,\"detector_scope\":{\"cookie_files_read\":false,\"private_addresses_emitted\":false,\"secret_values_emitted\":false,\"secret_values_read\":false,\"source_text_emitted\":false},\"mutation_outcome\":\"NO_MUTATION\",\"next_action\":\"BUILD_TRANSACTION_AGAINST_EXACT_VERIFIED_EDGE_INTERFACE\",\"output_truncated_in_json\":false,\"rc\":0,\"read_only\":true,\"remote_target\":{\"rc\":0,\"related\":[{\"basename\":\"monitor.py\",\"bytes\":25579,\"language\":\"python\",\"mode\":\"0o700\",\"path_sha256\":\"8384ce3a78c366c337bd370cf87efb3d33d848e385c34b188000f87bfac4e7c0\",\"projection\":{\"arg_options\":[],\"environment_names\":[],\"parse\":\"python_ast_ok\",\"related_targets\":[],\"relevant_calls\":[{\"call\":\"path.read_text\",\"line\":74},{\"call\":\"cfg.read\",\"line\":103},{\"call\":\"read_env\",\"line\":104},{\"call\":\"COOKIE_JAR_PATH.read_text\",\"line\":193},{\"call\":\"subprocess.run\",\"line\":277},{\"call\":\"read_bytes\",\"line\":286},{\"call\":\"smtp_ready\",\"line\":433},{\"call\":\"smtp_ready\",\"line\":606},{\"call\":\"HEALTH_PATH.read_text\",\"line\":629},{\"call\":\"argparse.ArgumentParser\",\"line\":636}],\"signals\":{\"argv\":false,\"askpass\":false,\"builtin_input\":false,\"environment\":false,\"getpass\":false,\"os_read_fd0\":false,\"stdin\":false,\"tty\":false}},\"sha256\":\"9fe19e0f56d49cb6db12a56d84c19e5f75ef7ce8ea6feaac303bc24d22953b1e\",\"shebang\":\"#!/usr/bin/env python3\"}],\"root\":{\"basename\":\"skladchik-reports-monitor-cookie-update-edge\",\"bytes\":5247,\"language\":\"shell_or_other\",\"mode\":\"0o755\",\"path_sha256\":\"40ecb6cff3f7e9fa1d070dcd52a5b3e7e7612a3227d0951485fdfd101e75070f\",\"projection\":{\"commands\":[{\"command\":\"set\",\"line\":2},{\"command\":\"umask\",\"line\":3},{\"command\":\"secrets.env\",\"line\":5},{\"command\":\"monitor.py\",\"line\":6},{\"command\":\"cookies.jar\",\"line\":7},{\"command\":\"health.txt\",\"line\":8},{\"command\":\"skladchik-cookie-update-monitor.out\",\"line\":9},{\"command\":\"TIMER=skladchik-reports-monitor.timer\",\"line\":10},{\"command\":\"SERVICE=skladchik-reports-monitor.service\",\"line\":11},{\"command\":\"TMP=$(mktemp)\",\"line\":13},{\"command\":\"NO_COOKIE_SECRET=$(mktemp)\",\"line\":14},{\"command\":\"SECRETS_BACKUP=\",\"line\":15},{\"command\":\"JAR_BACKUP=\",\"line\":16},{\"command\":\"JAR_EXISTED=0\",\"line\":17},{\"command\":\"AUTH_MUTATED=0\",\"line\":18},{\"command\":\"FINALIZED=0\",\"line\":19},{\"command\":\"null || true)\",\"line\":21},{\"command\":\"null || true)\",\"line\":22},{\"command\":\"on_err(){\",\"line\":24},{\"command\":\"local\",\"line\":25},{\"command\":\"trap\",\"line\":26},{\"command\":\"printf\",\"line\":27},{\"command\":\"exit\",\"line\":28},{\"command\":\"}\",\"line\":29},{\"command\":\"restore_timer_state(){\",\"line\":31},{\"command\":\"systemctl\",\"line\":32},{\"command\":\"[\",\"line\":33},{\"command\":\"systemctl\",\"line\":34},{\"command\":\"else\",\"line\":35},{\"command\":\"systemctl\",\"line\":36},{\"command\":\"fi\",\"line\":37},{\"command\":\"[\",\"line\":38},{\"command\":\"systemctl\",\"line\":39},{\"command\":\"fi\",\"line\":40},{\"command\":\"}\",\"line\":41},{\"command\":\"restore_auth_state(){\",\"line\":43},{\"command\":\"[\",\"line\":44},{\"command\":\"[\",\"line\":45},{\"command\":\"install\",\"line\":46},{\"command\":\"fi\",\"line\":47},{\"command\":\"[\",\"line\":48},{\"command\":\"install\",\"line\":49},{\"command\":\"else\",\"line\":50},{\"command\":\"rm\",\"line\":51},{\"command\":\"fi\",\"line\":52},{\"command\":\"AUTH_MUTATED=0\",\"line\":53},{\"command\":\"fi\",\"line\":54},{\"command\":\"}\",\"line\":55},{\"command\":\"cleanup(){\",\"line\":57},{\"command\":\"local\",\"line\":58},{\"command\":\"trap\",\"line\":59},{\"command\":\"trap\",\"line\":60},{\"command\":\"set\",\"line\":61},{\"command\":\"[\",\"line\":62},{\"command\":\"restore_auth_state\",\"line\":63},{\"command\":\"restore_timer_state\",\"line\":64},{\"command\":\"fi\",\"line\":65},{\"command\":\"rm\",\"line\":66},{\"command\":\"[\",\"line\":67},{\"command\":\"[\",\"line\":68},{\"command\":\"exit\",\"line\":69},{\"command\":\"}\",\"line\":70},{\"command\":\"trap\",\"line\":72},{\"command\":\"trap\",\"line\":73},{\"command\":\"trap\",\"line\":74},{\"command\":\"trap\",\"line\":75},{\"command\":\"trap\",\"line\":76},{\"command\":\"systemctl\",\"line\":78},{\"command\":\"WAIT_SECONDS=90\",\"line\":80},{\"command\":\"DEADLINE=$((SECONDS\",\"line\":81},{\"command\":\"systemctl\",\"line\":82},{\"command\":\"((\",\"line\":83},{\"command\":\"restore_timer_state\",\"line\":84},{\"command\":\"FINALIZED=1\",\"line\":85},{\"command\":\"printf\",\"line\":86},{\"command\":\"exit\",\"line\":87},{\"command\":\"fi\",\"line\":88},{\"command\":\"sleep\",\"line\":89},{\"command\":\"done\",\"line\":90},{\"command\":\"printf\",\"line\":92}],\"environment_names\":[\"AUTH_MUTATED\",\"FINALIZED\",\"FIRST_RUN_RC\",\"FIRST_RUN_STATUS\",\"HEALTH\",\"JAR_BACKUP\",\"JAR_EXISTED\",\"LINENO\",\"MONITOR\",\"OUTPUT\",\"SECOND_RUN_RC\",\"SECOND_RUN_STATUS\",\"SERVICE\",\"TIMER\",\"TIMER_WAS_ACTIVE\",\"TIMER_WAS_ENABLED\",\"TMP\",\"rc\"],\"parse\":\"shell_token_projection\",\"related_targets\":[\"/opt/skladchik-reports-monitor/monitor.py\",\"/var/lib/skladchik-reports-monitor/health.txt\"],\"signals\":{\"argv\":true,\"askpass\":false,\"environment\":true,\"read_builtin\":false,\"read_flags\":[],\"stdin\":false,\"tty\":false}},\"sha256\":\"10fe854274dca1a053cfd8c0155340bd689bf3f6555c70dbc14b890cbafb93fa\",\"shebang\":\"#!/usr/bin/env bash\"},\"schema\":1,\"scope\":{\"cookie_files_read\":false,\"secret_values_emitted\":false,\"secret_values_read\":false,\"source_text_emitted\":false},\"status\":\"OK\",\"verified_input_interface\":{\"argv\":true,\"askpass\":false,\"environment\":true,\"modes\":[\"argv\",\"environment\"],\"stdin\":false,\"tty\":false}},\"rollback_restored\":null,\"rollback_started\":false,\"root_cause_classification\":\"VERIFIED_EDGE_REAUTH_NONINTERACTIVE_INTERFACE_CAPTURED\",\"schema\":1,\"status\":\"OK\",\"verified_input_modes\":[\"argv\",\"environment\"],\"wrapper\":{\"bytes\":638,\"edge_script_basename\":\"skladchik-reports-monitor-cookie-update-edge\",\"edge_script_path_sha256\":\"40ecb6cff3f7e9fa1d070dcd52a5b3e7e7612a3227d0951485fdfd101e75070f\",\"sha256\":\"ea2d89ce67893a6d89b29610e4d46e207932ecc157173454585f67890f58810c\",\"ssh_safety_options_verified\":true}}\n" +} diff --git a/runtime/history/HOMELAB-SKLADCHIK-EDGE-REAUTH-TARGET-INPUT-CONTRACT-READ-ONLY-20260805T150200Z.txt b/runtime/history/HOMELAB-SKLADCHIK-EDGE-REAUTH-TARGET-INPUT-CONTRACT-READ-ONLY-20260805T150200Z.txt new file mode 100644 index 0000000..045afec --- /dev/null +++ b/runtime/history/HOMELAB-SKLADCHIK-EDGE-REAUTH-TARGET-INPUT-CONTRACT-READ-ONLY-20260805T150200Z.txt @@ -0,0 +1,34 @@ +CHAT_OUTPUT_BEGIN +COMMAND_ID=HOMELAB-SKLADCHIK-EDGE-REAUTH-TARGET-INPUT-CONTRACT-READ-ONLY-20260805T150200Z +STATUS=OK +RC=0 +HOST=pve01 +MODE=verify +COMPONENT=skladchik-edge-reauth-target-contract-ro +REFERENCE_REGISTER_CHECK=OK +REFERENCE_SHA256=5763f2f8edc75fcf6f3951f8c95896d1cc112ceccb6cf5b64a383f540a4deb8e +ERROR_REGISTER_CHECK=OK +ERROR_REGISTER_SHA256=24934a2c7fa5c26f6e828583c4aefac7f143b40c0171736ed7571e617d55ab83 +COMMAND_SHA256=796fc4a8a5bf7db50078828e9de5df78bf8f77a440ca292c677e0ba948f5b7c5 +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=90c36f3b2f32ba3f5ed40addf79efd07f3abb485561af9781676cb88dfdd1bf6 +SANITIZED_OUTPUT_SHA256=90c36f3b2f32ba3f5ed40addf79efd07f3abb485561af9781676cb88dfdd1bf6 +OUTPUT_BEGIN +HOMELAB_RESULT_CONTRACT={"changes_made":false,"command_id":"HOMELAB-SKLADCHIK-EDGE-REAUTH-TARGET-INPUT-CONTRACT-READ-ONLY-20260805T150200Z","command_rc":0,"mutation_outcome":"NO_MUTATION","output_truncated_in_json":false,"rc":0,"rollback_restored":null,"rollback_started":false,"status":"OK","version":1} +{"analysis_ready":true,"changes_made":false,"command_id":"HOMELAB-SKLADCHIK-EDGE-REAUTH-TARGET-INPUT-CONTRACT-READ-ONLY-20260805T150200Z","command_rc":0,"detector_scope":{"cookie_files_read":false,"private_addresses_emitted":false,"secret_values_emitted":false,"secret_values_read":false,"source_text_emitted":false},"mutation_outcome":"NO_MUTATION","next_action":"BUILD_TRANSACTION_AGAINST_EXACT_VERIFIED_EDGE_INTERFACE","output_truncated_in_json":false,"rc":0,"read_only":true,"remote_target":{"rc":0,"related":[{"basename":"monitor.py","bytes":25579,"language":"python","mode":"0o700","path_sha256":"8384ce3a78c366c337bd370cf87efb3d33d848e385c34b188000f87bfac4e7c0","projection":{"arg_options":[],"environment_names":[],"parse":"python_ast_ok","related_targets":[],"relevant_calls":[{"call":"path.read_text","line":74},{"call":"cfg.read","line":103},{"call":"read_env","line":104},{"call":"COOKIE_JAR_PATH.read_text","line":193},{"call":"subprocess.run","line":277},{"call":"read_bytes","line":286},{"call":"smtp_ready","line":433},{"call":"smtp_ready","line":606},{"call":"HEALTH_PATH.read_text","line":629},{"call":"argparse.ArgumentParser","line":636}],"signals":{"argv":false,"askpass":false,"builtin_input":false,"environment":false,"getpass":false,"os_read_fd0":false,"stdin":false,"tty":false}},"sha256":"9fe19e0f56d49cb6db12a56d84c19e5f75ef7ce8ea6feaac303bc24d22953b1e","shebang":"#!/usr/bin/env python3"}],"root":{"basename":"skladchik-reports-monitor-cookie-update-edge","bytes":5247,"language":"shell_or_other","mode":"0o755","path_sha256":"40ecb6cff3f7e9fa1d070dcd52a5b3e7e7612a3227d0951485fdfd101e75070f","projection":{"commands":[{"command":"set","line":2},{"command":"umask","line":3},{"command":"secrets.env","line":5},{"command":"monitor.py","line":6},{"command":"cookies.jar","line":7},{"command":"health.txt","line":8},{"command":"skladchik-cookie-update-monitor.out","line":9},{"command":"TIMER=skladchik-reports-monitor.timer","line":10},{"command":"SERVICE=skladchik-reports-monitor.service","line":11},{"command":"TMP=$(mktemp)","line":13},{"command":"NO_COOKIE_SECRET=$(mktemp)","line":14},{"command":"SECRETS_BACKUP=","line":15},{"command":"JAR_BACKUP=","line":16},{"command":"JAR_EXISTED=0","line":17},{"command":"AUTH_MUTATED=0","line":18},{"command":"FINALIZED=0","line":19},{"command":"null || true)","line":21},{"command":"null || true)","line":22},{"command":"on_err(){","line":24},{"command":"local","line":25},{"command":"trap","line":26},{"command":"printf","line":27},{"command":"exit","line":28},{"command":"}","line":29},{"command":"restore_timer_state(){","line":31},{"command":"systemctl","line":32},{"command":"[","line":33},{"command":"systemctl","line":34},{"command":"else","line":35},{"command":"systemctl","line":36},{"command":"fi","line":37},{"command":"[","line":38},{"command":"systemctl","line":39},{"command":"fi","line":40},{"command":"}","line":41},{"command":"restore_auth_state(){","line":43},{"command":"[","line":44},{"command":"[","line":45},{"command":"install","line":46},{"command":"fi","line":47},{"command":"[","line":48},{"command":"install","line":49},{"command":"else","line":50},{"command":"rm","line":51},{"command":"fi","line":52},{"command":"AUTH_MUTATED=0","line":53},{"command":"fi","line":54},{"command":"}","line":55},{"command":"cleanup(){","line":57},{"command":"local","line":58},{"command":"trap","line":59},{"command":"trap","line":60},{"command":"set","line":61},{"command":"[","line":62},{"command":"restore_auth_state","line":63},{"command":"restore_timer_state","line":64},{"command":"fi","line":65},{"command":"rm","line":66},{"command":"[","line":67},{"command":"[","line":68},{"command":"exit","line":69},{"command":"}","line":70},{"command":"trap","line":72},{"command":"trap","line":73},{"command":"trap","line":74},{"command":"trap","line":75},{"command":"trap","line":76},{"command":"systemctl","line":78},{"command":"WAIT_SECONDS=90","line":80},{"command":"DEADLINE=$((SECONDS","line":81},{"command":"systemctl","line":82},{"command":"((","line":83},{"command":"restore_timer_state","line":84},{"command":"FINALIZED=1","line":85},{"command":"printf","line":86},{"command":"exit","line":87},{"command":"fi","line":88},{"command":"sleep","line":89},{"command":"done","line":90},{"command":"printf","line":92}],"environment_names":["AUTH_MUTATED","FINALIZED","FIRST_RUN_RC","FIRST_RUN_STATUS","HEALTH","JAR_BACKUP","JAR_EXISTED","LINENO","MONITOR","OUTPUT","SECOND_RUN_RC","SECOND_RUN_STATUS","SERVICE","TIMER","TIMER_WAS_ACTIVE","TIMER_WAS_ENABLED","TMP","rc"],"parse":"shell_token_projection","related_targets":["/opt/skladchik-reports-monitor/monitor.py","/var/lib/skladchik-reports-monitor/health.txt"],"signals":{"argv":true,"askpass":false,"environment":true,"read_builtin":false,"read_flags":[],"stdin":false,"tty":false}},"sha256":"10fe854274dca1a053cfd8c0155340bd689bf3f6555c70dbc14b890cbafb93fa","shebang":"#!/usr/bin/env bash"},"schema":1,"scope":{"cookie_files_read":false,"secret_values_emitted":false,"secret_values_read":false,"source_text_emitted":false},"status":"OK","verified_input_interface":{"argv":true,"askpass":false,"environment":true,"modes":["argv","environment"],"stdin":false,"tty":false}},"rollback_restored":null,"rollback_started":false,"root_cause_classification":"VERIFIED_EDGE_REAUTH_NONINTERACTIVE_INTERFACE_CAPTURED","schema":1,"status":"OK","verified_input_modes":["argv","environment"],"wrapper":{"bytes":638,"edge_script_basename":"skladchik-reports-monitor-cookie-update-edge","edge_script_path_sha256":"40ecb6cff3f7e9fa1d070dcd52a5b3e7e7612a3227d0951485fdfd101e75070f","sha256":"ea2d89ce67893a6d89b29610e4d46e207932ecc157173454585f67890f58810c","ssh_safety_options_verified":true}} + +OUTPUT_END +CHAT_OUTPUT_END diff --git a/runtime/latest.json b/runtime/latest.json index ae826db..d6ab46f 100644 --- a/runtime/latest.json +++ b/runtime/latest.json @@ -1,38 +1,38 @@ { "schema_version": 1, "channel": "homelab-runtime", - "command_id": "HOMELAB-CLUSTER-ADMIN-UPDATES-V28-MEMBERS-FIXED-ATOMIC-CHANGE-20260805T150500Z", - "status": "FAIL", - "rc": 76, + "command_id": "HOMELAB-SKLADCHIK-EDGE-REAUTH-TARGET-INPUT-CONTRACT-READ-ONLY-20260805T150200Z", + "status": "OK", + "rc": 0, "host": "pve01", - "mode": "change", - "component": "homelab-cluster-admin-update-visibility", - "started_at_utc": "2026-08-05T15:02:31Z", - "finished_at_utc": "2026-08-05T15:03:43Z", + "mode": "verify", + "component": "skladchik-edge-reauth-target-contract-ro", + "started_at_utc": "2026-08-05T15:04:47Z", + "finished_at_utc": "2026-08-05T15:04:48Z", "reference_register_checked": true, "reference_sha256": "5763f2f8edc75fcf6f3951f8c95896d1cc112ceccb6cf5b64a383f540a4deb8e", "error_register_checked": true, "error_register_sha256": "24934a2c7fa5c26f6e828583c4aefac7f143b40c0171736ed7571e617d55ab83", - "command_sha256": "573ce252e0623a6e6919d3c3e557271dc81ef46934e6e37a6345859104a1fe3d", + "command_sha256": "796fc4a8a5bf7db50078828e9de5df78bf8f77a440ca292c677e0ba948f5b7c5", "duplicate_failed_command_blocked": false, "block_reason": null, "execution_started": true, - "change_declared": true, - "result_contract_valid": false, + "change_declared": false, + "result_contract_valid": true, "result_contract_status": null, - "result_contract_error": "INVALID_CONTRACT:ValueError", - "command_rc": 1, - "changes_made": null, - "rollback_started": null, + "result_contract_error": null, + "command_rc": 0, + "changes_made": false, + "rollback_started": false, "rollback_restored": null, - "mutation_outcome": "UNKNOWN", + "mutation_outcome": "NO_MUTATION", "sanitized": true, "secrets_included": false, "private_addresses_included": false, "raw_evidence_retained_locally": true, - "raw_evidence_sha256": "c4be6d9f95a83e43293c1a666dad91425f699e8b6d99f71a1460d87eac702f74", - "sanitized_output_sha256": "c4be6d9f95a83e43293c1a666dad91425f699e8b6d99f71a1460d87eac702f74", + "raw_evidence_sha256": "90c36f3b2f32ba3f5ed40addf79efd07f3abb485561af9781676cb88dfdd1bf6", + "sanitized_output_sha256": "90c36f3b2f32ba3f5ed40addf79efd07f3abb485561af9781676cb88dfdd1bf6", "output_truncated_in_json": false, "full_sanitized_output_url": "https://git.gram1.ru/.well-known/homelab-runtime/latest.txt", - "output": "HOMELAB_RESULT_CONTRACT={\"changes_made\":false,\"command_id\":\"HOMELAB-CLUSTER-ADMIN-UPDATES-V28-MEMBERS-FIXED-ATOMIC-CHANGE-20260805T150500Z\",\"command_rc\":1,\"control_plane_error\":null,\"mutation_outcome\":\"ROLLED_BACK\",\"rc\":1,\"report_bytes\":453,\"report_sha256\":\"dafc1dbaed03e09fcabaf629bdf2553674513c3a5705e2bc073398a5ba7d31fd\",\"rollback_restored\":true,\"rollback_started\":true,\"status\":\"FAIL\",\"version\":1}\n{\"changes_made\":false,\"command_id\":\"HOMELAB-CLUSTER-ADMIN-UPDATES-V28-MEMBERS-FIXED-ATOMIC-CHANGE-20260805T150500Z\",\"error\":\"remote python failed: Traceback (most recent call last):\\n File \\\"\\\", line 6, in \\nRuntimeError: verify sha /var/www/homelab-cluster-admin/index.html\\n\",\"error_type\":\"RuntimeError\",\"mutation_outcome\":\"ROLLED_BACK\",\"rollback_errors\":[],\"rollback_restored\":true,\"rollback_started\":true,\"schema\":28,\"status\":\"FAIL\"}\n" + "output": "HOMELAB_RESULT_CONTRACT={\"changes_made\":false,\"command_id\":\"HOMELAB-SKLADCHIK-EDGE-REAUTH-TARGET-INPUT-CONTRACT-READ-ONLY-20260805T150200Z\",\"command_rc\":0,\"mutation_outcome\":\"NO_MUTATION\",\"output_truncated_in_json\":false,\"rc\":0,\"rollback_restored\":null,\"rollback_started\":false,\"status\":\"OK\",\"version\":1}\n{\"analysis_ready\":true,\"changes_made\":false,\"command_id\":\"HOMELAB-SKLADCHIK-EDGE-REAUTH-TARGET-INPUT-CONTRACT-READ-ONLY-20260805T150200Z\",\"command_rc\":0,\"detector_scope\":{\"cookie_files_read\":false,\"private_addresses_emitted\":false,\"secret_values_emitted\":false,\"secret_values_read\":false,\"source_text_emitted\":false},\"mutation_outcome\":\"NO_MUTATION\",\"next_action\":\"BUILD_TRANSACTION_AGAINST_EXACT_VERIFIED_EDGE_INTERFACE\",\"output_truncated_in_json\":false,\"rc\":0,\"read_only\":true,\"remote_target\":{\"rc\":0,\"related\":[{\"basename\":\"monitor.py\",\"bytes\":25579,\"language\":\"python\",\"mode\":\"0o700\",\"path_sha256\":\"8384ce3a78c366c337bd370cf87efb3d33d848e385c34b188000f87bfac4e7c0\",\"projection\":{\"arg_options\":[],\"environment_names\":[],\"parse\":\"python_ast_ok\",\"related_targets\":[],\"relevant_calls\":[{\"call\":\"path.read_text\",\"line\":74},{\"call\":\"cfg.read\",\"line\":103},{\"call\":\"read_env\",\"line\":104},{\"call\":\"COOKIE_JAR_PATH.read_text\",\"line\":193},{\"call\":\"subprocess.run\",\"line\":277},{\"call\":\"read_bytes\",\"line\":286},{\"call\":\"smtp_ready\",\"line\":433},{\"call\":\"smtp_ready\",\"line\":606},{\"call\":\"HEALTH_PATH.read_text\",\"line\":629},{\"call\":\"argparse.ArgumentParser\",\"line\":636}],\"signals\":{\"argv\":false,\"askpass\":false,\"builtin_input\":false,\"environment\":false,\"getpass\":false,\"os_read_fd0\":false,\"stdin\":false,\"tty\":false}},\"sha256\":\"9fe19e0f56d49cb6db12a56d84c19e5f75ef7ce8ea6feaac303bc24d22953b1e\",\"shebang\":\"#!/usr/bin/env python3\"}],\"root\":{\"basename\":\"skladchik-reports-monitor-cookie-update-edge\",\"bytes\":5247,\"language\":\"shell_or_other\",\"mode\":\"0o755\",\"path_sha256\":\"40ecb6cff3f7e9fa1d070dcd52a5b3e7e7612a3227d0951485fdfd101e75070f\",\"projection\":{\"commands\":[{\"command\":\"set\",\"line\":2},{\"command\":\"umask\",\"line\":3},{\"command\":\"secrets.env\",\"line\":5},{\"command\":\"monitor.py\",\"line\":6},{\"command\":\"cookies.jar\",\"line\":7},{\"command\":\"health.txt\",\"line\":8},{\"command\":\"skladchik-cookie-update-monitor.out\",\"line\":9},{\"command\":\"TIMER=skladchik-reports-monitor.timer\",\"line\":10},{\"command\":\"SERVICE=skladchik-reports-monitor.service\",\"line\":11},{\"command\":\"TMP=$(mktemp)\",\"line\":13},{\"command\":\"NO_COOKIE_SECRET=$(mktemp)\",\"line\":14},{\"command\":\"SECRETS_BACKUP=\",\"line\":15},{\"command\":\"JAR_BACKUP=\",\"line\":16},{\"command\":\"JAR_EXISTED=0\",\"line\":17},{\"command\":\"AUTH_MUTATED=0\",\"line\":18},{\"command\":\"FINALIZED=0\",\"line\":19},{\"command\":\"null || true)\",\"line\":21},{\"command\":\"null || true)\",\"line\":22},{\"command\":\"on_err(){\",\"line\":24},{\"command\":\"local\",\"line\":25},{\"command\":\"trap\",\"line\":26},{\"command\":\"printf\",\"line\":27},{\"command\":\"exit\",\"line\":28},{\"command\":\"}\",\"line\":29},{\"command\":\"restore_timer_state(){\",\"line\":31},{\"command\":\"systemctl\",\"line\":32},{\"command\":\"[\",\"line\":33},{\"command\":\"systemctl\",\"line\":34},{\"command\":\"else\",\"line\":35},{\"command\":\"systemctl\",\"line\":36},{\"command\":\"fi\",\"line\":37},{\"command\":\"[\",\"line\":38},{\"command\":\"systemctl\",\"line\":39},{\"command\":\"fi\",\"line\":40},{\"command\":\"}\",\"line\":41},{\"command\":\"restore_auth_state(){\",\"line\":43},{\"command\":\"[\",\"line\":44},{\"command\":\"[\",\"line\":45},{\"command\":\"install\",\"line\":46},{\"command\":\"fi\",\"line\":47},{\"command\":\"[\",\"line\":48},{\"command\":\"install\",\"line\":49},{\"command\":\"else\",\"line\":50},{\"command\":\"rm\",\"line\":51},{\"command\":\"fi\",\"line\":52},{\"command\":\"AUTH_MUTATED=0\",\"line\":53},{\"command\":\"fi\",\"line\":54},{\"command\":\"}\",\"line\":55},{\"command\":\"cleanup(){\",\"line\":57},{\"command\":\"local\",\"line\":58},{\"command\":\"trap\",\"line\":59},{\"command\":\"trap\",\"line\":60},{\"command\":\"set\",\"line\":61},{\"command\":\"[\",\"line\":62},{\"command\":\"restore_auth_state\",\"line\":63},{\"command\":\"restore_timer_state\",\"line\":64},{\"command\":\"fi\",\"line\":65},{\"command\":\"rm\",\"line\":66},{\"command\":\"[\",\"line\":67},{\"command\":\"[\",\"line\":68},{\"command\":\"exit\",\"line\":69},{\"command\":\"}\",\"line\":70},{\"command\":\"trap\",\"line\":72},{\"command\":\"trap\",\"line\":73},{\"command\":\"trap\",\"line\":74},{\"command\":\"trap\",\"line\":75},{\"command\":\"trap\",\"line\":76},{\"command\":\"systemctl\",\"line\":78},{\"command\":\"WAIT_SECONDS=90\",\"line\":80},{\"command\":\"DEADLINE=$((SECONDS\",\"line\":81},{\"command\":\"systemctl\",\"line\":82},{\"command\":\"((\",\"line\":83},{\"command\":\"restore_timer_state\",\"line\":84},{\"command\":\"FINALIZED=1\",\"line\":85},{\"command\":\"printf\",\"line\":86},{\"command\":\"exit\",\"line\":87},{\"command\":\"fi\",\"line\":88},{\"command\":\"sleep\",\"line\":89},{\"command\":\"done\",\"line\":90},{\"command\":\"printf\",\"line\":92}],\"environment_names\":[\"AUTH_MUTATED\",\"FINALIZED\",\"FIRST_RUN_RC\",\"FIRST_RUN_STATUS\",\"HEALTH\",\"JAR_BACKUP\",\"JAR_EXISTED\",\"LINENO\",\"MONITOR\",\"OUTPUT\",\"SECOND_RUN_RC\",\"SECOND_RUN_STATUS\",\"SERVICE\",\"TIMER\",\"TIMER_WAS_ACTIVE\",\"TIMER_WAS_ENABLED\",\"TMP\",\"rc\"],\"parse\":\"shell_token_projection\",\"related_targets\":[\"/opt/skladchik-reports-monitor/monitor.py\",\"/var/lib/skladchik-reports-monitor/health.txt\"],\"signals\":{\"argv\":true,\"askpass\":false,\"environment\":true,\"read_builtin\":false,\"read_flags\":[],\"stdin\":false,\"tty\":false}},\"sha256\":\"10fe854274dca1a053cfd8c0155340bd689bf3f6555c70dbc14b890cbafb93fa\",\"shebang\":\"#!/usr/bin/env bash\"},\"schema\":1,\"scope\":{\"cookie_files_read\":false,\"secret_values_emitted\":false,\"secret_values_read\":false,\"source_text_emitted\":false},\"status\":\"OK\",\"verified_input_interface\":{\"argv\":true,\"askpass\":false,\"environment\":true,\"modes\":[\"argv\",\"environment\"],\"stdin\":false,\"tty\":false}},\"rollback_restored\":null,\"rollback_started\":false,\"root_cause_classification\":\"VERIFIED_EDGE_REAUTH_NONINTERACTIVE_INTERFACE_CAPTURED\",\"schema\":1,\"status\":\"OK\",\"verified_input_modes\":[\"argv\",\"environment\"],\"wrapper\":{\"bytes\":638,\"edge_script_basename\":\"skladchik-reports-monitor-cookie-update-edge\",\"edge_script_path_sha256\":\"40ecb6cff3f7e9fa1d070dcd52a5b3e7e7612a3227d0951485fdfd101e75070f\",\"sha256\":\"ea2d89ce67893a6d89b29610e4d46e207932ecc157173454585f67890f58810c\",\"ssh_safety_options_verified\":true}}\n" } diff --git a/runtime/latest.txt b/runtime/latest.txt index fae208f..045afec 100644 --- a/runtime/latest.txt +++ b/runtime/latest.txt @@ -1,34 +1,34 @@ CHAT_OUTPUT_BEGIN -COMMAND_ID=HOMELAB-CLUSTER-ADMIN-UPDATES-V28-MEMBERS-FIXED-ATOMIC-CHANGE-20260805T150500Z -STATUS=FAIL -RC=76 +COMMAND_ID=HOMELAB-SKLADCHIK-EDGE-REAUTH-TARGET-INPUT-CONTRACT-READ-ONLY-20260805T150200Z +STATUS=OK +RC=0 HOST=pve01 -MODE=change -COMPONENT=homelab-cluster-admin-update-visibility +MODE=verify +COMPONENT=skladchik-edge-reauth-target-contract-ro REFERENCE_REGISTER_CHECK=OK REFERENCE_SHA256=5763f2f8edc75fcf6f3951f8c95896d1cc112ceccb6cf5b64a383f540a4deb8e ERROR_REGISTER_CHECK=OK ERROR_REGISTER_SHA256=24934a2c7fa5c26f6e828583c4aefac7f143b40c0171736ed7571e617d55ab83 -COMMAND_SHA256=573ce252e0623a6e6919d3c3e557271dc81ef46934e6e37a6345859104a1fe3d +COMMAND_SHA256=796fc4a8a5bf7db50078828e9de5df78bf8f77a440ca292c677e0ba948f5b7c5 DUPLICATE_FAILED_COMMAND_BLOCKED=false EXECUTION_STARTED=true -CHANGE_DECLARED=true -RESULT_CONTRACT_VALID=false -RESULT_CONTRACT_STATUS=UNKNOWN -RESULT_CONTRACT_ERROR=INVALID_CONTRACT:ValueError -COMMAND_RC=1 -CHANGES_MADE=unknown -ROLLBACK_STARTED=unknown +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=UNKNOWN +MUTATION_OUTCOME=NO_MUTATION SANITIZED=yes SECRETS_INCLUDED=no PRIVATE_ADDRESSES_INCLUDED=no -RAW_EVIDENCE_SHA256=c4be6d9f95a83e43293c1a666dad91425f699e8b6d99f71a1460d87eac702f74 -SANITIZED_OUTPUT_SHA256=c4be6d9f95a83e43293c1a666dad91425f699e8b6d99f71a1460d87eac702f74 +RAW_EVIDENCE_SHA256=90c36f3b2f32ba3f5ed40addf79efd07f3abb485561af9781676cb88dfdd1bf6 +SANITIZED_OUTPUT_SHA256=90c36f3b2f32ba3f5ed40addf79efd07f3abb485561af9781676cb88dfdd1bf6 OUTPUT_BEGIN -HOMELAB_RESULT_CONTRACT={"changes_made":false,"command_id":"HOMELAB-CLUSTER-ADMIN-UPDATES-V28-MEMBERS-FIXED-ATOMIC-CHANGE-20260805T150500Z","command_rc":1,"control_plane_error":null,"mutation_outcome":"ROLLED_BACK","rc":1,"report_bytes":453,"report_sha256":"dafc1dbaed03e09fcabaf629bdf2553674513c3a5705e2bc073398a5ba7d31fd","rollback_restored":true,"rollback_started":true,"status":"FAIL","version":1} -{"changes_made":false,"command_id":"HOMELAB-CLUSTER-ADMIN-UPDATES-V28-MEMBERS-FIXED-ATOMIC-CHANGE-20260805T150500Z","error":"remote python failed: Traceback (most recent call last):\n File \"\", line 6, in \nRuntimeError: verify sha /var/www/homelab-cluster-admin/index.html\n","error_type":"RuntimeError","mutation_outcome":"ROLLED_BACK","rollback_errors":[],"rollback_restored":true,"rollback_started":true,"schema":28,"status":"FAIL"} +HOMELAB_RESULT_CONTRACT={"changes_made":false,"command_id":"HOMELAB-SKLADCHIK-EDGE-REAUTH-TARGET-INPUT-CONTRACT-READ-ONLY-20260805T150200Z","command_rc":0,"mutation_outcome":"NO_MUTATION","output_truncated_in_json":false,"rc":0,"rollback_restored":null,"rollback_started":false,"status":"OK","version":1} +{"analysis_ready":true,"changes_made":false,"command_id":"HOMELAB-SKLADCHIK-EDGE-REAUTH-TARGET-INPUT-CONTRACT-READ-ONLY-20260805T150200Z","command_rc":0,"detector_scope":{"cookie_files_read":false,"private_addresses_emitted":false,"secret_values_emitted":false,"secret_values_read":false,"source_text_emitted":false},"mutation_outcome":"NO_MUTATION","next_action":"BUILD_TRANSACTION_AGAINST_EXACT_VERIFIED_EDGE_INTERFACE","output_truncated_in_json":false,"rc":0,"read_only":true,"remote_target":{"rc":0,"related":[{"basename":"monitor.py","bytes":25579,"language":"python","mode":"0o700","path_sha256":"8384ce3a78c366c337bd370cf87efb3d33d848e385c34b188000f87bfac4e7c0","projection":{"arg_options":[],"environment_names":[],"parse":"python_ast_ok","related_targets":[],"relevant_calls":[{"call":"path.read_text","line":74},{"call":"cfg.read","line":103},{"call":"read_env","line":104},{"call":"COOKIE_JAR_PATH.read_text","line":193},{"call":"subprocess.run","line":277},{"call":"read_bytes","line":286},{"call":"smtp_ready","line":433},{"call":"smtp_ready","line":606},{"call":"HEALTH_PATH.read_text","line":629},{"call":"argparse.ArgumentParser","line":636}],"signals":{"argv":false,"askpass":false,"builtin_input":false,"environment":false,"getpass":false,"os_read_fd0":false,"stdin":false,"tty":false}},"sha256":"9fe19e0f56d49cb6db12a56d84c19e5f75ef7ce8ea6feaac303bc24d22953b1e","shebang":"#!/usr/bin/env python3"}],"root":{"basename":"skladchik-reports-monitor-cookie-update-edge","bytes":5247,"language":"shell_or_other","mode":"0o755","path_sha256":"40ecb6cff3f7e9fa1d070dcd52a5b3e7e7612a3227d0951485fdfd101e75070f","projection":{"commands":[{"command":"set","line":2},{"command":"umask","line":3},{"command":"secrets.env","line":5},{"command":"monitor.py","line":6},{"command":"cookies.jar","line":7},{"command":"health.txt","line":8},{"command":"skladchik-cookie-update-monitor.out","line":9},{"command":"TIMER=skladchik-reports-monitor.timer","line":10},{"command":"SERVICE=skladchik-reports-monitor.service","line":11},{"command":"TMP=$(mktemp)","line":13},{"command":"NO_COOKIE_SECRET=$(mktemp)","line":14},{"command":"SECRETS_BACKUP=","line":15},{"command":"JAR_BACKUP=","line":16},{"command":"JAR_EXISTED=0","line":17},{"command":"AUTH_MUTATED=0","line":18},{"command":"FINALIZED=0","line":19},{"command":"null || true)","line":21},{"command":"null || true)","line":22},{"command":"on_err(){","line":24},{"command":"local","line":25},{"command":"trap","line":26},{"command":"printf","line":27},{"command":"exit","line":28},{"command":"}","line":29},{"command":"restore_timer_state(){","line":31},{"command":"systemctl","line":32},{"command":"[","line":33},{"command":"systemctl","line":34},{"command":"else","line":35},{"command":"systemctl","line":36},{"command":"fi","line":37},{"command":"[","line":38},{"command":"systemctl","line":39},{"command":"fi","line":40},{"command":"}","line":41},{"command":"restore_auth_state(){","line":43},{"command":"[","line":44},{"command":"[","line":45},{"command":"install","line":46},{"command":"fi","line":47},{"command":"[","line":48},{"command":"install","line":49},{"command":"else","line":50},{"command":"rm","line":51},{"command":"fi","line":52},{"command":"AUTH_MUTATED=0","line":53},{"command":"fi","line":54},{"command":"}","line":55},{"command":"cleanup(){","line":57},{"command":"local","line":58},{"command":"trap","line":59},{"command":"trap","line":60},{"command":"set","line":61},{"command":"[","line":62},{"command":"restore_auth_state","line":63},{"command":"restore_timer_state","line":64},{"command":"fi","line":65},{"command":"rm","line":66},{"command":"[","line":67},{"command":"[","line":68},{"command":"exit","line":69},{"command":"}","line":70},{"command":"trap","line":72},{"command":"trap","line":73},{"command":"trap","line":74},{"command":"trap","line":75},{"command":"trap","line":76},{"command":"systemctl","line":78},{"command":"WAIT_SECONDS=90","line":80},{"command":"DEADLINE=$((SECONDS","line":81},{"command":"systemctl","line":82},{"command":"((","line":83},{"command":"restore_timer_state","line":84},{"command":"FINALIZED=1","line":85},{"command":"printf","line":86},{"command":"exit","line":87},{"command":"fi","line":88},{"command":"sleep","line":89},{"command":"done","line":90},{"command":"printf","line":92}],"environment_names":["AUTH_MUTATED","FINALIZED","FIRST_RUN_RC","FIRST_RUN_STATUS","HEALTH","JAR_BACKUP","JAR_EXISTED","LINENO","MONITOR","OUTPUT","SECOND_RUN_RC","SECOND_RUN_STATUS","SERVICE","TIMER","TIMER_WAS_ACTIVE","TIMER_WAS_ENABLED","TMP","rc"],"parse":"shell_token_projection","related_targets":["/opt/skladchik-reports-monitor/monitor.py","/var/lib/skladchik-reports-monitor/health.txt"],"signals":{"argv":true,"askpass":false,"environment":true,"read_builtin":false,"read_flags":[],"stdin":false,"tty":false}},"sha256":"10fe854274dca1a053cfd8c0155340bd689bf3f6555c70dbc14b890cbafb93fa","shebang":"#!/usr/bin/env bash"},"schema":1,"scope":{"cookie_files_read":false,"secret_values_emitted":false,"secret_values_read":false,"source_text_emitted":false},"status":"OK","verified_input_interface":{"argv":true,"askpass":false,"environment":true,"modes":["argv","environment"],"stdin":false,"tty":false}},"rollback_restored":null,"rollback_started":false,"root_cause_classification":"VERIFIED_EDGE_REAUTH_NONINTERACTIVE_INTERFACE_CAPTURED","schema":1,"status":"OK","verified_input_modes":["argv","environment"],"wrapper":{"bytes":638,"edge_script_basename":"skladchik-reports-monitor-cookie-update-edge","edge_script_path_sha256":"40ecb6cff3f7e9fa1d070dcd52a5b3e7e7612a3227d0951485fdfd101e75070f","sha256":"ea2d89ce67893a6d89b29610e4d46e207932ecc157173454585f67890f58810c","ssh_safety_options_verified":true}} OUTPUT_END CHAT_OUTPUT_END