diff --git a/runtime/history/HOMELAB-SKLADCHIK-VERIFIED-EDGE-RUNTIME-RULES-READ-ONLY-20260805T103630Z.json b/runtime/history/HOMELAB-SKLADCHIK-VERIFIED-EDGE-RUNTIME-RULES-READ-ONLY-20260805T103630Z.json new file mode 100644 index 0000000..b685e66 --- /dev/null +++ b/runtime/history/HOMELAB-SKLADCHIK-VERIFIED-EDGE-RUNTIME-RULES-READ-ONLY-20260805T103630Z.json @@ -0,0 +1,38 @@ +{ + "schema_version": 1, + "channel": "homelab-runtime", + "command_id": "HOMELAB-SKLADCHIK-VERIFIED-EDGE-RUNTIME-RULES-READ-ONLY-20260805T103630Z", + "status": "OK", + "rc": 0, + "host": "pve01", + "mode": "verify", + "component": "skladchik-verified-edge-runtime-rules-read-only", + "started_at_utc": "2026-08-05T10:51:41Z", + "finished_at_utc": "2026-08-05T10:51:41Z", + "reference_register_checked": true, + "reference_sha256": "5763f2f8edc75fcf6f3951f8c95896d1cc112ceccb6cf5b64a383f540a4deb8e", + "error_register_checked": true, + "error_register_sha256": "24934a2c7fa5c26f6e828583c4aefac7f143b40c0171736ed7571e617d55ab83", + "command_sha256": "4854db5174ad7d9c95171ecf14b96d2762a9398967f85a7a5a023f90516ae603", + "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": "884cf15fdd57e2b12e196b57fad6706a2361c6b982cb4f7a622e6c0f4ae3c084", + "sanitized_output_sha256": "884cf15fdd57e2b12e196b57fad6706a2361c6b982cb4f7a622e6c0f4ae3c084", + "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-VERIFIED-EDGE-RUNTIME-RULES-READ-ONLY-20260805T103630Z\",\"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\":false,\"based_on\":{\"capsule_sha256\":\"9bce781d71280ea835aea24ec46ff7b665392f6068c5097b282e5b548dda491d\",\"command_id\":\"HOMELAB-SKLADCHIK-EDGE-EXECUTION-PATH-READ-ONLY-20260805T103400Z\",\"output_sha256\":\"7b13465d38bf723d42fce218d2178e7f914e0d6b84828047df9d8537874c31c2\",\"runner_json_sha256\":\"4b9a07610e72c293e3773ea68a5a6137f882c1fd34f67d164d5f72ef36f31d71\",\"runner_text_sha256\":\"46f63ae74532feb3abc7fefc4d27012c9ef45514200cefe442b318b7153a1715\"},\"changes_made\":false,\"command_id\":\"HOMELAB-SKLADCHIK-VERIFIED-EDGE-RUNTIME-RULES-READ-ONLY-20260805T103630Z\",\"command_rc\":0,\"installed_mapping\":[{\"bytes\":20598,\"manifest_match\":false,\"manifest_paths\":[],\"mode\":\"0o755\",\"path\":\"/usr/local/sbin/skladchik-reports-monitor-supervisor\",\"present\":true,\"sha256\":\"bd40ee19ea8b277d52f4240b97d3c79b825c90154272bac8a43004591bd0ddc3\"},{\"bytes\":638,\"manifest_match\":false,\"manifest_paths\":[],\"mode\":\"0o755\",\"path\":\"/usr/local/sbin/skladchik-reports-monitor-cookie-update\",\"present\":true,\"sha256\":\"ea2d89ce67893a6d89b29610e4d46e207932ecc157173454585f67890f58810c\"},{\"bytes\":10086,\"manifest_match\":false,\"manifest_paths\":[],\"mode\":\"0o700\",\"path\":\"/srv/homelab-ops/tools/skladchik-cookie-refresh\",\"present\":true,\"sha256\":\"1e2f5323abf880f3e8b17bf1f2d0a844c402a9bbf5f24159ed39aaf1d79caef0\"}],\"mutation_outcome\":\"NO_MUTATION\",\"next_action\":\"RESOLVE_EXACT_CR_2026_0007_GIT_OBJECT\",\"output_truncated_in_json\":false,\"prerequisites\":{\"repo\":{\"head\":\"60f53ea6fe6724196802a46de3de19c7889a51cc\",\"path\":\"/srv/homelab-ops-worktrees/cr-2026-0015\",\"symbolic_head\":\"refs/heads/cr-2026-0015-pve03-r8152-rx-ring-canary\",\"verified\":true},\"supervisor_sha256\":\"bd40ee19ea8b277d52f4240b97d3c79b825c90154272bac8a43004591bd0ddc3\",\"supervisor_sha_verified\":true,\"unit_sha256\":\"e874fb03573b76181f3eb812c7285848e60705923c172a2f102504a7b9100ef7\",\"unit_sha_verified\":true},\"projection_bytes\":3365,\"rc\":0,\"read_only\":true,\"remote_probe\":{\"attempted\":false,\"reason\":\"verified_source_or_strict_ssh_precondition_failed\"},\"rollback_restored\":null,\"rollback_started\":false,\"root_cause_classification\":\"VERIFIED_REAUTH_SOURCE_NOT_FOUND\",\"schema\":1,\"ssh_resolution\":{\"batch_mode_yes\":true,\"connect_timeout_15\":true,\"environment_override_present\":false,\"known_hosts_entry_found\":true,\"known_hosts_file_sha256\":\"88564922338b311be6c646a83651eae19f074b1ffa1ebca36534c56f6974f008\",\"known_hosts_mode\":\"0o600\",\"known_hosts_path_sha256\":\"0abf5b78c0f48ff47f3c56429b0464ccd7e22d370784bc4a6404b6be97606308\",\"ssh_config_resolution_rc\":0,\"ssh_config_resolution_sha256\":\"12470a063722f6eed27191bd3993d85ef5f8728f875cb01698b0bd503a838b1a\",\"strict_host_key_checking_yes\":true,\"target_is_private_ip\":true,\"target_sha256\":\"59fe7b243d5b6541eadb1aea3da6e2a0025b2e21dda861b6fff4c438e3bfd2eb\",\"user\":\"debian\"},\"status\":\"OK\",\"verified_source\":{\"candidate_summaries\":[{\"commit\":\"d399d24440f948b518761ecfd516521993861b43\",\"entries\":23,\"manifest_sha256\":\"40515974b5cb0acac0e1d4c1b6f1eea95f71a9df093304e65c1c66cc9b820356\",\"matched\":21,\"mismatched_count\":0,\"missing\":2,\"sample_failures\":[{\"path\":\"tasks/skladchik-reports-monitor-controlled-reauth-v1/assets/pve01/__pycache__/skladchik-reports-monitor-monthly-selftest-watchcpython-313.pyc\",\"reason\":\"missing\"},{\"path\":\"tasks/skladchik-reports-monitor-controlled-reauth-v1/assets/pve01/__pycache__/skladchik-reports-monitor-supervisorcpython-313.pyc\",\"reason\":\"missing\"}]}],\"searched_commits\":1,\"verified\":null}}\n" +} diff --git a/runtime/history/HOMELAB-SKLADCHIK-VERIFIED-EDGE-RUNTIME-RULES-READ-ONLY-20260805T103630Z.txt b/runtime/history/HOMELAB-SKLADCHIK-VERIFIED-EDGE-RUNTIME-RULES-READ-ONLY-20260805T103630Z.txt new file mode 100644 index 0000000..7099555 --- /dev/null +++ b/runtime/history/HOMELAB-SKLADCHIK-VERIFIED-EDGE-RUNTIME-RULES-READ-ONLY-20260805T103630Z.txt @@ -0,0 +1,34 @@ +CHAT_OUTPUT_BEGIN +COMMAND_ID=HOMELAB-SKLADCHIK-VERIFIED-EDGE-RUNTIME-RULES-READ-ONLY-20260805T103630Z +STATUS=OK +RC=0 +HOST=pve01 +MODE=verify +COMPONENT=skladchik-verified-edge-runtime-rules-read-only +REFERENCE_REGISTER_CHECK=OK +REFERENCE_SHA256=5763f2f8edc75fcf6f3951f8c95896d1cc112ceccb6cf5b64a383f540a4deb8e +ERROR_REGISTER_CHECK=OK +ERROR_REGISTER_SHA256=24934a2c7fa5c26f6e828583c4aefac7f143b40c0171736ed7571e617d55ab83 +COMMAND_SHA256=4854db5174ad7d9c95171ecf14b96d2762a9398967f85a7a5a023f90516ae603 +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=884cf15fdd57e2b12e196b57fad6706a2361c6b982cb4f7a622e6c0f4ae3c084 +SANITIZED_OUTPUT_SHA256=884cf15fdd57e2b12e196b57fad6706a2361c6b982cb4f7a622e6c0f4ae3c084 +OUTPUT_BEGIN +HOMELAB_RESULT_CONTRACT={"changes_made":false,"command_id":"HOMELAB-SKLADCHIK-VERIFIED-EDGE-RUNTIME-RULES-READ-ONLY-20260805T103630Z","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":false,"based_on":{"capsule_sha256":"9bce781d71280ea835aea24ec46ff7b665392f6068c5097b282e5b548dda491d","command_id":"HOMELAB-SKLADCHIK-EDGE-EXECUTION-PATH-READ-ONLY-20260805T103400Z","output_sha256":"7b13465d38bf723d42fce218d2178e7f914e0d6b84828047df9d8537874c31c2","runner_json_sha256":"4b9a07610e72c293e3773ea68a5a6137f882c1fd34f67d164d5f72ef36f31d71","runner_text_sha256":"46f63ae74532feb3abc7fefc4d27012c9ef45514200cefe442b318b7153a1715"},"changes_made":false,"command_id":"HOMELAB-SKLADCHIK-VERIFIED-EDGE-RUNTIME-RULES-READ-ONLY-20260805T103630Z","command_rc":0,"installed_mapping":[{"bytes":20598,"manifest_match":false,"manifest_paths":[],"mode":"0o755","path":"/usr/local/sbin/skladchik-reports-monitor-supervisor","present":true,"sha256":"bd40ee19ea8b277d52f4240b97d3c79b825c90154272bac8a43004591bd0ddc3"},{"bytes":638,"manifest_match":false,"manifest_paths":[],"mode":"0o755","path":"/usr/local/sbin/skladchik-reports-monitor-cookie-update","present":true,"sha256":"ea2d89ce67893a6d89b29610e4d46e207932ecc157173454585f67890f58810c"},{"bytes":10086,"manifest_match":false,"manifest_paths":[],"mode":"0o700","path":"/srv/homelab-ops/tools/skladchik-cookie-refresh","present":true,"sha256":"1e2f5323abf880f3e8b17bf1f2d0a844c402a9bbf5f24159ed39aaf1d79caef0"}],"mutation_outcome":"NO_MUTATION","next_action":"RESOLVE_EXACT_CR_2026_0007_GIT_OBJECT","output_truncated_in_json":false,"prerequisites":{"repo":{"head":"60f53ea6fe6724196802a46de3de19c7889a51cc","path":"/srv/homelab-ops-worktrees/cr-2026-0015","symbolic_head":"refs/heads/cr-2026-0015-pve03-r8152-rx-ring-canary","verified":true},"supervisor_sha256":"bd40ee19ea8b277d52f4240b97d3c79b825c90154272bac8a43004591bd0ddc3","supervisor_sha_verified":true,"unit_sha256":"e874fb03573b76181f3eb812c7285848e60705923c172a2f102504a7b9100ef7","unit_sha_verified":true},"projection_bytes":3365,"rc":0,"read_only":true,"remote_probe":{"attempted":false,"reason":"verified_source_or_strict_ssh_precondition_failed"},"rollback_restored":null,"rollback_started":false,"root_cause_classification":"VERIFIED_REAUTH_SOURCE_NOT_FOUND","schema":1,"ssh_resolution":{"batch_mode_yes":true,"connect_timeout_15":true,"environment_override_present":false,"known_hosts_entry_found":true,"known_hosts_file_sha256":"88564922338b311be6c646a83651eae19f074b1ffa1ebca36534c56f6974f008","known_hosts_mode":"0o600","known_hosts_path_sha256":"0abf5b78c0f48ff47f3c56429b0464ccd7e22d370784bc4a6404b6be97606308","ssh_config_resolution_rc":0,"ssh_config_resolution_sha256":"12470a063722f6eed27191bd3993d85ef5f8728f875cb01698b0bd503a838b1a","strict_host_key_checking_yes":true,"target_is_private_ip":true,"target_sha256":"59fe7b243d5b6541eadb1aea3da6e2a0025b2e21dda861b6fff4c438e3bfd2eb","user":"debian"},"status":"OK","verified_source":{"candidate_summaries":[{"commit":"d399d24440f948b518761ecfd516521993861b43","entries":23,"manifest_sha256":"40515974b5cb0acac0e1d4c1b6f1eea95f71a9df093304e65c1c66cc9b820356","matched":21,"mismatched_count":0,"missing":2,"sample_failures":[{"path":"tasks/skladchik-reports-monitor-controlled-reauth-v1/assets/pve01/__pycache__/skladchik-reports-monitor-monthly-selftest-watchcpython-313.pyc","reason":"missing"},{"path":"tasks/skladchik-reports-monitor-controlled-reauth-v1/assets/pve01/__pycache__/skladchik-reports-monitor-supervisorcpython-313.pyc","reason":"missing"}]}],"searched_commits":1,"verified":null}} + +OUTPUT_END +CHAT_OUTPUT_END diff --git a/runtime/latest.json b/runtime/latest.json index 37a4dd9..b685e66 100644 --- a/runtime/latest.json +++ b/runtime/latest.json @@ -1,19 +1,19 @@ { "schema_version": 1, "channel": "homelab-runtime", - "command_id": "HOMELAB-CLUSTER-KB-V1-READER-V3-FAKE-DEPENDENCY-CONTRACT-FIX-READ-ONLY-20260805T104000Z", + "command_id": "HOMELAB-SKLADCHIK-VERIFIED-EDGE-RUNTIME-RULES-READ-ONLY-20260805T103630Z", "status": "OK", "rc": 0, "host": "pve01", "mode": "verify", - "component": "cluster-knowledge-base-error-system", - "started_at_utc": "2026-08-05T10:51:00Z", - "finished_at_utc": "2026-08-05T10:51:00Z", + "component": "skladchik-verified-edge-runtime-rules-read-only", + "started_at_utc": "2026-08-05T10:51:41Z", + "finished_at_utc": "2026-08-05T10:51:41Z", "reference_register_checked": true, "reference_sha256": "5763f2f8edc75fcf6f3951f8c95896d1cc112ceccb6cf5b64a383f540a4deb8e", "error_register_checked": true, "error_register_sha256": "24934a2c7fa5c26f6e828583c4aefac7f143b40c0171736ed7571e617d55ab83", - "command_sha256": "27e9d986cc5280c8fee14ef647fd09b807bf939336d0dbd7f4d38c54286ab54c", + "command_sha256": "4854db5174ad7d9c95171ecf14b96d2762a9398967f85a7a5a023f90516ae603", "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": "8b175d403825bf21d0222a3ecb18a502790378b739bf85e140c62740af58fb89", - "sanitized_output_sha256": "8b175d403825bf21d0222a3ecb18a502790378b739bf85e140c62740af58fb89", + "raw_evidence_sha256": "884cf15fdd57e2b12e196b57fad6706a2361c6b982cb4f7a622e6c0f4ae3c084", + "sanitized_output_sha256": "884cf15fdd57e2b12e196b57fad6706a2361c6b982cb4f7a622e6c0f4ae3c084", "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-KB-V1-READER-V3-FAKE-DEPENDENCY-CONTRACT-FIX-READ-ONLY-20260805T104000Z\",\"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{\"changes_made\":false,\"command_id\":\"HOMELAB-CLUSTER-KB-V1-READER-V3-FAKE-DEPENDENCY-CONTRACT-FIX-READ-ONLY-20260805T104000Z\",\"command_rc\":0,\"correction_of_previous_logic_gap\":{\"exact_fix\":\"derive manifest keys and access modes from the exact handler AST, test bounded string-list, rich-object-list, mapping, scalar and top-level mapping fixtures, and require two distinct read-only paths including the regex-matched result file\",\"proven_gap\":\"the prior result proved RESULT_RE fullmatch but all successful production fixtures still read only MANIFEST; the fake manifest container shape did not match the exact Reader dependency contract\",\"regression_test\":\"an exact handler using a non-default manifest key and dict.items must select a source-derived mapping fixture, read both MANIFEST and the RESULT_RE-matched file, return structured JSON, and keep all real effects blocked\"},\"error_fingerprint\":\"f625204be2a45aca4b0e31f18a66146eee3d05ca9cb2d6705b9a821bfc0e993e\",\"latest_exact_result_basis\":{\"capsule_sha256\":\"c1bf540b8af3111c34ac23fd1ed5ce1d9115a6dafdfa9f47d8559afe2a9d4789\",\"changes_made\":false,\"command_id\":\"HOMELAB-CLUSTER-KB-V1-READER-V3-UNRESOLVED-GLOBAL-BINDING-TRACE-READ-ONLY-20260805T102300Z\",\"command_rc\":0,\"control_plane_error\":null,\"error_fingerprint\":\"1f7e91361842a64a5cf2549e37a5014cd149154bee51dbcd3b7ac635e0924047\",\"mutation_outcome\":\"NO_MUTATION\",\"next_action\":\"RUN_ONE_READ_ONLY_READER_V3_FAKE_DEPENDENCY_CONTRACT_FIX\",\"output_complete\":true,\"output_sha256\":\"f64e9bbd9b05f8462d1484d5bf437d49efc42cc50a20a6d81ff7a7b46e293ef9\",\"output_truncated_in_json\":false,\"rc\":0,\"rollback_restored\":null,\"rollback_started\":false,\"root_cause_classification\":\"READER_V3_FEED_CAUGHT_EXCEPTION_ORIGIN_PROVEN\",\"runner_document_rc\":0,\"runner_json_sha256\":\"c67a7a94816c1c30c1b5b7a718139108cc6319c6ae55387e6186db2604ed7778\",\"runner_rc\":0,\"runner_text_sha256\":\"fbed4d1ad2f339c147bdc014aa6f4cf279d72ee765be85d10cef8041cfe64563\",\"runner_wrapper_matches_document\":true,\"status\":\"OK\"},\"mutation_outcome\":\"NO_MUTATION\",\"next_action\":\"RUN_ONE_READ_ONLY_READER_V3_EXACT_MANIFEST_SCHEMA_TRACE\",\"output_truncated_in_json\":false,\"owned_listeners\":[{\"address_class\":\"private\",\"address_sha256\":\"fb345731d21c612ed2cb13088c10fd26bac959c79a7634cb55e23ee6bfb428d9\",\"family\":\"ipv4\",\"inode\":\"24795\",\"port\":18788}],\"pre_command_known_error_gate\":{\"checked\":true,\"items\":[{\"id\":\"candidate-scan-limit-20260805\",\"prevention\":\"exact files only; bounded AST, simulation, response and output limits\"},{\"id\":\"runner-wrapper-mismatch-20260805\",\"prevention\":\"single compact JSON below 42000 bytes; no raw source, secret or response body\"},{\"id\":\"gitea-owner-hardcoded-20260805\",\"prevention\":\"no repository owner, guest ID or repository URL is assumed\"},{\"id\":\"gitea-git-auth-unavailable-20260805\",\"prevention\":\"no Git or Gitea authentication attempt\"},{\"id\":\"pvesh-adapter-context-unreadable-20260805\",\"prevention\":\"the payload does not call pvesh or any real executor\"},{\"id\":\"gitea-process-self-match-20260805\",\"prevention\":\"Reader identity is bound to exact systemd ControlGroup\"},{\"id\":\"sanitize-non-string-attributeerror-20260805\",\"prevention\":\"sanitize converts Any to str; embedded bool test\"},{\"id\":\"reader-path-env-misclassified-as-route-20260805\",\"prevention\":\"PATH and filesystem-like values are excluded from request candidates\"},{\"id\":\"reader-loopback-only-probe-20260805\",\"prevention\":\"owned listeners are inspected but no network connection is made\"},{\"id\":\"reader-capability-not-secret-20260805\",\"prevention\":\"capability values are redacted before every output projection\"},{\"id\":\"reader-systemd-unit-parsed-as-python-20260805\",\"prevention\":\"only the exact Python server source is parsed or compiled\"},{\"id\":\"reader-helper-contract-coverage-gap-20260805\",\"prevention\":\"all handler methods reachable from do_GET/do_HEAD are traced\"},{\"id\":\"reader-capability-root-empty-suffix-404-20260805\",\"prevention\":\"never infer inventory from capability-only paths; trace the exact post-prefix suffix and response branch with fake executors first\"},{\"id\":\"reader-generic-suffix-missed-exact-operation-20260805\",\"prevention\":\"derive route operations from exact compiled branch constants and intersect them with AST path literals before sandbox execution\"},{\"id\":\"reader-feed-500-without-origin-20260805\",\"prevention\":\"before any live feed request, trace global helper reachability, exact executor/file argument origins and caught sandbox exceptions; health alone never proves inventory safety\"},{\"id\":\"reader-sandbox-global-binding-undefined-20260805\",\"prevention\":\"materialize reachable module globals only through a strict AST allowlist; Path joins and re.compile are allowed, arbitrary calls are blocked, and MANIFEST/RESULTS/RESULT_RE are regression-tested before any live request\"},{\"id\":\"reader-negative-control-exception-polluted-classification-20260805\",\"prevention\":\"negative-control exceptions are reported separately and can never determine the production readiness classification\"},{\"id\":\"reader-result-regex-candidate-not-proven-20260805\",\"prevention\":\"derive one bounded matching filename from the exact compiled RESULT_RE in memory, verify fullmatch, and emit only length and hashes\"},{\"id\":\"reader-fake-dependency-contract-incomplete-20260805\",\"prevention\":\"derive manifest access keys and container shapes from the exact handler AST, test bounded list/object/map/scalar fixtures, and require two distinct read-only file paths before any live request\"}]},\"prevention_test\":{\"must_run_before_future_cluster_or_gitea_commands\":true,\"name\":\"reader_v3_fake_dependency_contract_preflight\",\"requirements\":[\"verify exact Reader source SHA and systemd identity\",\"materialize reachable module globals only through the strict AST allowlist\",\"require MANIFEST, RESULTS and RESULT_RE to be bound when referenced by the feed path\",\"derive manifest keys and access modes from the exact handler AST\",\"test bounded string-list, rich-list, mapping, scalar and top-level mapping fixture shapes\",\"derive and fullmatch one bounded RESULT_RE filename without emitting regex text or candidate text\",\"keep negative-control exceptions separate from production readiness\",\"require two distinct fake read-only file paths including the result file and structured JSON before any live request\",\"block arbitrary assignment calls and every real network, executor or filesystem mutation\",\"never output capability values, private addresses, raw source, regex text or response bodies\"]},\"process_environment\":{\"capability_name_present\":true,\"names\":[\"HOME\",\"HOMELAB_READER_CAPABILITY\",\"HOMELAB_READER_PORT\",\"INVOCATION_ID\",\"JOURNAL_STREAM\",\"LANG\",\"LOGNAME\",\"MEMORY_PRESSURE_WATCH\",\"MEMORY_PRESSURE_WRITE\",\"PATH\",\"SHELL\",\"SYSTEMD_EXEC_PID\",\"USER\"],\"secret_name_count\":1},\"rc\":0,\"read_only\":true,\"ready_for_live_inventory_probe\":false,\"real_executor_calls_made\":false,\"real_file_mutations_made\":false,\"real_network_requests_made\":false,\"result_projection\":{\"bytes_before_projection\":33249,\"compacted\":false,\"max_bytes\":36000},\"rollback_restored\":null,\"rollback_started\":false,\"root_cause_classification\":\"READER_V3_FEED_CAUGHT_EXCEPTION_ORIGIN_PROVEN\",\"sandbox_global_binding_trace\":{\"caught_exception_types\":[\"AttributeError\"],\"live_probe_contract_ready\":false,\"manifest_contract\":{\"access_modes\":[],\"key_count\":0,\"keys\":[],\"manifest_variable_count\":1,\"raw_source_emitted\":false},\"negative_control_exception_types\":[\"NameError\"],\"ready_variant_count\":0,\"ready_variant_names\":[],\"regex_matching_variant_count\":8,\"result_file_read_variant_count\":0,\"tested_profile_names\":[\"control\",\"source-keys-string-list\",\"source-keys-rich-list\",\"source-keys-map\",\"source-keys-scalar\",\"top-level-result-map\",\"manifest-object-results\",\"manifest-list\",\"result-object\"],\"variant_count\":9,\"variant_evidence_count\":6,\"variants\":[{\"all_effects_read_only\":false,\"body_bytes\":13,\"body_sha256\":\"326ce78e3deb6574ce072bbe8379c0e4deb1cb12c160a0f1a8161f8ddc6f4bd7\",\"caught_exception_count\":1,\"caught_exceptions\":[{\"line\":60,\"message\":\"name 'MANIFEST' is not defined\",\"message_sha256\":\"7ffaa9a9433abf55defe29684eca6160f703dc251b5b9ab47ccbd33b3dd3411c\",\"symbol\":\"handle_reader\",\"type\":\"NameError\"}],\"content_type\":\"text/plain; charset=utf-8\",\"data_source_call_count\":0,\"distinct_read_path_count\":0,\"effect_call_count\":0,\"effects\":[],\"handler_error_count\":0,\"json\":null,\"live_probe_contract_ready\":false,\"manifest_contract\":{\"access_modes\":[],\"key_count\":0,\"keys\":[],\"manifest_variable_count\":1,\"raw_source_emitted\":false},\"module_projection\":{\"excluded_assignment_count\":6,\"excluded_assignment_names\":[\"CAPABILITY\",\"MANIFEST\",\"PORT\",\"RESULTS\",\"RESULT_RE\",\"ROOT\"],\"include_safe_assignments\":false,\"included_assignment_count\":0,\"included_assignment_names\":[]},\"regex_candidate_contract\":{\"candidate_fullmatch\":false,\"candidate_generated\":false,\"candidate_length\":null,\"candidate_sha256\":null,\"compiled_pattern_present\":false,\"pattern_sha256\":null,\"pattern_text_emitted\":false},\"response_header_names\":[\"cache-control\",\"content-length\",\"content-type\",\"expires\",\"pragma\",\"surrogate-control\",\"x-robots-tag\"],\"result_file_read_proven\":false,\"route_template\":\"//feed\",\"source_call_count\":3,\"source_calls\":[{\"line\":42,\"symbol\":\"do_GET\"},{\"line\":45,\"symbol\":\"handle_reader\"},{\"line\":23,\"symbol\":\"reply\"}],\"status\":500,\"variant\":\"definitions-plus-resolved-scope-control\"},{\"all_effects_read_only\":true,\"body_bytes\":13,\"body_sha256\":\"326ce78e3deb6574ce072bbe8379c0e4deb1cb12c160a0f1a8161f8ddc6f4bd7\",\"caught_exception_count\":1,\"caught_exceptions\":[{\"line\":62,\"message\":\"'list' object has no attribute 'get'\",\"message_sha256\":\"73c2dbfd4deaed7a7fafa1d233c6631ae8d7650f0d5f3bce5a9da6386d739734\",\"symbol\":\"handle_reader\",\"type\":\"AttributeError\"}],\"content_type\":\"text/plain; charset=utf-8\",\"data_source_call_count\":1,\"distinct_read_path_count\":1,\"effect_call_count\":1,\"effects\":[{\"kind\":\"path.read_bytes\",\"mode\":\"r\",\"origin_type\":\"file\",\"path_class\":\"/var\",\"path_sha256\":\"e3e86f7cca26be90bb29b569ebbc865b3b544ad6f47fb1e976afae301aa02aca\",\"read_only_basis\":\"file_read\",\"read_only_proven\":true}],\"handler_error_count\":0,\"json\":null,\"live_probe_contract_ready\":false,\"manifest_contract\":{\"access_modes\":[],\"key_count\":0,\"keys\":[],\"manifest_variable_count\":1,\"raw_source_emitted\":false},\"module_projection\":{\"excluded_assignment_count\":0,\"excluded_assignment_names\":[],\"include_safe_assignments\":true,\"included_assignment_count\":6,\"included_assignment_names\":[\"CAPABILITY\",\"MANIFEST\",\"PORT\",\"RESULTS\",\"RESULT_RE\",\"ROOT\"]},\"regex_candidate_contract\":{\"candidate_fullmatch\":true,\"candidate_generated\":true,\"candidate_length\":70,\"candidate_sha256\":\"27a097a71de27938e5281eb61506b29a833e1cb65c0ec59f4d8eaff7108a1b20\",\"compiled_pattern_present\":true,\"pattern_sha256\":\"cc0d3d6eeabb57c6262c3e83d6561e587ad62b5f370dab9cbf080b67c533b47c\",\"pattern_text_emitted\":false},\"response_header_names\":[\"cache-control\",\"content-length\",\"content-type\",\"expires\",\"pragma\",\"surrogate-control\",\"x-robots-tag\"],\"result_file_read_proven\":false,\"route_template\":\"//feed\",\"source_call_count\":3,\"source_calls\":[{\"line\":42,\"symbol\":\"do_GET\"},{\"line\":45,\"symbol\":\"handle_reader\"},{\"line\":23,\"symbol\":\"reply\"}],\"status\":500,\"variant\":\"manifest-list\"},{\"all_effects_read_only\":true,\"body_bytes\":413,\"body_sha256\":\"c9a7f661d84dc4e503844d1418a169a221d1d65d7da9f7f8b42753cdb535d8b9\",\"caught_exception_count\":0,\"caught_exceptions\":[],\"content_type\":\"application/json; charset=utf-8\",\"data_source_call_count\":1,\"distinct_read_path_count\":1,\"effect_call_count\":1,\"effects\":[{\"kind\":\"path.read_bytes\",\"mode\":\"r\",\"origin_type\":\"file\",\"path_class\":\"/var\",\"path_sha256\":\"e3e86f7cca26be90bb29b569ebbc865b3b544ad6f47fb1e976afae301aa02aca\",\"read_only_basis\":\"file_read\",\"read_only_proven\":true}],\"handler_error_count\":0,\"json\":{\"top_key_count\":9,\"top_keys\":[\"entries\",\"files\",\"generation\",\"items\",\"rc\",\"results\",\"schema\",\"status\",\"version\"],\"type\":\"dict\"},\"live_probe_contract_ready\":false,\"manifest_contract\":{\"access_modes\":[],\"key_count\":0,\"keys\":[],\"manifest_variable_count\":1,\"raw_source_emitted\":false},\"module_projection\":{\"excluded_assignment_count\":0,\"excluded_assignment_names\":[],\"include_safe_assignments\":true,\"included_assignment_count\":6,\"included_assignment_names\":[\"CAPABILITY\",\"MANIFEST\",\"PORT\",\"RESULTS\",\"RESULT_RE\",\"ROOT\"]},\"regex_candidate_contract\":{\"candidate_fullmatch\":true,\"candidate_generated\":true,\"candidate_length\":70,\"candidate_sha256\":\"27a097a71de27938e5281eb61506b29a833e1cb65c0ec59f4d8eaff7108a1b20\",\"compiled_pattern_present\":true,\"pattern_sha256\":\"cc0d3d6eeabb57c6262c3e83d6561e587ad62b5f370dab9cbf080b67c533b47c\",\"pattern_text_emitted\":false},\"response_header_names\":[\"cache-control\",\"content-length\",\"content-type\",\"etag\",\"expires\",\"pragma\",\"surrogate-control\",\"x-homelab-generation\",\"x-robots-tag\"],\"result_file_read_proven\":false,\"route_template\":\"//feed\",\"source_call_count\":3,\"source_calls\":[{\"line\":42,\"symbol\":\"do_GET\"},{\"line\":45,\"symbol\":\"handle_reader\"},{\"line\":23,\"symbol\":\"reply\"}],\"status\":200,\"variant\":\"source-keys-string-list\"},{\"all_effects_read_only\":true,\"body_bytes\":2569,\"body_sha256\":\"7f6beff186df6e00795b3d931fbfd0e12eb00bfc2676840f3c2bd43a9fc09631\",\"caught_exception_count\":0,\"caught_exceptions\":[],\"content_type\":\"application/json; charset=utf-8\",\"data_source_call_count\":1,\"distinct_read_path_count\":1,\"effect_call_count\":1,\"effects\":[{\"kind\":\"path.read_bytes\",\"mode\":\"r\",\"origin_type\":\"file\",\"path_class\":\"/var\",\"path_sha256\":\"e3e86f7cca26be90bb29b569ebbc865b3b544ad6f47fb1e976afae301aa02aca\",\"read_only_basis\":\"file_read\",\"read_only_proven\":true}],\"handler_error_count\":0,\"json\":{\"top_key_count\":9,\"top_keys\":[\"entries\",\"files\",\"generation\",\"items\",\"rc\",\"results\",\"schema\",\"status\",\"version\"],\"type\":\"dict\"},\"live_probe_contract_ready\":false,\"manifest_contract\":{\"access_modes\":[],\"key_count\":0,\"keys\":[],\"manifest_variable_count\":1,\"raw_source_emitted\":false},\"module_projection\":{\"excluded_assignment_count\":0,\"excluded_assignment_names\":[],\"include_safe_assignments\":true,\"included_assignment_count\":6,\"included_assignment_names\":[\"CAPABILITY\",\"MANIFEST\",\"PORT\",\"RESULTS\",\"RESULT_RE\",\"ROOT\"]},\"regex_candidate_contract\":{\"candidate_fullmatch\":true,\"candidate_generated\":true,\"candidate_length\":70,\"candidate_sha256\":\"27a097a71de27938e5281eb61506b29a833e1cb65c0ec59f4d8eaff7108a1b20\",\"compiled_pattern_present\":true,\"pattern_sha256\":\"cc0d3d6eeabb57c6262c3e83d6561e587ad62b5f370dab9cbf080b67c533b47c\",\"pattern_text_emitted\":false},\"response_header_names\":[\"cache-control\",\"content-length\",\"content-type\",\"etag\",\"expires\",\"pragma\",\"surrogate-control\",\"x-homelab-generation\",\"x-robots-tag\"],\"result_file_read_proven\":false,\"route_template\":\"//feed\",\"source_call_count\":3,\"source_calls\":[{\"line\":42,\"symbol\":\"do_GET\"},{\"line\":45,\"symbol\":\"handle_reader\"},{\"line\":23,\"symbol\":\"reply\"}],\"status\":200,\"variant\":\"source-keys-rich-list\"},{\"all_effects_read_only\":true,\"body_bytes\":2861,\"body_sha256\":\"f4c751cad191814cccfebb086aea7c85cd611fd1d47c91def1326919cbe11a0d\",\"caught_exception_count\":0,\"caught_exceptions\":[],\"content_type\":\"application/json; charset=utf-8\",\"data_source_call_count\":1,\"distinct_read_path_count\":1,\"effect_call_count\":1,\"effects\":[{\"kind\":\"path.read_bytes\",\"mode\":\"r\",\"origin_type\":\"file\",\"path_class\":\"/var\",\"path_sha256\":\"e3e86f7cca26be90bb29b569ebbc865b3b544ad6f47fb1e976afae301aa02aca\",\"read_only_basis\":\"file_read\",\"read_only_proven\":true}],\"handler_error_count\":0,\"json\":{\"top_key_count\":9,\"top_keys\":[\"entries\",\"files\",\"generation\",\"items\",\"rc\",\"results\",\"schema\",\"status\",\"version\"],\"type\":\"dict\"},\"live_probe_contract_ready\":false,\"manifest_contract\":{\"access_modes\":[],\"key_count\":0,\"keys\":[],\"manifest_variable_count\":1,\"raw_source_emitted\":false},\"module_projection\":{\"excluded_assignment_count\":0,\"excluded_assignment_names\":[],\"include_safe_assignments\":true,\"included_assignment_count\":6,\"included_assignment_names\":[\"CAPABILITY\",\"MANIFEST\",\"PORT\",\"RESULTS\",\"RESULT_RE\",\"ROOT\"]},\"regex_candidate_contract\":{\"candidate_fullmatch\":true,\"candidate_generated\":true,\"candidate_length\":70,\"candidate_sha256\":\"27a097a71de27938e5281eb61506b29a833e1cb65c0ec59f4d8eaff7108a1b20\",\"compiled_pattern_present\":true,\"pattern_sha256\":\"cc0d3d6eeabb57c6262c3e83d6561e587ad62b5f370dab9cbf080b67c533b47c\",\"pattern_text_emitted\":false},\"response_header_names\":[\"cache-control\",\"content-length\",\"content-type\",\"etag\",\"expires\",\"pragma\",\"surrogate-control\",\"x-homelab-generation\",\"x-robots-tag\"],\"result_file_read_proven\":false,\"route_template\":\"//feed\",\"source_call_count\":3,\"source_calls\":[{\"line\":42,\"symbol\":\"do_GET\"},{\"line\":45,\"symbol\":\"handle_reader\"},{\"line\":23,\"symbol\":\"reply\"}],\"status\":200,\"variant\":\"source-keys-map\"},{\"all_effects_read_only\":true,\"body_bytes\":405,\"body_sha256\":\"7d51795cb0f426b85ebf5252a4aa8ca2586992c1af24c0929b831d1e315829f6\",\"caught_exception_count\":0,\"caught_exceptions\":[],\"content_type\":\"application/json; charset=utf-8\",\"data_source_call_count\":1,\"distinct_read_path_count\":1,\"effect_call_count\":1,\"effects\":[{\"kind\":\"path.read_bytes\",\"mode\":\"r\",\"origin_type\":\"file\",\"path_class\":\"/var\",\"path_sha256\":\"e3e86f7cca26be90bb29b569ebbc865b3b544ad6f47fb1e976afae301aa02aca\",\"read_only_basis\":\"file_read\",\"read_only_proven\":true}],\"handler_error_count\":0,\"json\":{\"top_key_count\":9,\"top_keys\":[\"entries\",\"files\",\"generation\",\"items\",\"rc\",\"results\",\"schema\",\"status\",\"version\"],\"type\":\"dict\"},\"live_probe_contract_ready\":false,\"manifest_contract\":{\"access_modes\":[],\"key_count\":0,\"keys\":[],\"manifest_variable_count\":1,\"raw_source_emitted\":false},\"module_projection\":{\"excluded_assignment_count\":0,\"excluded_assignment_names\":[],\"include_safe_assignments\":true,\"included_assignment_count\":6,\"included_assignment_names\":[\"CAPABILITY\",\"MANIFEST\",\"PORT\",\"RESULTS\",\"RESULT_RE\",\"ROOT\"]},\"regex_candidate_contract\":{\"candidate_fullmatch\":true,\"candidate_generated\":true,\"candidate_length\":70,\"candidate_sha256\":\"27a097a71de27938e5281eb61506b29a833e1cb65c0ec59f4d8eaff7108a1b20\",\"compiled_pattern_present\":true,\"pattern_sha256\":\"cc0d3d6eeabb57c6262c3e83d6561e587ad62b5f370dab9cbf080b67c533b47c\",\"pattern_text_emitted\":false},\"response_header_names\":[\"cache-control\",\"content-length\",\"content-type\",\"etag\",\"expires\",\"pragma\",\"surrogate-control\",\"x-homelab-generation\",\"x-robots-tag\"],\"result_file_read_proven\":false,\"route_template\":\"//feed\",\"source_call_count\":3,\"source_calls\":[{\"line\":42,\"symbol\":\"do_GET\"},{\"line\":45,\"symbol\":\"handle_reader\"},{\"line\":23,\"symbol\":\"reply\"}],\"status\":200,\"variant\":\"source-keys-scalar\"}]},\"sanitized_bytecode_branch_trace\":{\"branch_instruction_count\":14,\"branch_literal_count\":7,\"branch_literal_templates\":[\"X-Homelab-Generation\",\"X-Robots-Tag\",\"feed\",\"health\",\"health-v3\",\"include_body\",\"results\"],\"bytecode_disassembly_emitted\":false,\"bytecode_literal_count\":28,\"call_instruction_count\":53,\"code_object_count\":8,\"compile_ok\":true,\"exact_branch_operation_count\":2,\"exact_compiled_operation_count\":2,\"operation_suffixes\":[\"feed\",\"health\"],\"operation_suffixes_sha256\":\"7b2583665af60a5f63c575c89ecaff1cd688710d29507b6d79238e5d9ca5e58b\",\"raw_source_emitted\":false,\"source_literal_count\":2},\"schema\":1,\"source_files\":[{\"actual_sha256\":\"d672b74b390efa787ffd5a090e8c8eea8fdf038075421231a9d9b3053ea926b1\",\"bytes\":580,\"expected_sha256\":\"d672b74b390efa787ffd5a090e8c8eea8fdf038075421231a9d9b3053ea926b1\",\"matches_expected\":true,\"path\":\"/etc/systemd/system/homelab-reader-v3.service\"},{\"actual_sha256\":\"092780e76ff18dfe2920c51f8b97dd09d194fd6cbdb59c3755c9fbf6530f3536\",\"bytes\":3539,\"expected_sha256\":\"092780e76ff18dfe2920c51f8b97dd09d194fd6cbdb59c3755c9fbf6530f3536\",\"matches_expected\":true,\"path\":\"/usr/local/sbin/homelab-reader-server-v3\"}],\"source_selection\":{\"raw_source_emitted\":false,\"selected_path\":\"/usr/local/sbin/homelab-reader-server-v3\",\"systemd_unit_excluded\":true},\"source_state\":\"MATCH\",\"static_executor_argument_origin_trace\":{\"all_resolved_origins_read_only\":true,\"call_edge_count\":3,\"call_edges\":[{\"from\":\"Handler.do_GET\",\"to\":\"Handler.handle_reader\"},{\"from\":\"Handler.do_HEAD\",\"to\":\"Handler.handle_reader\"},{\"from\":\"Handler.handle_reader\",\"to\":\"Handler.reply\"}],\"handler_roots\":[\"Handler.do_GET\",\"Handler.do_HEAD\"],\"raw_source_emitted\":false,\"reachable_data_origin_count\":2,\"reachable_data_origins\":[{\"argument_origin_names\":[],\"argument_resolved\":false,\"call\":\"MANIFEST.read_bytes\",\"evidence_sha256\":\"3b9f9140c901f027be26f124b8c983ccfddbb3a62b03a416b5e7bfbb19f9fe59\",\"kind\":\"file\",\"mode\":\"r\",\"origin_symbol\":\"Handler.handle_reader\",\"path_class\":null,\"path_sha256\":null,\"read_only_basis\":\"file_read\",\"read_only_proven\":true},{\"argument_origin_names\":[],\"argument_resolved\":false,\"call\":\"target.read_bytes\",\"evidence_sha256\":\"aa896c2be567c54cf2da0cf24792da33575188def3c5d95fda4745ed3de4fdaf\",\"kind\":\"file\",\"mode\":\"r\",\"origin_symbol\":\"Handler.handle_reader\",\"path_class\":null,\"path_sha256\":null,\"read_only_basis\":\"file_read\",\"read_only_proven\":true}],\"reachable_symbol_count\":4,\"reachable_symbols\":[\"Handler.do_GET\",\"Handler.do_HEAD\",\"Handler.handle_reader\",\"Handler.reply\"],\"unresolved_origin_count\":2},\"static_response_trace\":{\"ast_parse_ok\":true,\"capability_prefix_count\":1,\"capability_prefix_templates\":[\"//\"],\"handler_count\":1,\"reachable_methods\":[\"do_GET\",\"do_HEAD\",\"handle_reader\",\"reply\"],\"resolved_scope_names\":[\"CAPABILITY\",\"PORT\"],\"source_suffix_literal_count\":2,\"source_suffix_literal_templates\":[\"feed\",\"health\"]},\"status\":\"OK\",\"systemd_identity\":{\"identity_valid\":true,\"pid_count\":1,\"probe\":{\"duration_seconds\":0.005,\"rc\":0,\"stderr_bytes\":0,\"stderr_sha256\":\"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\",\"stderr_truncated\":false,\"stdout_bytes\":375,\"stdout_sha256\":\"49094d65d3787c1479e6408e1fefb7af3758d0fa55e1d37bf22907442aab35e9\",\"stdout_truncated\":false},\"properties\":{\"ActiveState\":\"active\",\"ControlGroup\":\"/system.slice/homelab-reader-v3.service\",\"ExecStart_present\":true,\"ExecStart_sha256\":\"2500fde09569176736b4f2f1dd29d6289b6a6ae6a59b52b6a3c31f797f567379\",\"FragmentPath\":\"/etc/systemd/system/homelab-reader-v3.service\",\"LoadState\":\"loaded\",\"MainPID\":\"1282\",\"SubState\":\"running\"}}}\n" + "output": "HOMELAB_RESULT_CONTRACT={\"changes_made\":false,\"command_id\":\"HOMELAB-SKLADCHIK-VERIFIED-EDGE-RUNTIME-RULES-READ-ONLY-20260805T103630Z\",\"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\":false,\"based_on\":{\"capsule_sha256\":\"9bce781d71280ea835aea24ec46ff7b665392f6068c5097b282e5b548dda491d\",\"command_id\":\"HOMELAB-SKLADCHIK-EDGE-EXECUTION-PATH-READ-ONLY-20260805T103400Z\",\"output_sha256\":\"7b13465d38bf723d42fce218d2178e7f914e0d6b84828047df9d8537874c31c2\",\"runner_json_sha256\":\"4b9a07610e72c293e3773ea68a5a6137f882c1fd34f67d164d5f72ef36f31d71\",\"runner_text_sha256\":\"46f63ae74532feb3abc7fefc4d27012c9ef45514200cefe442b318b7153a1715\"},\"changes_made\":false,\"command_id\":\"HOMELAB-SKLADCHIK-VERIFIED-EDGE-RUNTIME-RULES-READ-ONLY-20260805T103630Z\",\"command_rc\":0,\"installed_mapping\":[{\"bytes\":20598,\"manifest_match\":false,\"manifest_paths\":[],\"mode\":\"0o755\",\"path\":\"/usr/local/sbin/skladchik-reports-monitor-supervisor\",\"present\":true,\"sha256\":\"bd40ee19ea8b277d52f4240b97d3c79b825c90154272bac8a43004591bd0ddc3\"},{\"bytes\":638,\"manifest_match\":false,\"manifest_paths\":[],\"mode\":\"0o755\",\"path\":\"/usr/local/sbin/skladchik-reports-monitor-cookie-update\",\"present\":true,\"sha256\":\"ea2d89ce67893a6d89b29610e4d46e207932ecc157173454585f67890f58810c\"},{\"bytes\":10086,\"manifest_match\":false,\"manifest_paths\":[],\"mode\":\"0o700\",\"path\":\"/srv/homelab-ops/tools/skladchik-cookie-refresh\",\"present\":true,\"sha256\":\"1e2f5323abf880f3e8b17bf1f2d0a844c402a9bbf5f24159ed39aaf1d79caef0\"}],\"mutation_outcome\":\"NO_MUTATION\",\"next_action\":\"RESOLVE_EXACT_CR_2026_0007_GIT_OBJECT\",\"output_truncated_in_json\":false,\"prerequisites\":{\"repo\":{\"head\":\"60f53ea6fe6724196802a46de3de19c7889a51cc\",\"path\":\"/srv/homelab-ops-worktrees/cr-2026-0015\",\"symbolic_head\":\"refs/heads/cr-2026-0015-pve03-r8152-rx-ring-canary\",\"verified\":true},\"supervisor_sha256\":\"bd40ee19ea8b277d52f4240b97d3c79b825c90154272bac8a43004591bd0ddc3\",\"supervisor_sha_verified\":true,\"unit_sha256\":\"e874fb03573b76181f3eb812c7285848e60705923c172a2f102504a7b9100ef7\",\"unit_sha_verified\":true},\"projection_bytes\":3365,\"rc\":0,\"read_only\":true,\"remote_probe\":{\"attempted\":false,\"reason\":\"verified_source_or_strict_ssh_precondition_failed\"},\"rollback_restored\":null,\"rollback_started\":false,\"root_cause_classification\":\"VERIFIED_REAUTH_SOURCE_NOT_FOUND\",\"schema\":1,\"ssh_resolution\":{\"batch_mode_yes\":true,\"connect_timeout_15\":true,\"environment_override_present\":false,\"known_hosts_entry_found\":true,\"known_hosts_file_sha256\":\"88564922338b311be6c646a83651eae19f074b1ffa1ebca36534c56f6974f008\",\"known_hosts_mode\":\"0o600\",\"known_hosts_path_sha256\":\"0abf5b78c0f48ff47f3c56429b0464ccd7e22d370784bc4a6404b6be97606308\",\"ssh_config_resolution_rc\":0,\"ssh_config_resolution_sha256\":\"12470a063722f6eed27191bd3993d85ef5f8728f875cb01698b0bd503a838b1a\",\"strict_host_key_checking_yes\":true,\"target_is_private_ip\":true,\"target_sha256\":\"59fe7b243d5b6541eadb1aea3da6e2a0025b2e21dda861b6fff4c438e3bfd2eb\",\"user\":\"debian\"},\"status\":\"OK\",\"verified_source\":{\"candidate_summaries\":[{\"commit\":\"d399d24440f948b518761ecfd516521993861b43\",\"entries\":23,\"manifest_sha256\":\"40515974b5cb0acac0e1d4c1b6f1eea95f71a9df093304e65c1c66cc9b820356\",\"matched\":21,\"mismatched_count\":0,\"missing\":2,\"sample_failures\":[{\"path\":\"tasks/skladchik-reports-monitor-controlled-reauth-v1/assets/pve01/__pycache__/skladchik-reports-monitor-monthly-selftest-watchcpython-313.pyc\",\"reason\":\"missing\"},{\"path\":\"tasks/skladchik-reports-monitor-controlled-reauth-v1/assets/pve01/__pycache__/skladchik-reports-monitor-supervisorcpython-313.pyc\",\"reason\":\"missing\"}]}],\"searched_commits\":1,\"verified\":null}}\n" } diff --git a/runtime/latest.txt b/runtime/latest.txt index 4c6347a..7099555 100644 --- a/runtime/latest.txt +++ b/runtime/latest.txt @@ -1,15 +1,15 @@ CHAT_OUTPUT_BEGIN -COMMAND_ID=HOMELAB-CLUSTER-KB-V1-READER-V3-FAKE-DEPENDENCY-CONTRACT-FIX-READ-ONLY-20260805T104000Z +COMMAND_ID=HOMELAB-SKLADCHIK-VERIFIED-EDGE-RUNTIME-RULES-READ-ONLY-20260805T103630Z STATUS=OK RC=0 HOST=pve01 MODE=verify -COMPONENT=cluster-knowledge-base-error-system +COMPONENT=skladchik-verified-edge-runtime-rules-read-only REFERENCE_REGISTER_CHECK=OK REFERENCE_SHA256=5763f2f8edc75fcf6f3951f8c95896d1cc112ceccb6cf5b64a383f540a4deb8e ERROR_REGISTER_CHECK=OK ERROR_REGISTER_SHA256=24934a2c7fa5c26f6e828583c4aefac7f143b40c0171736ed7571e617d55ab83 -COMMAND_SHA256=27e9d986cc5280c8fee14ef647fd09b807bf939336d0dbd7f4d38c54286ab54c +COMMAND_SHA256=4854db5174ad7d9c95171ecf14b96d2762a9398967f85a7a5a023f90516ae603 DUPLICATE_FAILED_COMMAND_BLOCKED=false EXECUTION_STARTED=true CHANGE_DECLARED=false @@ -24,11 +24,11 @@ MUTATION_OUTCOME=NO_MUTATION SANITIZED=yes SECRETS_INCLUDED=no PRIVATE_ADDRESSES_INCLUDED=no -RAW_EVIDENCE_SHA256=8b175d403825bf21d0222a3ecb18a502790378b739bf85e140c62740af58fb89 -SANITIZED_OUTPUT_SHA256=8b175d403825bf21d0222a3ecb18a502790378b739bf85e140c62740af58fb89 +RAW_EVIDENCE_SHA256=884cf15fdd57e2b12e196b57fad6706a2361c6b982cb4f7a622e6c0f4ae3c084 +SANITIZED_OUTPUT_SHA256=884cf15fdd57e2b12e196b57fad6706a2361c6b982cb4f7a622e6c0f4ae3c084 OUTPUT_BEGIN -HOMELAB_RESULT_CONTRACT={"changes_made":false,"command_id":"HOMELAB-CLUSTER-KB-V1-READER-V3-FAKE-DEPENDENCY-CONTRACT-FIX-READ-ONLY-20260805T104000Z","command_rc":0,"mutation_outcome":"NO_MUTATION","output_truncated_in_json":false,"rc":0,"rollback_restored":null,"rollback_started":false,"status":"OK","version":1} -{"changes_made":false,"command_id":"HOMELAB-CLUSTER-KB-V1-READER-V3-FAKE-DEPENDENCY-CONTRACT-FIX-READ-ONLY-20260805T104000Z","command_rc":0,"correction_of_previous_logic_gap":{"exact_fix":"derive manifest keys and access modes from the exact handler AST, test bounded string-list, rich-object-list, mapping, scalar and top-level mapping fixtures, and require two distinct read-only paths including the regex-matched result file","proven_gap":"the prior result proved RESULT_RE fullmatch but all successful production fixtures still read only MANIFEST; the fake manifest container shape did not match the exact Reader dependency contract","regression_test":"an exact handler using a non-default manifest key and dict.items must select a source-derived mapping fixture, read both MANIFEST and the RESULT_RE-matched file, return structured JSON, and keep all real effects blocked"},"error_fingerprint":"f625204be2a45aca4b0e31f18a66146eee3d05ca9cb2d6705b9a821bfc0e993e","latest_exact_result_basis":{"capsule_sha256":"c1bf540b8af3111c34ac23fd1ed5ce1d9115a6dafdfa9f47d8559afe2a9d4789","changes_made":false,"command_id":"HOMELAB-CLUSTER-KB-V1-READER-V3-UNRESOLVED-GLOBAL-BINDING-TRACE-READ-ONLY-20260805T102300Z","command_rc":0,"control_plane_error":null,"error_fingerprint":"1f7e91361842a64a5cf2549e37a5014cd149154bee51dbcd3b7ac635e0924047","mutation_outcome":"NO_MUTATION","next_action":"RUN_ONE_READ_ONLY_READER_V3_FAKE_DEPENDENCY_CONTRACT_FIX","output_complete":true,"output_sha256":"f64e9bbd9b05f8462d1484d5bf437d49efc42cc50a20a6d81ff7a7b46e293ef9","output_truncated_in_json":false,"rc":0,"rollback_restored":null,"rollback_started":false,"root_cause_classification":"READER_V3_FEED_CAUGHT_EXCEPTION_ORIGIN_PROVEN","runner_document_rc":0,"runner_json_sha256":"c67a7a94816c1c30c1b5b7a718139108cc6319c6ae55387e6186db2604ed7778","runner_rc":0,"runner_text_sha256":"fbed4d1ad2f339c147bdc014aa6f4cf279d72ee765be85d10cef8041cfe64563","runner_wrapper_matches_document":true,"status":"OK"},"mutation_outcome":"NO_MUTATION","next_action":"RUN_ONE_READ_ONLY_READER_V3_EXACT_MANIFEST_SCHEMA_TRACE","output_truncated_in_json":false,"owned_listeners":[{"address_class":"private","address_sha256":"fb345731d21c612ed2cb13088c10fd26bac959c79a7634cb55e23ee6bfb428d9","family":"ipv4","inode":"24795","port":18788}],"pre_command_known_error_gate":{"checked":true,"items":[{"id":"candidate-scan-limit-20260805","prevention":"exact files only; bounded AST, simulation, response and output limits"},{"id":"runner-wrapper-mismatch-20260805","prevention":"single compact JSON below 42000 bytes; no raw source, secret or response body"},{"id":"gitea-owner-hardcoded-20260805","prevention":"no repository owner, guest ID or repository URL is assumed"},{"id":"gitea-git-auth-unavailable-20260805","prevention":"no Git or Gitea authentication attempt"},{"id":"pvesh-adapter-context-unreadable-20260805","prevention":"the payload does not call pvesh or any real executor"},{"id":"gitea-process-self-match-20260805","prevention":"Reader identity is bound to exact systemd ControlGroup"},{"id":"sanitize-non-string-attributeerror-20260805","prevention":"sanitize converts Any to str; embedded bool test"},{"id":"reader-path-env-misclassified-as-route-20260805","prevention":"PATH and filesystem-like values are excluded from request candidates"},{"id":"reader-loopback-only-probe-20260805","prevention":"owned listeners are inspected but no network connection is made"},{"id":"reader-capability-not-secret-20260805","prevention":"capability values are redacted before every output projection"},{"id":"reader-systemd-unit-parsed-as-python-20260805","prevention":"only the exact Python server source is parsed or compiled"},{"id":"reader-helper-contract-coverage-gap-20260805","prevention":"all handler methods reachable from do_GET/do_HEAD are traced"},{"id":"reader-capability-root-empty-suffix-404-20260805","prevention":"never infer inventory from capability-only paths; trace the exact post-prefix suffix and response branch with fake executors first"},{"id":"reader-generic-suffix-missed-exact-operation-20260805","prevention":"derive route operations from exact compiled branch constants and intersect them with AST path literals before sandbox execution"},{"id":"reader-feed-500-without-origin-20260805","prevention":"before any live feed request, trace global helper reachability, exact executor/file argument origins and caught sandbox exceptions; health alone never proves inventory safety"},{"id":"reader-sandbox-global-binding-undefined-20260805","prevention":"materialize reachable module globals only through a strict AST allowlist; Path joins and re.compile are allowed, arbitrary calls are blocked, and MANIFEST/RESULTS/RESULT_RE are regression-tested before any live request"},{"id":"reader-negative-control-exception-polluted-classification-20260805","prevention":"negative-control exceptions are reported separately and can never determine the production readiness classification"},{"id":"reader-result-regex-candidate-not-proven-20260805","prevention":"derive one bounded matching filename from the exact compiled RESULT_RE in memory, verify fullmatch, and emit only length and hashes"},{"id":"reader-fake-dependency-contract-incomplete-20260805","prevention":"derive manifest access keys and container shapes from the exact handler AST, test bounded list/object/map/scalar fixtures, and require two distinct read-only file paths before any live request"}]},"prevention_test":{"must_run_before_future_cluster_or_gitea_commands":true,"name":"reader_v3_fake_dependency_contract_preflight","requirements":["verify exact Reader source SHA and systemd identity","materialize reachable module globals only through the strict AST allowlist","require MANIFEST, RESULTS and RESULT_RE to be bound when referenced by the feed path","derive manifest keys and access modes from the exact handler AST","test bounded string-list, rich-list, mapping, scalar and top-level mapping fixture shapes","derive and fullmatch one bounded RESULT_RE filename without emitting regex text or candidate text","keep negative-control exceptions separate from production readiness","require two distinct fake read-only file paths including the result file and structured JSON before any live request","block arbitrary assignment calls and every real network, executor or filesystem mutation","never output capability values, private addresses, raw source, regex text or response bodies"]},"process_environment":{"capability_name_present":true,"names":["HOME","HOMELAB_READER_CAPABILITY","HOMELAB_READER_PORT","INVOCATION_ID","JOURNAL_STREAM","LANG","LOGNAME","MEMORY_PRESSURE_WATCH","MEMORY_PRESSURE_WRITE","PATH","SHELL","SYSTEMD_EXEC_PID","USER"],"secret_name_count":1},"rc":0,"read_only":true,"ready_for_live_inventory_probe":false,"real_executor_calls_made":false,"real_file_mutations_made":false,"real_network_requests_made":false,"result_projection":{"bytes_before_projection":33249,"compacted":false,"max_bytes":36000},"rollback_restored":null,"rollback_started":false,"root_cause_classification":"READER_V3_FEED_CAUGHT_EXCEPTION_ORIGIN_PROVEN","sandbox_global_binding_trace":{"caught_exception_types":["AttributeError"],"live_probe_contract_ready":false,"manifest_contract":{"access_modes":[],"key_count":0,"keys":[],"manifest_variable_count":1,"raw_source_emitted":false},"negative_control_exception_types":["NameError"],"ready_variant_count":0,"ready_variant_names":[],"regex_matching_variant_count":8,"result_file_read_variant_count":0,"tested_profile_names":["control","source-keys-string-list","source-keys-rich-list","source-keys-map","source-keys-scalar","top-level-result-map","manifest-object-results","manifest-list","result-object"],"variant_count":9,"variant_evidence_count":6,"variants":[{"all_effects_read_only":false,"body_bytes":13,"body_sha256":"326ce78e3deb6574ce072bbe8379c0e4deb1cb12c160a0f1a8161f8ddc6f4bd7","caught_exception_count":1,"caught_exceptions":[{"line":60,"message":"name 'MANIFEST' is not defined","message_sha256":"7ffaa9a9433abf55defe29684eca6160f703dc251b5b9ab47ccbd33b3dd3411c","symbol":"handle_reader","type":"NameError"}],"content_type":"text/plain; charset=utf-8","data_source_call_count":0,"distinct_read_path_count":0,"effect_call_count":0,"effects":[],"handler_error_count":0,"json":null,"live_probe_contract_ready":false,"manifest_contract":{"access_modes":[],"key_count":0,"keys":[],"manifest_variable_count":1,"raw_source_emitted":false},"module_projection":{"excluded_assignment_count":6,"excluded_assignment_names":["CAPABILITY","MANIFEST","PORT","RESULTS","RESULT_RE","ROOT"],"include_safe_assignments":false,"included_assignment_count":0,"included_assignment_names":[]},"regex_candidate_contract":{"candidate_fullmatch":false,"candidate_generated":false,"candidate_length":null,"candidate_sha256":null,"compiled_pattern_present":false,"pattern_sha256":null,"pattern_text_emitted":false},"response_header_names":["cache-control","content-length","content-type","expires","pragma","surrogate-control","x-robots-tag"],"result_file_read_proven":false,"route_template":"//feed","source_call_count":3,"source_calls":[{"line":42,"symbol":"do_GET"},{"line":45,"symbol":"handle_reader"},{"line":23,"symbol":"reply"}],"status":500,"variant":"definitions-plus-resolved-scope-control"},{"all_effects_read_only":true,"body_bytes":13,"body_sha256":"326ce78e3deb6574ce072bbe8379c0e4deb1cb12c160a0f1a8161f8ddc6f4bd7","caught_exception_count":1,"caught_exceptions":[{"line":62,"message":"'list' object has no attribute 'get'","message_sha256":"73c2dbfd4deaed7a7fafa1d233c6631ae8d7650f0d5f3bce5a9da6386d739734","symbol":"handle_reader","type":"AttributeError"}],"content_type":"text/plain; charset=utf-8","data_source_call_count":1,"distinct_read_path_count":1,"effect_call_count":1,"effects":[{"kind":"path.read_bytes","mode":"r","origin_type":"file","path_class":"/var","path_sha256":"e3e86f7cca26be90bb29b569ebbc865b3b544ad6f47fb1e976afae301aa02aca","read_only_basis":"file_read","read_only_proven":true}],"handler_error_count":0,"json":null,"live_probe_contract_ready":false,"manifest_contract":{"access_modes":[],"key_count":0,"keys":[],"manifest_variable_count":1,"raw_source_emitted":false},"module_projection":{"excluded_assignment_count":0,"excluded_assignment_names":[],"include_safe_assignments":true,"included_assignment_count":6,"included_assignment_names":["CAPABILITY","MANIFEST","PORT","RESULTS","RESULT_RE","ROOT"]},"regex_candidate_contract":{"candidate_fullmatch":true,"candidate_generated":true,"candidate_length":70,"candidate_sha256":"27a097a71de27938e5281eb61506b29a833e1cb65c0ec59f4d8eaff7108a1b20","compiled_pattern_present":true,"pattern_sha256":"cc0d3d6eeabb57c6262c3e83d6561e587ad62b5f370dab9cbf080b67c533b47c","pattern_text_emitted":false},"response_header_names":["cache-control","content-length","content-type","expires","pragma","surrogate-control","x-robots-tag"],"result_file_read_proven":false,"route_template":"//feed","source_call_count":3,"source_calls":[{"line":42,"symbol":"do_GET"},{"line":45,"symbol":"handle_reader"},{"line":23,"symbol":"reply"}],"status":500,"variant":"manifest-list"},{"all_effects_read_only":true,"body_bytes":413,"body_sha256":"c9a7f661d84dc4e503844d1418a169a221d1d65d7da9f7f8b42753cdb535d8b9","caught_exception_count":0,"caught_exceptions":[],"content_type":"application/json; charset=utf-8","data_source_call_count":1,"distinct_read_path_count":1,"effect_call_count":1,"effects":[{"kind":"path.read_bytes","mode":"r","origin_type":"file","path_class":"/var","path_sha256":"e3e86f7cca26be90bb29b569ebbc865b3b544ad6f47fb1e976afae301aa02aca","read_only_basis":"file_read","read_only_proven":true}],"handler_error_count":0,"json":{"top_key_count":9,"top_keys":["entries","files","generation","items","rc","results","schema","status","version"],"type":"dict"},"live_probe_contract_ready":false,"manifest_contract":{"access_modes":[],"key_count":0,"keys":[],"manifest_variable_count":1,"raw_source_emitted":false},"module_projection":{"excluded_assignment_count":0,"excluded_assignment_names":[],"include_safe_assignments":true,"included_assignment_count":6,"included_assignment_names":["CAPABILITY","MANIFEST","PORT","RESULTS","RESULT_RE","ROOT"]},"regex_candidate_contract":{"candidate_fullmatch":true,"candidate_generated":true,"candidate_length":70,"candidate_sha256":"27a097a71de27938e5281eb61506b29a833e1cb65c0ec59f4d8eaff7108a1b20","compiled_pattern_present":true,"pattern_sha256":"cc0d3d6eeabb57c6262c3e83d6561e587ad62b5f370dab9cbf080b67c533b47c","pattern_text_emitted":false},"response_header_names":["cache-control","content-length","content-type","etag","expires","pragma","surrogate-control","x-homelab-generation","x-robots-tag"],"result_file_read_proven":false,"route_template":"//feed","source_call_count":3,"source_calls":[{"line":42,"symbol":"do_GET"},{"line":45,"symbol":"handle_reader"},{"line":23,"symbol":"reply"}],"status":200,"variant":"source-keys-string-list"},{"all_effects_read_only":true,"body_bytes":2569,"body_sha256":"7f6beff186df6e00795b3d931fbfd0e12eb00bfc2676840f3c2bd43a9fc09631","caught_exception_count":0,"caught_exceptions":[],"content_type":"application/json; charset=utf-8","data_source_call_count":1,"distinct_read_path_count":1,"effect_call_count":1,"effects":[{"kind":"path.read_bytes","mode":"r","origin_type":"file","path_class":"/var","path_sha256":"e3e86f7cca26be90bb29b569ebbc865b3b544ad6f47fb1e976afae301aa02aca","read_only_basis":"file_read","read_only_proven":true}],"handler_error_count":0,"json":{"top_key_count":9,"top_keys":["entries","files","generation","items","rc","results","schema","status","version"],"type":"dict"},"live_probe_contract_ready":false,"manifest_contract":{"access_modes":[],"key_count":0,"keys":[],"manifest_variable_count":1,"raw_source_emitted":false},"module_projection":{"excluded_assignment_count":0,"excluded_assignment_names":[],"include_safe_assignments":true,"included_assignment_count":6,"included_assignment_names":["CAPABILITY","MANIFEST","PORT","RESULTS","RESULT_RE","ROOT"]},"regex_candidate_contract":{"candidate_fullmatch":true,"candidate_generated":true,"candidate_length":70,"candidate_sha256":"27a097a71de27938e5281eb61506b29a833e1cb65c0ec59f4d8eaff7108a1b20","compiled_pattern_present":true,"pattern_sha256":"cc0d3d6eeabb57c6262c3e83d6561e587ad62b5f370dab9cbf080b67c533b47c","pattern_text_emitted":false},"response_header_names":["cache-control","content-length","content-type","etag","expires","pragma","surrogate-control","x-homelab-generation","x-robots-tag"],"result_file_read_proven":false,"route_template":"//feed","source_call_count":3,"source_calls":[{"line":42,"symbol":"do_GET"},{"line":45,"symbol":"handle_reader"},{"line":23,"symbol":"reply"}],"status":200,"variant":"source-keys-rich-list"},{"all_effects_read_only":true,"body_bytes":2861,"body_sha256":"f4c751cad191814cccfebb086aea7c85cd611fd1d47c91def1326919cbe11a0d","caught_exception_count":0,"caught_exceptions":[],"content_type":"application/json; charset=utf-8","data_source_call_count":1,"distinct_read_path_count":1,"effect_call_count":1,"effects":[{"kind":"path.read_bytes","mode":"r","origin_type":"file","path_class":"/var","path_sha256":"e3e86f7cca26be90bb29b569ebbc865b3b544ad6f47fb1e976afae301aa02aca","read_only_basis":"file_read","read_only_proven":true}],"handler_error_count":0,"json":{"top_key_count":9,"top_keys":["entries","files","generation","items","rc","results","schema","status","version"],"type":"dict"},"live_probe_contract_ready":false,"manifest_contract":{"access_modes":[],"key_count":0,"keys":[],"manifest_variable_count":1,"raw_source_emitted":false},"module_projection":{"excluded_assignment_count":0,"excluded_assignment_names":[],"include_safe_assignments":true,"included_assignment_count":6,"included_assignment_names":["CAPABILITY","MANIFEST","PORT","RESULTS","RESULT_RE","ROOT"]},"regex_candidate_contract":{"candidate_fullmatch":true,"candidate_generated":true,"candidate_length":70,"candidate_sha256":"27a097a71de27938e5281eb61506b29a833e1cb65c0ec59f4d8eaff7108a1b20","compiled_pattern_present":true,"pattern_sha256":"cc0d3d6eeabb57c6262c3e83d6561e587ad62b5f370dab9cbf080b67c533b47c","pattern_text_emitted":false},"response_header_names":["cache-control","content-length","content-type","etag","expires","pragma","surrogate-control","x-homelab-generation","x-robots-tag"],"result_file_read_proven":false,"route_template":"//feed","source_call_count":3,"source_calls":[{"line":42,"symbol":"do_GET"},{"line":45,"symbol":"handle_reader"},{"line":23,"symbol":"reply"}],"status":200,"variant":"source-keys-map"},{"all_effects_read_only":true,"body_bytes":405,"body_sha256":"7d51795cb0f426b85ebf5252a4aa8ca2586992c1af24c0929b831d1e315829f6","caught_exception_count":0,"caught_exceptions":[],"content_type":"application/json; charset=utf-8","data_source_call_count":1,"distinct_read_path_count":1,"effect_call_count":1,"effects":[{"kind":"path.read_bytes","mode":"r","origin_type":"file","path_class":"/var","path_sha256":"e3e86f7cca26be90bb29b569ebbc865b3b544ad6f47fb1e976afae301aa02aca","read_only_basis":"file_read","read_only_proven":true}],"handler_error_count":0,"json":{"top_key_count":9,"top_keys":["entries","files","generation","items","rc","results","schema","status","version"],"type":"dict"},"live_probe_contract_ready":false,"manifest_contract":{"access_modes":[],"key_count":0,"keys":[],"manifest_variable_count":1,"raw_source_emitted":false},"module_projection":{"excluded_assignment_count":0,"excluded_assignment_names":[],"include_safe_assignments":true,"included_assignment_count":6,"included_assignment_names":["CAPABILITY","MANIFEST","PORT","RESULTS","RESULT_RE","ROOT"]},"regex_candidate_contract":{"candidate_fullmatch":true,"candidate_generated":true,"candidate_length":70,"candidate_sha256":"27a097a71de27938e5281eb61506b29a833e1cb65c0ec59f4d8eaff7108a1b20","compiled_pattern_present":true,"pattern_sha256":"cc0d3d6eeabb57c6262c3e83d6561e587ad62b5f370dab9cbf080b67c533b47c","pattern_text_emitted":false},"response_header_names":["cache-control","content-length","content-type","etag","expires","pragma","surrogate-control","x-homelab-generation","x-robots-tag"],"result_file_read_proven":false,"route_template":"//feed","source_call_count":3,"source_calls":[{"line":42,"symbol":"do_GET"},{"line":45,"symbol":"handle_reader"},{"line":23,"symbol":"reply"}],"status":200,"variant":"source-keys-scalar"}]},"sanitized_bytecode_branch_trace":{"branch_instruction_count":14,"branch_literal_count":7,"branch_literal_templates":["X-Homelab-Generation","X-Robots-Tag","feed","health","health-v3","include_body","results"],"bytecode_disassembly_emitted":false,"bytecode_literal_count":28,"call_instruction_count":53,"code_object_count":8,"compile_ok":true,"exact_branch_operation_count":2,"exact_compiled_operation_count":2,"operation_suffixes":["feed","health"],"operation_suffixes_sha256":"7b2583665af60a5f63c575c89ecaff1cd688710d29507b6d79238e5d9ca5e58b","raw_source_emitted":false,"source_literal_count":2},"schema":1,"source_files":[{"actual_sha256":"d672b74b390efa787ffd5a090e8c8eea8fdf038075421231a9d9b3053ea926b1","bytes":580,"expected_sha256":"d672b74b390efa787ffd5a090e8c8eea8fdf038075421231a9d9b3053ea926b1","matches_expected":true,"path":"/etc/systemd/system/homelab-reader-v3.service"},{"actual_sha256":"092780e76ff18dfe2920c51f8b97dd09d194fd6cbdb59c3755c9fbf6530f3536","bytes":3539,"expected_sha256":"092780e76ff18dfe2920c51f8b97dd09d194fd6cbdb59c3755c9fbf6530f3536","matches_expected":true,"path":"/usr/local/sbin/homelab-reader-server-v3"}],"source_selection":{"raw_source_emitted":false,"selected_path":"/usr/local/sbin/homelab-reader-server-v3","systemd_unit_excluded":true},"source_state":"MATCH","static_executor_argument_origin_trace":{"all_resolved_origins_read_only":true,"call_edge_count":3,"call_edges":[{"from":"Handler.do_GET","to":"Handler.handle_reader"},{"from":"Handler.do_HEAD","to":"Handler.handle_reader"},{"from":"Handler.handle_reader","to":"Handler.reply"}],"handler_roots":["Handler.do_GET","Handler.do_HEAD"],"raw_source_emitted":false,"reachable_data_origin_count":2,"reachable_data_origins":[{"argument_origin_names":[],"argument_resolved":false,"call":"MANIFEST.read_bytes","evidence_sha256":"3b9f9140c901f027be26f124b8c983ccfddbb3a62b03a416b5e7bfbb19f9fe59","kind":"file","mode":"r","origin_symbol":"Handler.handle_reader","path_class":null,"path_sha256":null,"read_only_basis":"file_read","read_only_proven":true},{"argument_origin_names":[],"argument_resolved":false,"call":"target.read_bytes","evidence_sha256":"aa896c2be567c54cf2da0cf24792da33575188def3c5d95fda4745ed3de4fdaf","kind":"file","mode":"r","origin_symbol":"Handler.handle_reader","path_class":null,"path_sha256":null,"read_only_basis":"file_read","read_only_proven":true}],"reachable_symbol_count":4,"reachable_symbols":["Handler.do_GET","Handler.do_HEAD","Handler.handle_reader","Handler.reply"],"unresolved_origin_count":2},"static_response_trace":{"ast_parse_ok":true,"capability_prefix_count":1,"capability_prefix_templates":["//"],"handler_count":1,"reachable_methods":["do_GET","do_HEAD","handle_reader","reply"],"resolved_scope_names":["CAPABILITY","PORT"],"source_suffix_literal_count":2,"source_suffix_literal_templates":["feed","health"]},"status":"OK","systemd_identity":{"identity_valid":true,"pid_count":1,"probe":{"duration_seconds":0.005,"rc":0,"stderr_bytes":0,"stderr_sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","stderr_truncated":false,"stdout_bytes":375,"stdout_sha256":"49094d65d3787c1479e6408e1fefb7af3758d0fa55e1d37bf22907442aab35e9","stdout_truncated":false},"properties":{"ActiveState":"active","ControlGroup":"/system.slice/homelab-reader-v3.service","ExecStart_present":true,"ExecStart_sha256":"2500fde09569176736b4f2f1dd29d6289b6a6ae6a59b52b6a3c31f797f567379","FragmentPath":"/etc/systemd/system/homelab-reader-v3.service","LoadState":"loaded","MainPID":"1282","SubState":"running"}}} +HOMELAB_RESULT_CONTRACT={"changes_made":false,"command_id":"HOMELAB-SKLADCHIK-VERIFIED-EDGE-RUNTIME-RULES-READ-ONLY-20260805T103630Z","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":false,"based_on":{"capsule_sha256":"9bce781d71280ea835aea24ec46ff7b665392f6068c5097b282e5b548dda491d","command_id":"HOMELAB-SKLADCHIK-EDGE-EXECUTION-PATH-READ-ONLY-20260805T103400Z","output_sha256":"7b13465d38bf723d42fce218d2178e7f914e0d6b84828047df9d8537874c31c2","runner_json_sha256":"4b9a07610e72c293e3773ea68a5a6137f882c1fd34f67d164d5f72ef36f31d71","runner_text_sha256":"46f63ae74532feb3abc7fefc4d27012c9ef45514200cefe442b318b7153a1715"},"changes_made":false,"command_id":"HOMELAB-SKLADCHIK-VERIFIED-EDGE-RUNTIME-RULES-READ-ONLY-20260805T103630Z","command_rc":0,"installed_mapping":[{"bytes":20598,"manifest_match":false,"manifest_paths":[],"mode":"0o755","path":"/usr/local/sbin/skladchik-reports-monitor-supervisor","present":true,"sha256":"bd40ee19ea8b277d52f4240b97d3c79b825c90154272bac8a43004591bd0ddc3"},{"bytes":638,"manifest_match":false,"manifest_paths":[],"mode":"0o755","path":"/usr/local/sbin/skladchik-reports-monitor-cookie-update","present":true,"sha256":"ea2d89ce67893a6d89b29610e4d46e207932ecc157173454585f67890f58810c"},{"bytes":10086,"manifest_match":false,"manifest_paths":[],"mode":"0o700","path":"/srv/homelab-ops/tools/skladchik-cookie-refresh","present":true,"sha256":"1e2f5323abf880f3e8b17bf1f2d0a844c402a9bbf5f24159ed39aaf1d79caef0"}],"mutation_outcome":"NO_MUTATION","next_action":"RESOLVE_EXACT_CR_2026_0007_GIT_OBJECT","output_truncated_in_json":false,"prerequisites":{"repo":{"head":"60f53ea6fe6724196802a46de3de19c7889a51cc","path":"/srv/homelab-ops-worktrees/cr-2026-0015","symbolic_head":"refs/heads/cr-2026-0015-pve03-r8152-rx-ring-canary","verified":true},"supervisor_sha256":"bd40ee19ea8b277d52f4240b97d3c79b825c90154272bac8a43004591bd0ddc3","supervisor_sha_verified":true,"unit_sha256":"e874fb03573b76181f3eb812c7285848e60705923c172a2f102504a7b9100ef7","unit_sha_verified":true},"projection_bytes":3365,"rc":0,"read_only":true,"remote_probe":{"attempted":false,"reason":"verified_source_or_strict_ssh_precondition_failed"},"rollback_restored":null,"rollback_started":false,"root_cause_classification":"VERIFIED_REAUTH_SOURCE_NOT_FOUND","schema":1,"ssh_resolution":{"batch_mode_yes":true,"connect_timeout_15":true,"environment_override_present":false,"known_hosts_entry_found":true,"known_hosts_file_sha256":"88564922338b311be6c646a83651eae19f074b1ffa1ebca36534c56f6974f008","known_hosts_mode":"0o600","known_hosts_path_sha256":"0abf5b78c0f48ff47f3c56429b0464ccd7e22d370784bc4a6404b6be97606308","ssh_config_resolution_rc":0,"ssh_config_resolution_sha256":"12470a063722f6eed27191bd3993d85ef5f8728f875cb01698b0bd503a838b1a","strict_host_key_checking_yes":true,"target_is_private_ip":true,"target_sha256":"59fe7b243d5b6541eadb1aea3da6e2a0025b2e21dda861b6fff4c438e3bfd2eb","user":"debian"},"status":"OK","verified_source":{"candidate_summaries":[{"commit":"d399d24440f948b518761ecfd516521993861b43","entries":23,"manifest_sha256":"40515974b5cb0acac0e1d4c1b6f1eea95f71a9df093304e65c1c66cc9b820356","matched":21,"mismatched_count":0,"missing":2,"sample_failures":[{"path":"tasks/skladchik-reports-monitor-controlled-reauth-v1/assets/pve01/__pycache__/skladchik-reports-monitor-monthly-selftest-watchcpython-313.pyc","reason":"missing"},{"path":"tasks/skladchik-reports-monitor-controlled-reauth-v1/assets/pve01/__pycache__/skladchik-reports-monitor-supervisorcpython-313.pyc","reason":"missing"}]}],"searched_commits":1,"verified":null}} OUTPUT_END CHAT_OUTPUT_END