35 lines
8.5 KiB
Plaintext
35 lines
8.5 KiB
Plaintext
CHAT_OUTPUT_BEGIN
|
|
COMMAND_ID=HOMELAB-CLUSTER-KB-V1-REVERSE-PROXY-UPSTREAM-ROUTE-PROBE-READ-ONLY-20260805T115700Z
|
|
STATUS=OK
|
|
RC=0
|
|
HOST=pve01
|
|
MODE=verify
|
|
COMPONENT=cluster-knowledge-base-error-system
|
|
REFERENCE_REGISTER_CHECK=OK
|
|
REFERENCE_SHA256=5763f2f8edc75fcf6f3951f8c95896d1cc112ceccb6cf5b64a383f540a4deb8e
|
|
ERROR_REGISTER_CHECK=OK
|
|
ERROR_REGISTER_SHA256=24934a2c7fa5c26f6e828583c4aefac7f143b40c0171736ed7571e617d55ab83
|
|
COMMAND_SHA256=6008b5665a1810d0e8cb4963cde9f129f26a4ac489e4f9908bdba060fc4f12ed
|
|
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=504ad5dbad1e41f319c56995c907211bf1ea6e8bc30f6a17835c05023ffc4723
|
|
SANITIZED_OUTPUT_SHA256=504ad5dbad1e41f319c56995c907211bf1ea6e8bc30f6a17835c05023ffc4723
|
|
OUTPUT_BEGIN
|
|
HOMELAB_RESULT_CONTRACT={"changes_made":false,"command_id":"HOMELAB-CLUSTER-KB-V1-REVERSE-PROXY-UPSTREAM-ROUTE-PROBE-READ-ONLY-20260805T115700Z","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-REVERSE-PROXY-UPSTREAM-ROUTE-PROBE-READ-ONLY-20260805T115700Z","command_rc":0,"correction_of_previous_logic_gap":{"exact_fix":"discover exact reverse-proxy process identity, read only bounded configs in that process root, parse only the virtual host for git.gram1.ru, hash upstream hosts, and match raw addresses only in memory against authoritative guest configs","proven_gap":"Gitea was not named in any authoritative Proxmox guest config and the only Reader marker was a command DETAIL false positive","regression_test":"an unrelated virtual host and a payload filename containing nginx must not become a route or proxy process; private upstream addresses must never be emitted"},"error_fingerprint":"d0e3f6d1868de96b69186b1648ad45421abeb47f2efeedf75d7adf02ab97c1bf","latest_exact_result_basis":{"capsule_sha256":"b3236e1ad03b75597773c754d2172df1f1164e451955c24f22187aa0671bffdb","changes_made":false,"command_id":"HOMELAB-CLUSTER-KB-V1-READER-V3-GITEA-MARKER-CONTEXT-TRACE-READ-ONLY-20260805T115000Z","command_rc":0,"control_plane_error":null,"error_fingerprint":"22f541d7c39d978e8c8cb172f68cd9ced96c2f0723892947f11e67b87473593e","mutation_outcome":"NO_MUTATION","next_action":"RUN_ONE_READ_ONLY_REVERSE_PROXY_UPSTREAM_ROUTE_PROBE","output_complete":true,"output_sha256":"cd4b8c23af7c683ad7b7bdaea844c82697c3f2d9b26bc2a2733cd1bce08096b2","output_truncated_in_json":false,"rc":0,"rollback_restored":null,"rollback_started":false,"root_cause_classification":"READER_GITEA_MARKER_PROVEN_COMMAND_DETAIL_FALSE_POSITIVE_AND_PVE_CONFIG_HAS_NO_STRONG_GITEA_CANDIDATE","runner_document_rc":0,"runner_json_sha256":"e570141891c09b359b02e47292fce18595c886c4c47e3963fd48eece5bd50dc9","runner_rc":0,"runner_text_sha256":"4087836064ec9de4b62ca36bc31d52ddde6a3067e1a791e99d06ed0450207aac","runner_wrapper_matches_document":true,"status":"OK"},"mutation_outcome":"NO_MUTATION","network_requests_made":false,"next_action":"RUN_ONE_READ_ONLY_EXTERNAL_DNS_TLS_ROUTE_PROBE","output_truncated_in_json":false,"pre_command_known_error_gate":{"checked":true,"count":25,"ids":["candidate-scan-limit-20260805","runner-wrapper-mismatch-20260805","gitea-owner-hardcoded-20260805","gitea-git-auth-unavailable-20260805","pvesh-adapter-context-unreadable-20260805","gitea-process-self-match-20260805","sanitize-non-string-attributeerror-20260805","reader-path-env-misclassified-as-route-20260805","reader-loopback-only-probe-20260805","reader-capability-not-secret-20260805","reader-systemd-unit-parsed-as-python-20260805","reader-helper-contract-coverage-gap-20260805","reader-capability-root-empty-suffix-404-20260805","reader-generic-suffix-missed-exact-operation-20260805","reader-feed-500-without-origin-20260805","reader-sandbox-global-binding-undefined-20260805","reader-negative-control-exception-polluted-classification-20260805","reader-result-regex-candidate-not-proven-20260805","reader-fake-dependency-contract-incomplete-20260805","reader-manifest-alias-dataflow-gap-20260805","reader-result-output-bound-after-compaction-20260805","reader-result-reference-invalid-json-assumption-20260805","reader-file-backed-feed-serves-manifest-only-20260805","reader-exact-text-gitea-marker-context-unmapped-20260805","reader-gitea-marker-detail-false-positive-pve-no-candidate-20260805"]},"prevention_test":{"must_run_before_future_gitea_commands":true,"name":"reverse_proxy_gitea_route_preflight","requirements":["verify exact prior result identity and complete known-error register","identify proxies by exact comm/executable identity rather than command-line substring","read only bounded files beneath the validated process root","bind route extraction to the exact git.gram1.ru virtual host","hash every upstream host and keep private addresses only in memory","map upstreams to authoritative Proxmox guest configs before selecting a guest","emit no raw proxy configs, capability values, credentials or private addresses","perform no network request, executor call or file mutation"]},"private_addresses_emitted":false,"proxmox_guest_inventory":{"authoritative":true,"directories":[{"config_count":2,"exists":true,"is_dir":true,"path_sha256":"85d62f77f8b9ba3cdac954284e55c6dfcd2c07b77af185d1bc214b31d60208ff","type":"lxc"},{"config_count":3,"exists":true,"is_dir":true,"path_sha256":"b06e4b106f654239d78d235ca09e58a1389f224654896371b02ff445b0f71cbc","type":"qemu"}],"errors":[],"guest_count":5,"guests":[{"address_count":1,"config_bytes":325,"config_sha256":"f2a08670f1be05c8bd9ec036faa8ec4468fd224073c3d7ecf2973dda16b9f9db","name":"dns1","onboot":true,"template":false,"type":"lxc","vmid":110},{"address_count":1,"config_bytes":329,"config_sha256":"bfec6415f6ce90b1cae9957f7c1033bf62bfca3600beb696cedff76e693e1786","name":"unbound1","onboot":true,"template":false,"type":"lxc","vmid":112},{"address_count":1,"config_bytes":2425,"config_sha256":"f55cd4d441a3fd4df985cd25170533ba7cfa0a3d184271bcd8ecbf7b2257304c","name":"nextcloud","onboot":true,"template":false,"type":"qemu","vmid":150},{"address_count":1,"config_bytes":727,"config_sha256":"7e344ce8d2bbee4be2ad293826e22a0b952bde209060e8a1c1fa5dc864acaeac","name":"core-apps","onboot":true,"template":false,"type":"qemu","vmid":170},{"address_count":1,"config_bytes":727,"config_sha256":"9af776483ab9694b1a61acb71ff8ebe670613ebc69884178924a8f5c68a71245","name":"monitoring","onboot":true,"template":false,"type":"qemu","vmid":171}],"lxc_count":2,"private_addresses_emitted":false,"qemu_count":3,"raw_config_emitted":false,"route":"proc_pid_root_etc_pve"},"pvedaemon_identity":{"probe":{"duration_seconds":0.006,"rc":0,"stderr_bytes":0,"stderr_sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","stderr_truncated":false,"stdout_bytes":284,"stdout_sha256":"8193a63509e825e5d63983689cfa0c365fef9a840ff92983113df47795c763b4","stdout_truncated":false},"process":{"cmdline_sha256":"2d75d3bd3df840fb7ca7a112deef143dd688a9800fb69a76dd6db669366d8228","comm":"pvedaemon","exe_basename":"perl","exe_sha256":"615f227d035819edeaceedd36514e1f73309437bdcc14cb7e2e722473a0c9b22","ns_ipc":"ipc:[4026531839]","ns_mnt":"mnt:[4026531832]","ns_net":"net:[4026531833]","pid":1799,"valid":true},"properties":{"ActiveState":"active","ExecStart_present":true,"ExecStart_sha256":"a3150f62d0b148854d825fc1ad00044d56247d9a482d99c87460dd73434f094e","FragmentPath":"/usr/lib/systemd/system/pvedaemon.service","LoadState":"loaded","MainPID":"1799","SubState":"running"},"unit":"pvedaemon.service"},"raw_proxy_configs_emitted":false,"rc":0,"read_only":true,"ready_for_gitea_guest_storage_probe":false,"real_executor_calls_made":false,"real_file_mutations_made":false,"regression_tests":{"checks":{"caddy_unique_route":true,"nginx_unique_route":true,"private_address_not_emitted":true,"self_match_uses_exact_process_identity":true,"unrelated_domain_blocked":true},"passed":true},"result_projection":{"bytes":7269,"max_bytes":30000,"steps":[]},"reverse_proxy_domain_config_match_count":0,"reverse_proxy_process_count":0,"reverse_proxy_processes":[],"reverse_proxy_route_count":0,"reverse_proxy_routes":[],"reverse_proxy_unique_guest_match_count":0,"reverse_proxy_unique_upstream_count":0,"rollback_restored":null,"rollback_started":false,"root_cause_classification":"NO_REVERSE_PROXY_RUNTIME_FOUND_IN_HOST_VISIBLE_PROCESS_TREE","schema":1,"status":"OK"}
|
|
|
|
OUTPUT_END
|
|
CHAT_OUTPUT_END
|