{ "schema_version": 1, "channel": "homelab-runtime", "command_id": "SUPPORT-261004-SKLADCHIK-ALERT-GENERATOR-LOGIC-RCA-99547R1", "status": "OK", "rc": 0, "host": "pve01", "mode": "read-only", "component": "skladchik-alert-generator-logic-rca", "started_at_utc": "2026-10-04T03:49:11Z", "finished_at_utc": "2026-10-04T03:51:47Z", "reference_register_checked": true, "reference_sha256": "5a3d8e5154c41cb582a4e0aca68090be1f0138918bf82131a948df326f9d8d66", "error_register_checked": true, "error_register_sha256": "3b09a553ec0f527ed3afeed4753f52a74ee3036045bbfb3c685e9f8af4ba7ba0", "command_sha256": "6b5bc1f1e20f19bda012f816128a3feac775d3184e0685f2d63b8f31ad961d22", "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": "dfbfa56355cfc15f7346a7b803fdc4056ac4c59fe3094151c504b3931e7a4803", "sanitized_output_sha256": "dfbfa56355cfc15f7346a7b803fdc4056ac4c59fe3094151c504b3931e7a4803", "output_truncated_in_json": false, "full_sanitized_output_url": "https://git.gram1.ru/.well-known/homelab-runtime/latest.txt", "output": "SKLADCHIK_ALERT_GENERATOR_LOGIC_RCA=V1\nHOST_PVE01=true\nSOURCE_PRESENT=true\nSOURCE_SHA256_PRESENT=true\nSOURCE_SIZE_BYTES=16080\nSOURCE_MTIME_EPOCH=1790574284\nALERT_PHRASE_CANDIDATE_COUNT=4\nCANDIDATE_1_PATH=/root/homelab-ops-cr-2026-0007/changes/CR-2026-0007/runtime/skladchik-reports-monitor-health-alert.py\nCANDIDATE_1_SHA_MATCH_SOURCE=true\nCANDIDATE_2_PATH=/root/skladchik_reports_monitor_cookie_expiry_watch_package/edge/files/opt/skladchik-reports-monitor/health_alert.py\nCANDIDATE_2_SHA_MATCH_SOURCE=false\nCANDIDATE_3_PATH=/root/skladchik_reports_monitor_russian_patch_v4/files/opt/skladchik-reports-monitor/health_alert.py\nCANDIDATE_3_SHA_MATCH_SOURCE=false\nCANDIDATE_4_PATH=/var/lib/homelab-change-rollback/SUPPORT-260928-NETBIRD-SKLADCHIK-WT0-HEALTH-CONTRACT-FIX-PREFLIGHT-73343R1/health_alert.py.before\nCANDIDATE_4_SHA_MATCH_SOURCE=false\nRELATED_UNIT_COUNT=4\nRELATED_UNIT_1_NAME=skladchik-reports-monitor-monthly-selftest-watch.service\nRELATED_UNIT_1_ACTIVE=inactive\nRELATED_UNIT_1_ENABLED=static\nRELATED_UNIT_1_SCRIPT_PRESENT=false\nRELATED_UNIT_1_SCRIPT_PATH=NONE\nRELATED_UNIT_1_SCRIPT_SHA_MATCH_SOURCE=false\nRELATED_UNIT_2_NAME=skladchik-reports-monitor-monthly-selftest-watch.timer\nRELATED_UNIT_2_ACTIVE=inactive\nRELATED_UNIT_2_ENABLED=disabled\nRELATED_UNIT_2_SCRIPT_PRESENT=false\nRELATED_UNIT_2_SCRIPT_PATH=NONE\nRELATED_UNIT_2_SCRIPT_SHA_MATCH_SOURCE=false\nRELATED_UNIT_3_NAME=skladchik-reports-monitor-supervisor.service\nRELATED_UNIT_3_ACTIVE=inactive\nRELATED_UNIT_3_ENABLED=static\nRELATED_UNIT_3_SCRIPT_PRESENT=false\nRELATED_UNIT_3_SCRIPT_PATH=NONE\nRELATED_UNIT_3_SCRIPT_SHA_MATCH_SOURCE=false\nRELATED_UNIT_4_NAME=skladchik-reports-monitor-supervisor.timer\nRELATED_UNIT_4_ACTIVE=active\nRELATED_UNIT_4_ENABLED=enabled\nRELATED_UNIT_4_SCRIPT_PRESENT=false\nRELATED_UNIT_4_SCRIPT_PATH=NONE\nRELATED_UNIT_4_SCRIPT_SHA_MATCH_SOURCE=false\nEXACT_SOURCE_SYSTEMD_REF_COUNT=0\nSOURCE_BASENAME_REFERENCE_COUNT=0\nAST_PARSE_OK=true\nOLD_PVE_LITERAL_COUNT=1\nWT0_LITERAL_COUNT=5\nMISSING_LITERAL_COUNT=26\nERROR_LITERAL_COUNT=5\nIP_ROUTE_GET_TEXT_COUNT=0\nSYSTEMCTL_TEXT_COUNT=4\nSMTP_TEXT_COUNT=0\nSUBPROCESS_CALL_COUNT=3\nJSON_LOAD_COUNT=1\nOLD_PVE_LITERAL_COUNT=1\nOLD_PVE_LITERAL_LINES=102\nWT0_LITERAL_COUNT=3\nWT0_LITERAL_LINES=103,110,251\nMISSING_LITERAL_COUNT=22\nMISSING_LITERAL_LINES=83,164,175,177,221,262,263,264,265,266,267,268,269,270,271,272,292,293,330,331\nERROR_LITERAL_COUNT=4\nERROR_LITERAL_LINES=98,143,184,363\nROUTE_CHECK_COUNT=3\nROUTE_CHECK_LINES=110,191,251\nMAIN_TIMER_COUNT=2\nMAIN_TIMER_LINES=151,152\nWATCHDOG_COUNT=6\nWATCHDOG_LINES=153,201,249,327,328,338\nHEARTBEAT_COUNT=10\nHEARTBEAT_LINES=154,202,250,283,289,290,291,349,350,355\nAST_TIMER_LITERAL_COUNT=3\nAST_TIMER_1=skladchik-reports-monitor-heartbeat.timer\nAST_TIMER_2=skladchik-reports-monitor-watchdog.timer\nAST_TIMER_3=skladchik-reports-monitor.timer\nAST_SERVICE_LITERAL_COUNT=0\nAST_SAFE_PATH_LITERAL_COUNT=3\nAST_SAFE_PATH_1=/opt/skladchik-reports-monitor/monitor.py\nAST_SAFE_PATH_2=/var/lib/skladchik-reports-monitor\nAST_SAFE_PATH_3=/var/log/skladchik-reports-monitor/health-alert.log\nAST_FUNCTION_COUNT=22\nAST_FUNCTIONS=build_status,do_check,do_heartbeat,do_status,iso_age_seconds,load_monitor_module,load_state,log,main,parse_kv_file,problem_to_ru,route_ok,run_cmd,save_state,send_mail,status_ru,status_to_body,systemd_value,ts,utc_now,write_alert_health,yes_no_ru\nAST_OPERATIONAL_VARIABLE_COUNT=11\nAST_OPERATIONAL_VARIABLES=ALERT_HEALTH_PATH,ALERT_REPEAT_SECONDS,MONITOR_PATH,STATE_PATH,expiry_status,last_alert_ts,last_key,mail_sent,state,status,timer_active\nCURRENT_OLD_PVE_ROUTE_IFACE=vmbr0\nCURRENT_OLD_PVE_ROUTE_WT0=false\nPVE01_WT0_PRESENT=true\nSUPERVISOR_ACTIVE=inactive\nSUPERVISOR_ENABLED=static\nSUPERVISOR_JOURNAL_LINE_COUNT=300\nSUPERVISOR_JOURNAL_ALERT_WORD_COUNT=28\nSUPERVISOR_JOURNAL_ERROR_WORD_COUNT=0\nDECISION=RCA_ALERT_GENERATOR_LOGIC_READ\nNEXT_GATE=DESIGN_GENERATOR_REPAIR\nTASK_RESULT=SKLADCHIK_ALERT_GENERATOR_LOGIC_RCA\nCHANGES_MADE=false\nROLLBACK_STARTED=false\nROLLBACK_RESTORED=null\nMUTATION_OUTCOME=NO_MUTATION\nHOMELAB_RESULT_CONTRACT={\"version\":1,\"command_id\":\"SUPPORT-261004-SKLADCHIK-ALERT-GENERATOR-LOGIC-RCA-99547R1\",\"status\":\"OK\",\"changes_made\":false,\"rollback_started\":false,\"rollback_restored\":null}\n" }