{
  "schema_version": 1,
  "channel": "homelab-runtime",
  "command_id": "HOMELAB-SKLADCHIK-COOKIE-SAFE-CONTRACT-AUDIT-384",
  "status": "OK",
  "rc": 0,
  "host": "pve01",
  "mode": "read-only",
  "component": "cluster-audit",
  "started_at_utc": "2026-07-23T17:10:28Z",
  "finished_at_utc": "2026-07-23T17:10:28Z",
  "reference_register_checked": true,
  "reference_sha256": "5763f2f8edc75fcf6f3951f8c95896d1cc112ceccb6cf5b64a383f540a4deb8e",
  "error_register_checked": true,
  "error_register_sha256": "08b3a769b8e38eaa1acec915352fb328180d70caa7ff6cd9d1ec0da426262752",
  "command_sha256": "a7320ed2ae1becc8871f7fe2d84c11a3fa8380eab4f383fa906a10bbb9049da7",
  "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": "119a7528288c446ea5d3ce64bb0e3a3132688450cc725ca8e1bcdb26dce0e4ce",
  "sanitized_output_sha256": "119a7528288c446ea5d3ce64bb0e3a3132688450cc725ca8e1bcdb26dce0e4ce",
  "output_truncated_in_json": false,
  "full_sanitized_output_url": "https://git.gram1.ru/.well-known/homelab-runtime/latest.txt",
  "output": "DETAIL=READER_TRANSPORT_COMPONENTS=PASS\nDETAIL=PENDING_COOKIE_META=0:0|600|752|regular file\nDETAIL=PENDING_COOKIE_SHA256=3c260f0622999b94e1c3b45d5042532fe001b8118dff0d326636b2ad8609d8c4\nDETAIL=PENDING_COOKIE_CAPTURE_FORMAT=RAW_COOKIE_VALUE\nDETAIL=PENDING_COOKIE_PAIR_COUNT=5\nDETAIL=PENDING_COOKIE_DUPLICATE_NAME_COUNT=0\nDETAIL=PENDING_COOKIE_UTF8_BOM=NO\nDETAIL=PENDING_COOKIE_CRLF=NO\nDETAIL=PENDING_COOKIE_TRAILING_NEWLINE=NO\nDETAIL=PENDING_COOKIE_SECRET_OUTPUT=NONE\nDETAIL=SERVICE_LOADSTATE=loaded\nDETAIL=SERVICE_ACTIVESTATE=failed\nDETAIL=SERVICE_SUBSTATE=failed\nDETAIL=SERVICE_RESULT=exit-code\nDETAIL=SERVICE_EXECMAINSTATUS=1\nDETAIL=SERVICE_FRAGMENTPATH=/etc/systemd/system/skladchik-reports-monitor-supervisor.service\nDETAIL=SERVICE_USER=\nDETAIL=SERVICE_GROUP=\nDETAIL=SERVICE_WORKINGDIRECTORY=\nDETAIL=SERVICE_RESTART=no\nDETAIL=SERVICE_RESTARTUSEC=100ms\nDETAIL=RUNTIME_SOURCE=/usr/local/sbin/skladchik-reports-monitor-status|ROLE=STATUS_SCRIPT|META=0:0|755|3427|regular file|SHA256=f902a61109efbac5918360f2235c2523bd10704ac484a4e8591e8a1c490faf5a\nDETAIL=SOURCE_LINE=STATUS_SCRIPT|82|echo \"SHELL_SESSION_PRESERVED=yes\"\nDETAIL=RUNTIME_SOURCE=/usr/local/sbin/skladchik-reports-monitor-supervisor|ROLE=SUPERVISOR|META=0:0|755|20463|regular file|SHA256=35c68ae0929ff3795be2bde40de334fc8e26413a3d8a620a137be90d1f2c164e\nDETAIL=SOURCE_LINE=SUPERVISOR|22|COOKIE_EXPIRY_WARN_SECONDS = int(os.environ.get(\"SKLADCHIK_COOKIE_EXPIRY_WARN_SECONDS\", \"604800\"))\nDETAIL=SOURCE_LINE=SUPERVISOR|127|test -s /var/lib/skladchik-reports-monitor/cookies.jar && echo cookies_jar=yes || echo cookies_jar=no\nDETAIL=SOURCE_LINE=SUPERVISOR|128|[ -s /var/lib/skladchik-reports-monitor/cookies.jar ] && echo cookies_jar_bytes=$(stat -c %s /var/lib/skladchik-reports-monitor/cookies.jar 2>/dev/null) || echo cookies_jar_bytes=0\nDETAIL=SOURCE_LINE=SUPERVISOR|153|    facts[\"session_keepalive\"] = mon.get(\"session_keepalive\", \"\")\nDETAIL=SOURCE_LINE=SUPERVISOR|154|    facts[\"cookie_jar\"] = mon.get(\"cookie_jar\", \"\")\nDETAIL=SOURCE_LINE=SUPERVISOR|155|    facts[\"cookie_jar_bytes\"] = mon.get(\"cookie_jar_bytes\", \"\")\nDETAIL=SOURCE_LINE=SUPERVISOR|156|    facts[\"cookie_expiry_status\"] = mon.get(\"cookie_expiry_status\", \"\")\nDETAIL=SOURCE_LINE=SUPERVISOR|157|    facts[\"cookie_expiry_utc\"] = mon.get(\"cookie_expiry_utc\", \"\")\nDETAIL=SOURCE_LINE=SUPERVISOR|158|    facts[\"cookie_expires_in_seconds\"] = mon.get(\"cookie_expires_in_seconds\", \"\")\nDETAIL=SOURCE_LINE=SUPERVISOR|159|    facts[\"cookie_expires_in_days\"] = mon.get(\"cookie_expires_in_days\", \"\")\nDETAIL=SOURCE_LINE=SUPERVISOR|160|    facts[\"cookie_persistent_count\"] = mon.get(\"cookie_persistent_count\", \"\")\nDETAIL=SOURCE_LINE=SUPERVISOR|168|    if mon.get(\"session_keepalive\") != \"persistent_cookie_jar\":\nDETAIL=SOURCE_LINE=SUPERVISOR|169|        problems.append(\"session_keepalive_not_persistent\")\nDETAIL=SOURCE_LINE=SUPERVISOR|170|    if mon.get(\"cookie_jar\") not in (\"yes\", \"empty\"):\nDETAIL=SOURCE_LINE=SUPERVISOR|171|        problems.append(\"monitor_cookie_jar_bad\")\nDETAIL=SOURCE_LINE=SUPERVISOR|172|    expiry_status = mon.get(\"cookie_expiry_status\", \"\")\nDETAIL=SOURCE_LINE=SUPERVISOR|174|        expires_in = int(mon.get(\"cookie_expires_in_seconds\", \"\"))\nDETAIL=SOURCE_LINE=SUPERVISOR|177|    if expiry_status in (\"\", \"NO_COOKIE_JAR\", \"NO_PERSISTENT_COOKIE\", \"ERROR\"):\nDETAIL=SOURCE_LINE=SUPERVISOR|178|        problems.append(\"cookie_expiry_missing\")\nDETAIL=SOURCE_LINE=SUPERVISOR|180|        problems.append(\"cookie_expiry_expired\")\nDETAIL=SOURCE_LINE=SUPERVISOR|181|    elif expiry_status == \"WARN\" or (expires_in is not None and expires_in < COOKIE_EXPIRY_WARN_SECONDS):\nDETAIL=SOURCE_LINE=SUPERVISOR|182|        problems.append(\"cookie_expiry_warn\")\nDETAIL=SOURCE_LINE=SUPERVISOR|202|    for k in [\"monitor_py\", \"config_ini\", \"secrets_env\", \"cookies_jar\", \"operational_digest_py\", \"event_selftest_runner_py\", \"event_selftest_core\", \"weekly_summary_health\", \"age_alert_health\", \"event_selftest_health\", \"py_compile\"]:\nDETAIL=SOURCE_LINE=SUPERVISOR|206|    facts[\"cookies_jar_bytes_file\"] = files.get(\"cookies_jar_bytes\", \"0\")\nDETAIL=COOKIE_TARGET_CANDIDATE=/var/lib/skladchik-reports-monitor/cookies.jar|STATE=ABSENT\nDETAIL=JOURNAL_MARKER_AUTH_COUNT=20\nDETAIL=JOURNAL_MARKER_COOKIE_COUNT=0\nDETAIL=JOURNAL_MARKER_LOGIN_COUNT=0\nDETAIL=JOURNAL_MARKER_HTTP_401_COUNT=0\nDETAIL=JOURNAL_MARKER_HTTP_403_COUNT=0\nDETAIL=JOURNAL_MARKER_CAPTCHA_COUNT=0\nDETAIL=JOURNAL_MARKER_FAILED_COUNT=40\nDETAIL=JOURNAL_MARKER_ERROR_COUNT=0\nDETAIL=COOKIE_FORMAT_MARKERS=NONE\nDETAIL=SKLADCHIK_COOKIE_SAFE_CONTRACT_AUDIT=PASS\nCHANGES_MADE=NO\n"
}
