From b398b9747ef221bc66006b50b74f41b451a0aa02 Mon Sep 17 00:00:00 2001 From: homelab-runtime-publisher Date: Tue, 28 Jul 2026 19:52:11 +0000 Subject: [PATCH] runtime: publish AUTOMATIC-FIXED-RESULT-ANCHOR-PLAN-FIX1-20260728T194512Z --- ...ULT-ANCHOR-PLAN-FIX1-20260728T194512Z.json | 38 +++++++++++++++++++ ...SULT-ANCHOR-PLAN-FIX1-20260728T194512Z.txt | 34 +++++++++++++++++ runtime/latest.json | 20 +++++----- runtime/latest.txt | 18 ++++----- 4 files changed, 91 insertions(+), 19 deletions(-) create mode 100644 runtime/history/AUTOMATIC-FIXED-RESULT-ANCHOR-PLAN-FIX1-20260728T194512Z.json create mode 100644 runtime/history/AUTOMATIC-FIXED-RESULT-ANCHOR-PLAN-FIX1-20260728T194512Z.txt diff --git a/runtime/history/AUTOMATIC-FIXED-RESULT-ANCHOR-PLAN-FIX1-20260728T194512Z.json b/runtime/history/AUTOMATIC-FIXED-RESULT-ANCHOR-PLAN-FIX1-20260728T194512Z.json new file mode 100644 index 0000000..a043d59 --- /dev/null +++ b/runtime/history/AUTOMATIC-FIXED-RESULT-ANCHOR-PLAN-FIX1-20260728T194512Z.json @@ -0,0 +1,38 @@ +{ + "schema_version": 1, + "channel": "homelab-runtime", + "command_id": "AUTOMATIC-FIXED-RESULT-ANCHOR-PLAN-FIX1-20260728T194512Z", + "status": "OK", + "rc": 0, + "host": "pve01", + "mode": "verify", + "component": "automatic-fixed-result-anchor-plan", + "started_at_utc": "2026-07-28T19:51:59Z", + "finished_at_utc": "2026-07-28T19:52:10Z", + "reference_register_checked": true, + "reference_sha256": "5763f2f8edc75fcf6f3951f8c95896d1cc112ceccb6cf5b64a383f540a4deb8e", + "error_register_checked": true, + "error_register_sha256": "24934a2c7fa5c26f6e828583c4aefac7f143b40c0171736ed7571e617d55ab83", + "command_sha256": "caee96c5f93f5da7f3be667c35bf1a84efb963c8c2101bafbea5570d5c77377b", + "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": "f1c7c7873bf66bd08e5ddb3a88c3939db7935cf1f9cbd2180e1da712125c8433", + "sanitized_output_sha256": "f1c7c7873bf66bd08e5ddb3a88c3939db7935cf1f9cbd2180e1da712125c8433", + "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\":\"AUTOMATIC-FIXED-RESULT-ANCHOR-PLAN-FIX1-20260728T194512Z\",\"rollback_restored\":null,\"rollback_started\":false,\"status\":\"OK\",\"version\":1}\n{\"PLAN_SHA256\":\"a8e505c40b43b03cff18748d511d8d3125759e0129a5693c5083cab54d194797\",\"adapter_changed\":false,\"backup_changed\":false,\"changes_made\":false,\"cluster_changed\":false,\"command_id\":\"AUTOMATIC-FIXED-RESULT-ANCHOR-PLAN-FIX1-20260728T194512Z\",\"edge_changed\":false,\"gitea_changed\":false,\"minio_changed\":false,\"observations\":{\"current_lookup_sha256\":\"17f8d2a2ea219cdc02b0f8e821f8054b05c01de1253419b3d23349a2d383889c\",\"current_unit_sha256\":\"4bcc607fd457313f75373ec3d8ec20e7020f13c7cb8a9523fd988a24b0f6609d\",\"live_candidate\":{\"capsule_sha256\":\"c0d917500766b30adfbf177abd8fc0c66373f7df251635c83317781ea1003a7f\",\"command_id\":\"AUTOMATIC-FIXED-RESULT-ANCHOR-PLAN-20260728T192809Z\",\"exact_http\":200,\"fixed_alias_http\":200,\"full_output_present\":true,\"health\":{\"ignored_states\":2,\"invalid_results\":49,\"schema\":1,\"source\":\"local-adapter-state\",\"status\":\"ok\",\"terminal_candidates\":72,\"valid_results\":23},\"health_http\":200,\"result_sequence\":\"42d5d25c4a1a8784e7e49a6f4c158b750a5e757ee5874a36043f0623fef819c0\",\"source\":\"fixed-local-latest-anchor\",\"state_scan\":{\"ignored_states\":2,\"invalid_results\":49,\"valid_results\":23}},\"lookup_service\":{\"Group\":\"homelab-result-lookup\",\"MainPID\":\"1131499\",\"NRestarts\":\"0\",\"User\":\"homelab-result-lookup\"},\"newest_terminal\":{\"capsule_sha256\":\"c0d917500766b30adfbf177abd8fc0c66373f7df251635c83317781ea1003a7f\",\"command_id\":\"AUTOMATIC-FIXED-RESULT-ANCHOR-PLAN-20260728T192809Z\",\"finished_at_utc\":\"2026-07-28T19:35:57.352172+00:00\",\"state_path_sha256\":\"d7574ecf7202f08e6b69481499f1864fb564adbe5900db4917bf03187e31af05\"},\"public_route_before_apply\":{\"body_sha256\":\"d6c66c39e34849b5551282bfa922255d2576fd273a073c2fb65460849c0e936b\",\"http\":404},\"target_lookup_sha256\":\"9979838f12ce27d74bdd554b6ffa409863ffb06c7456d9e71155b87c1598eb60\",\"target_unit_sha256\":\"4a2da42926ff1f8b9ce0d87ff037d2d02ecc9db0e896ef63150e96b6a2edd44a\",\"terminal_state_count\":72},\"plan\":{\"anti_regression\":[\"malformed JSON historical state does not break health\",\"historical terminal state with missing runner does not break latest\",\"newest terminal invalid state returns 409 instead of stale fallback\",\"exact valid result works with unrelated invalid history\",\"flattened and nested contracts both work\",\"full output and PLAN_SHA256 are returned\"],\"automatic_workflow\":[\"User runs any future .hcmd\",\"Adapter writes normal terminal state and runner.json\",\"User writes only \\u0433\\u043e\\u0442\\u043e\\u0432\\u043e\",\"Assistant opens the same permanent fixed URL\",\"Assistant compares command_id/capsule_sha256 and reads full output\"],\"changes_for_apply\":{\"forbidden\":[\"modify Adapter\",\"restart Adapter\",\"modify or restart Portal\",\"modify edge Nginx\",\"modify Gitea\",\"modify MinIO\",\"create ledger\",\"create second runner\",\"modify backups\"],\"modify\":[\"/usr/local/sbin/homelab-result-lookup\",\"/etc/systemd/system/homelab-result-lookup.service\"],\"restart_only\":[\"homelab-result-lookup.service\"]},\"diagnosis\":{\"architectural_defect\":\"The old candidate aborted the entire state scan on the first historical IntegrityError. One unrelated old state or missing runner file therefore made health, latest, feed and every exact lookup unavailable.\",\"confirmed_boundary\":\"Synthetic clean state directory passed; the same candidate did not return health 200 against the real state directory.\",\"fix\":\"Index terminal metadata separately; isolate invalid historical entries; require the newest terminal entry itself to validate; validate exact requests only against the matching state.\",\"observed_failure\":\"LIVE_CANDIDATE_NOT_READY\",\"observed_mutation\":false,\"superseded_command_id\":\"AUTOMATIC-FIXED-RESULT-ANCHOR-PLAN-20260728T192809Z\",\"unavailable_fact\":\"The temporary candidate's final HTTP body and stderr were removed by the PLAN, so the exact offending historical file is not proven.\"},\"existing_public_route\":\"/.well-known/homelab-runtime/result/ prefix already routes to homelab-result-lookup on pve01:18095\",\"fixed_url\":\"https://git.gram1.ru/.well-known/homelab-runtime/result/0000000000000000000000000000000000000000000000000000000000000000/LATEST.json\",\"objective\":\"Provide one permanent public URL that always returns the newest full sanitized terminal result directly from local Adapter state. Do not modify Adapter, Portal, edge Nginx, Gitea, MinIO or backups.\",\"operation\":\"AUTOMATIC_FIXED_RESULT_ANCHOR_FIX1\",\"read_only_plan\":true,\"readback_contract\":{\"cache\":\"no-store\",\"exact_local_results_supported\":true,\"exact_lookup_ignores_unrelated_invalid_history\":true,\"feed_path_supported\":true,\"feed_version\":6,\"fixed_latest_alias\":\"/.well-known/homelab-runtime/result/0000000000000000000000000000000000000000000000000000000000000000/LATEST.json\",\"flattened_contract_supported\":true,\"full_output\":true,\"health_reports_valid_invalid_ignored_counts\":true,\"historical_invalid_entries_isolated\":true,\"integrity_failure_http\":409,\"latest_path_supported\":true,\"methods\":[\"GET\",\"HEAD\"],\"missing_http\":404,\"nested_contract_supported\":true,\"newest_terminal_must_validate\":true,\"source\":\"local-adapter-state\"},\"schema\":1,\"target_sha256\":{\"/etc/systemd/system/homelab-result-lookup.service\":\"4a2da42926ff1f8b9ce0d87ff037d2d02ecc9db0e896ef63150e96b6a2edd44a\",\"/usr/local/sbin/homelab-result-lookup\":\"9979838f12ce27d74bdd554b6ffa409863ffb06c7456d9e71155b87c1598eb60\"}},\"portal_changed\":false,\"private_addresses_included\":false,\"rollback_started\":false,\"sanitized\":true,\"schema\":1,\"secrets_included\":false,\"status\":\"PLAN_READY\"}\n" +} diff --git a/runtime/history/AUTOMATIC-FIXED-RESULT-ANCHOR-PLAN-FIX1-20260728T194512Z.txt b/runtime/history/AUTOMATIC-FIXED-RESULT-ANCHOR-PLAN-FIX1-20260728T194512Z.txt new file mode 100644 index 0000000..4798361 --- /dev/null +++ b/runtime/history/AUTOMATIC-FIXED-RESULT-ANCHOR-PLAN-FIX1-20260728T194512Z.txt @@ -0,0 +1,34 @@ +CHAT_OUTPUT_BEGIN +COMMAND_ID=AUTOMATIC-FIXED-RESULT-ANCHOR-PLAN-FIX1-20260728T194512Z +STATUS=OK +RC=0 +HOST=pve01 +MODE=verify +COMPONENT=automatic-fixed-result-anchor-plan +REFERENCE_REGISTER_CHECK=OK +REFERENCE_SHA256=5763f2f8edc75fcf6f3951f8c95896d1cc112ceccb6cf5b64a383f540a4deb8e +ERROR_REGISTER_CHECK=OK +ERROR_REGISTER_SHA256=24934a2c7fa5c26f6e828583c4aefac7f143b40c0171736ed7571e617d55ab83 +COMMAND_SHA256=caee96c5f93f5da7f3be667c35bf1a84efb963c8c2101bafbea5570d5c77377b +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=f1c7c7873bf66bd08e5ddb3a88c3939db7935cf1f9cbd2180e1da712125c8433 +SANITIZED_OUTPUT_SHA256=f1c7c7873bf66bd08e5ddb3a88c3939db7935cf1f9cbd2180e1da712125c8433 +OUTPUT_BEGIN +HOMELAB_RESULT_CONTRACT={"changes_made":false,"command_id":"AUTOMATIC-FIXED-RESULT-ANCHOR-PLAN-FIX1-20260728T194512Z","rollback_restored":null,"rollback_started":false,"status":"OK","version":1} +{"PLAN_SHA256":"a8e505c40b43b03cff18748d511d8d3125759e0129a5693c5083cab54d194797","adapter_changed":false,"backup_changed":false,"changes_made":false,"cluster_changed":false,"command_id":"AUTOMATIC-FIXED-RESULT-ANCHOR-PLAN-FIX1-20260728T194512Z","edge_changed":false,"gitea_changed":false,"minio_changed":false,"observations":{"current_lookup_sha256":"17f8d2a2ea219cdc02b0f8e821f8054b05c01de1253419b3d23349a2d383889c","current_unit_sha256":"4bcc607fd457313f75373ec3d8ec20e7020f13c7cb8a9523fd988a24b0f6609d","live_candidate":{"capsule_sha256":"c0d917500766b30adfbf177abd8fc0c66373f7df251635c83317781ea1003a7f","command_id":"AUTOMATIC-FIXED-RESULT-ANCHOR-PLAN-20260728T192809Z","exact_http":200,"fixed_alias_http":200,"full_output_present":true,"health":{"ignored_states":2,"invalid_results":49,"schema":1,"source":"local-adapter-state","status":"ok","terminal_candidates":72,"valid_results":23},"health_http":200,"result_sequence":"42d5d25c4a1a8784e7e49a6f4c158b750a5e757ee5874a36043f0623fef819c0","source":"fixed-local-latest-anchor","state_scan":{"ignored_states":2,"invalid_results":49,"valid_results":23}},"lookup_service":{"Group":"homelab-result-lookup","MainPID":"1131499","NRestarts":"0","User":"homelab-result-lookup"},"newest_terminal":{"capsule_sha256":"c0d917500766b30adfbf177abd8fc0c66373f7df251635c83317781ea1003a7f","command_id":"AUTOMATIC-FIXED-RESULT-ANCHOR-PLAN-20260728T192809Z","finished_at_utc":"2026-07-28T19:35:57.352172+00:00","state_path_sha256":"d7574ecf7202f08e6b69481499f1864fb564adbe5900db4917bf03187e31af05"},"public_route_before_apply":{"body_sha256":"d6c66c39e34849b5551282bfa922255d2576fd273a073c2fb65460849c0e936b","http":404},"target_lookup_sha256":"9979838f12ce27d74bdd554b6ffa409863ffb06c7456d9e71155b87c1598eb60","target_unit_sha256":"4a2da42926ff1f8b9ce0d87ff037d2d02ecc9db0e896ef63150e96b6a2edd44a","terminal_state_count":72},"plan":{"anti_regression":["malformed JSON historical state does not break health","historical terminal state with missing runner does not break latest","newest terminal invalid state returns 409 instead of stale fallback","exact valid result works with unrelated invalid history","flattened and nested contracts both work","full output and PLAN_SHA256 are returned"],"automatic_workflow":["User runs any future .hcmd","Adapter writes normal terminal state and runner.json","User writes only \u0433\u043e\u0442\u043e\u0432\u043e","Assistant opens the same permanent fixed URL","Assistant compares command_id/capsule_sha256 and reads full output"],"changes_for_apply":{"forbidden":["modify Adapter","restart Adapter","modify or restart Portal","modify edge Nginx","modify Gitea","modify MinIO","create ledger","create second runner","modify backups"],"modify":["/usr/local/sbin/homelab-result-lookup","/etc/systemd/system/homelab-result-lookup.service"],"restart_only":["homelab-result-lookup.service"]},"diagnosis":{"architectural_defect":"The old candidate aborted the entire state scan on the first historical IntegrityError. One unrelated old state or missing runner file therefore made health, latest, feed and every exact lookup unavailable.","confirmed_boundary":"Synthetic clean state directory passed; the same candidate did not return health 200 against the real state directory.","fix":"Index terminal metadata separately; isolate invalid historical entries; require the newest terminal entry itself to validate; validate exact requests only against the matching state.","observed_failure":"LIVE_CANDIDATE_NOT_READY","observed_mutation":false,"superseded_command_id":"AUTOMATIC-FIXED-RESULT-ANCHOR-PLAN-20260728T192809Z","unavailable_fact":"The temporary candidate's final HTTP body and stderr were removed by the PLAN, so the exact offending historical file is not proven."},"existing_public_route":"/.well-known/homelab-runtime/result/ prefix already routes to homelab-result-lookup on pve01:18095","fixed_url":"https://git.gram1.ru/.well-known/homelab-runtime/result/0000000000000000000000000000000000000000000000000000000000000000/LATEST.json","objective":"Provide one permanent public URL that always returns the newest full sanitized terminal result directly from local Adapter state. Do not modify Adapter, Portal, edge Nginx, Gitea, MinIO or backups.","operation":"AUTOMATIC_FIXED_RESULT_ANCHOR_FIX1","read_only_plan":true,"readback_contract":{"cache":"no-store","exact_local_results_supported":true,"exact_lookup_ignores_unrelated_invalid_history":true,"feed_path_supported":true,"feed_version":6,"fixed_latest_alias":"/.well-known/homelab-runtime/result/0000000000000000000000000000000000000000000000000000000000000000/LATEST.json","flattened_contract_supported":true,"full_output":true,"health_reports_valid_invalid_ignored_counts":true,"historical_invalid_entries_isolated":true,"integrity_failure_http":409,"latest_path_supported":true,"methods":["GET","HEAD"],"missing_http":404,"nested_contract_supported":true,"newest_terminal_must_validate":true,"source":"local-adapter-state"},"schema":1,"target_sha256":{"/etc/systemd/system/homelab-result-lookup.service":"4a2da42926ff1f8b9ce0d87ff037d2d02ecc9db0e896ef63150e96b6a2edd44a","/usr/local/sbin/homelab-result-lookup":"9979838f12ce27d74bdd554b6ffa409863ffb06c7456d9e71155b87c1598eb60"}},"portal_changed":false,"private_addresses_included":false,"rollback_started":false,"sanitized":true,"schema":1,"secrets_included":false,"status":"PLAN_READY"} + +OUTPUT_END +CHAT_OUTPUT_END diff --git a/runtime/latest.json b/runtime/latest.json index 8fec394..a043d59 100644 --- a/runtime/latest.json +++ b/runtime/latest.json @@ -1,19 +1,19 @@ { "schema_version": 1, "channel": "homelab-runtime", - "command_id": "AUTOMATIC-FIXED-RESULT-ANCHOR-PLAN-20260728T192809Z", - "status": "FAIL", - "rc": 1, + "command_id": "AUTOMATIC-FIXED-RESULT-ANCHOR-PLAN-FIX1-20260728T194512Z", + "status": "OK", + "rc": 0, "host": "pve01", "mode": "verify", "component": "automatic-fixed-result-anchor-plan", - "started_at_utc": "2026-07-28T19:35:32Z", - "finished_at_utc": "2026-07-28T19:35:52Z", + "started_at_utc": "2026-07-28T19:51:59Z", + "finished_at_utc": "2026-07-28T19:52:10Z", "reference_register_checked": true, "reference_sha256": "5763f2f8edc75fcf6f3951f8c95896d1cc112ceccb6cf5b64a383f540a4deb8e", "error_register_checked": true, "error_register_sha256": "24934a2c7fa5c26f6e828583c4aefac7f143b40c0171736ed7571e617d55ab83", - "command_sha256": "c2caa915628f95e6432b39a0c2189983c62b316082c8c36dc1d8b87d0eb41d5b", + "command_sha256": "caee96c5f93f5da7f3be667c35bf1a84efb963c8c2101bafbea5570d5c77377b", "duplicate_failed_command_blocked": false, "block_reason": null, "execution_started": true, @@ -21,7 +21,7 @@ "result_contract_valid": true, "result_contract_status": null, "result_contract_error": null, - "command_rc": 1, + "command_rc": 0, "changes_made": false, "rollback_started": false, "rollback_restored": null, @@ -30,9 +30,9 @@ "secrets_included": false, "private_addresses_included": false, "raw_evidence_retained_locally": true, - "raw_evidence_sha256": "0073a4aa0af2630dfd30d452570aea1ad048bdb8bdfb8ff41037adf8b28df10d", - "sanitized_output_sha256": "0073a4aa0af2630dfd30d452570aea1ad048bdb8bdfb8ff41037adf8b28df10d", + "raw_evidence_sha256": "f1c7c7873bf66bd08e5ddb3a88c3939db7935cf1f9cbd2180e1da712125c8433", + "sanitized_output_sha256": "f1c7c7873bf66bd08e5ddb3a88c3939db7935cf1f9cbd2180e1da712125c8433", "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\":\"AUTOMATIC-FIXED-RESULT-ANCHOR-PLAN-20260728T192809Z\",\"rollback_restored\":null,\"rollback_started\":false,\"status\":\"FAIL\",\"version\":1}\n{\"PLAN_SHA256\":\"9707bf0dd6e645518e0a807283d40d86ad2a71c9b89b967c02f489e13317f8be\",\"adapter_changed\":false,\"backup_changed\":false,\"changes_made\":false,\"cluster_changed\":false,\"command_id\":\"AUTOMATIC-FIXED-RESULT-ANCHOR-PLAN-20260728T192809Z\",\"edge_changed\":false,\"failure\":\"LIVE_CANDIDATE_NOT_READY\",\"failure_type\":\"PlanError\",\"gitea_changed\":false,\"minio_changed\":false,\"portal_changed\":false,\"private_addresses_included\":false,\"rollback_started\":false,\"sanitized\":true,\"schema\":1,\"secrets_included\":false,\"status\":\"BLOCKED\"}\n" + "output": "HOMELAB_RESULT_CONTRACT={\"changes_made\":false,\"command_id\":\"AUTOMATIC-FIXED-RESULT-ANCHOR-PLAN-FIX1-20260728T194512Z\",\"rollback_restored\":null,\"rollback_started\":false,\"status\":\"OK\",\"version\":1}\n{\"PLAN_SHA256\":\"a8e505c40b43b03cff18748d511d8d3125759e0129a5693c5083cab54d194797\",\"adapter_changed\":false,\"backup_changed\":false,\"changes_made\":false,\"cluster_changed\":false,\"command_id\":\"AUTOMATIC-FIXED-RESULT-ANCHOR-PLAN-FIX1-20260728T194512Z\",\"edge_changed\":false,\"gitea_changed\":false,\"minio_changed\":false,\"observations\":{\"current_lookup_sha256\":\"17f8d2a2ea219cdc02b0f8e821f8054b05c01de1253419b3d23349a2d383889c\",\"current_unit_sha256\":\"4bcc607fd457313f75373ec3d8ec20e7020f13c7cb8a9523fd988a24b0f6609d\",\"live_candidate\":{\"capsule_sha256\":\"c0d917500766b30adfbf177abd8fc0c66373f7df251635c83317781ea1003a7f\",\"command_id\":\"AUTOMATIC-FIXED-RESULT-ANCHOR-PLAN-20260728T192809Z\",\"exact_http\":200,\"fixed_alias_http\":200,\"full_output_present\":true,\"health\":{\"ignored_states\":2,\"invalid_results\":49,\"schema\":1,\"source\":\"local-adapter-state\",\"status\":\"ok\",\"terminal_candidates\":72,\"valid_results\":23},\"health_http\":200,\"result_sequence\":\"42d5d25c4a1a8784e7e49a6f4c158b750a5e757ee5874a36043f0623fef819c0\",\"source\":\"fixed-local-latest-anchor\",\"state_scan\":{\"ignored_states\":2,\"invalid_results\":49,\"valid_results\":23}},\"lookup_service\":{\"Group\":\"homelab-result-lookup\",\"MainPID\":\"1131499\",\"NRestarts\":\"0\",\"User\":\"homelab-result-lookup\"},\"newest_terminal\":{\"capsule_sha256\":\"c0d917500766b30adfbf177abd8fc0c66373f7df251635c83317781ea1003a7f\",\"command_id\":\"AUTOMATIC-FIXED-RESULT-ANCHOR-PLAN-20260728T192809Z\",\"finished_at_utc\":\"2026-07-28T19:35:57.352172+00:00\",\"state_path_sha256\":\"d7574ecf7202f08e6b69481499f1864fb564adbe5900db4917bf03187e31af05\"},\"public_route_before_apply\":{\"body_sha256\":\"d6c66c39e34849b5551282bfa922255d2576fd273a073c2fb65460849c0e936b\",\"http\":404},\"target_lookup_sha256\":\"9979838f12ce27d74bdd554b6ffa409863ffb06c7456d9e71155b87c1598eb60\",\"target_unit_sha256\":\"4a2da42926ff1f8b9ce0d87ff037d2d02ecc9db0e896ef63150e96b6a2edd44a\",\"terminal_state_count\":72},\"plan\":{\"anti_regression\":[\"malformed JSON historical state does not break health\",\"historical terminal state with missing runner does not break latest\",\"newest terminal invalid state returns 409 instead of stale fallback\",\"exact valid result works with unrelated invalid history\",\"flattened and nested contracts both work\",\"full output and PLAN_SHA256 are returned\"],\"automatic_workflow\":[\"User runs any future .hcmd\",\"Adapter writes normal terminal state and runner.json\",\"User writes only \\u0433\\u043e\\u0442\\u043e\\u0432\\u043e\",\"Assistant opens the same permanent fixed URL\",\"Assistant compares command_id/capsule_sha256 and reads full output\"],\"changes_for_apply\":{\"forbidden\":[\"modify Adapter\",\"restart Adapter\",\"modify or restart Portal\",\"modify edge Nginx\",\"modify Gitea\",\"modify MinIO\",\"create ledger\",\"create second runner\",\"modify backups\"],\"modify\":[\"/usr/local/sbin/homelab-result-lookup\",\"/etc/systemd/system/homelab-result-lookup.service\"],\"restart_only\":[\"homelab-result-lookup.service\"]},\"diagnosis\":{\"architectural_defect\":\"The old candidate aborted the entire state scan on the first historical IntegrityError. One unrelated old state or missing runner file therefore made health, latest, feed and every exact lookup unavailable.\",\"confirmed_boundary\":\"Synthetic clean state directory passed; the same candidate did not return health 200 against the real state directory.\",\"fix\":\"Index terminal metadata separately; isolate invalid historical entries; require the newest terminal entry itself to validate; validate exact requests only against the matching state.\",\"observed_failure\":\"LIVE_CANDIDATE_NOT_READY\",\"observed_mutation\":false,\"superseded_command_id\":\"AUTOMATIC-FIXED-RESULT-ANCHOR-PLAN-20260728T192809Z\",\"unavailable_fact\":\"The temporary candidate's final HTTP body and stderr were removed by the PLAN, so the exact offending historical file is not proven.\"},\"existing_public_route\":\"/.well-known/homelab-runtime/result/ prefix already routes to homelab-result-lookup on pve01:18095\",\"fixed_url\":\"https://git.gram1.ru/.well-known/homelab-runtime/result/0000000000000000000000000000000000000000000000000000000000000000/LATEST.json\",\"objective\":\"Provide one permanent public URL that always returns the newest full sanitized terminal result directly from local Adapter state. Do not modify Adapter, Portal, edge Nginx, Gitea, MinIO or backups.\",\"operation\":\"AUTOMATIC_FIXED_RESULT_ANCHOR_FIX1\",\"read_only_plan\":true,\"readback_contract\":{\"cache\":\"no-store\",\"exact_local_results_supported\":true,\"exact_lookup_ignores_unrelated_invalid_history\":true,\"feed_path_supported\":true,\"feed_version\":6,\"fixed_latest_alias\":\"/.well-known/homelab-runtime/result/0000000000000000000000000000000000000000000000000000000000000000/LATEST.json\",\"flattened_contract_supported\":true,\"full_output\":true,\"health_reports_valid_invalid_ignored_counts\":true,\"historical_invalid_entries_isolated\":true,\"integrity_failure_http\":409,\"latest_path_supported\":true,\"methods\":[\"GET\",\"HEAD\"],\"missing_http\":404,\"nested_contract_supported\":true,\"newest_terminal_must_validate\":true,\"source\":\"local-adapter-state\"},\"schema\":1,\"target_sha256\":{\"/etc/systemd/system/homelab-result-lookup.service\":\"4a2da42926ff1f8b9ce0d87ff037d2d02ecc9db0e896ef63150e96b6a2edd44a\",\"/usr/local/sbin/homelab-result-lookup\":\"9979838f12ce27d74bdd554b6ffa409863ffb06c7456d9e71155b87c1598eb60\"}},\"portal_changed\":false,\"private_addresses_included\":false,\"rollback_started\":false,\"sanitized\":true,\"schema\":1,\"secrets_included\":false,\"status\":\"PLAN_READY\"}\n" } diff --git a/runtime/latest.txt b/runtime/latest.txt index 0b51527..4798361 100644 --- a/runtime/latest.txt +++ b/runtime/latest.txt @@ -1,7 +1,7 @@ CHAT_OUTPUT_BEGIN -COMMAND_ID=AUTOMATIC-FIXED-RESULT-ANCHOR-PLAN-20260728T192809Z -STATUS=FAIL -RC=1 +COMMAND_ID=AUTOMATIC-FIXED-RESULT-ANCHOR-PLAN-FIX1-20260728T194512Z +STATUS=OK +RC=0 HOST=pve01 MODE=verify COMPONENT=automatic-fixed-result-anchor-plan @@ -9,14 +9,14 @@ REFERENCE_REGISTER_CHECK=OK REFERENCE_SHA256=5763f2f8edc75fcf6f3951f8c95896d1cc112ceccb6cf5b64a383f540a4deb8e ERROR_REGISTER_CHECK=OK ERROR_REGISTER_SHA256=24934a2c7fa5c26f6e828583c4aefac7f143b40c0171736ed7571e617d55ab83 -COMMAND_SHA256=c2caa915628f95e6432b39a0c2189983c62b316082c8c36dc1d8b87d0eb41d5b +COMMAND_SHA256=caee96c5f93f5da7f3be667c35bf1a84efb963c8c2101bafbea5570d5c77377b 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=1 +COMMAND_RC=0 CHANGES_MADE=false ROLLBACK_STARTED=false ROLLBACK_RESTORED=null @@ -24,11 +24,11 @@ MUTATION_OUTCOME=NO_MUTATION SANITIZED=yes SECRETS_INCLUDED=no PRIVATE_ADDRESSES_INCLUDED=no -RAW_EVIDENCE_SHA256=0073a4aa0af2630dfd30d452570aea1ad048bdb8bdfb8ff41037adf8b28df10d -SANITIZED_OUTPUT_SHA256=0073a4aa0af2630dfd30d452570aea1ad048bdb8bdfb8ff41037adf8b28df10d +RAW_EVIDENCE_SHA256=f1c7c7873bf66bd08e5ddb3a88c3939db7935cf1f9cbd2180e1da712125c8433 +SANITIZED_OUTPUT_SHA256=f1c7c7873bf66bd08e5ddb3a88c3939db7935cf1f9cbd2180e1da712125c8433 OUTPUT_BEGIN -HOMELAB_RESULT_CONTRACT={"changes_made":false,"command_id":"AUTOMATIC-FIXED-RESULT-ANCHOR-PLAN-20260728T192809Z","rollback_restored":null,"rollback_started":false,"status":"FAIL","version":1} -{"PLAN_SHA256":"9707bf0dd6e645518e0a807283d40d86ad2a71c9b89b967c02f489e13317f8be","adapter_changed":false,"backup_changed":false,"changes_made":false,"cluster_changed":false,"command_id":"AUTOMATIC-FIXED-RESULT-ANCHOR-PLAN-20260728T192809Z","edge_changed":false,"failure":"LIVE_CANDIDATE_NOT_READY","failure_type":"PlanError","gitea_changed":false,"minio_changed":false,"portal_changed":false,"private_addresses_included":false,"rollback_started":false,"sanitized":true,"schema":1,"secrets_included":false,"status":"BLOCKED"} +HOMELAB_RESULT_CONTRACT={"changes_made":false,"command_id":"AUTOMATIC-FIXED-RESULT-ANCHOR-PLAN-FIX1-20260728T194512Z","rollback_restored":null,"rollback_started":false,"status":"OK","version":1} +{"PLAN_SHA256":"a8e505c40b43b03cff18748d511d8d3125759e0129a5693c5083cab54d194797","adapter_changed":false,"backup_changed":false,"changes_made":false,"cluster_changed":false,"command_id":"AUTOMATIC-FIXED-RESULT-ANCHOR-PLAN-FIX1-20260728T194512Z","edge_changed":false,"gitea_changed":false,"minio_changed":false,"observations":{"current_lookup_sha256":"17f8d2a2ea219cdc02b0f8e821f8054b05c01de1253419b3d23349a2d383889c","current_unit_sha256":"4bcc607fd457313f75373ec3d8ec20e7020f13c7cb8a9523fd988a24b0f6609d","live_candidate":{"capsule_sha256":"c0d917500766b30adfbf177abd8fc0c66373f7df251635c83317781ea1003a7f","command_id":"AUTOMATIC-FIXED-RESULT-ANCHOR-PLAN-20260728T192809Z","exact_http":200,"fixed_alias_http":200,"full_output_present":true,"health":{"ignored_states":2,"invalid_results":49,"schema":1,"source":"local-adapter-state","status":"ok","terminal_candidates":72,"valid_results":23},"health_http":200,"result_sequence":"42d5d25c4a1a8784e7e49a6f4c158b750a5e757ee5874a36043f0623fef819c0","source":"fixed-local-latest-anchor","state_scan":{"ignored_states":2,"invalid_results":49,"valid_results":23}},"lookup_service":{"Group":"homelab-result-lookup","MainPID":"1131499","NRestarts":"0","User":"homelab-result-lookup"},"newest_terminal":{"capsule_sha256":"c0d917500766b30adfbf177abd8fc0c66373f7df251635c83317781ea1003a7f","command_id":"AUTOMATIC-FIXED-RESULT-ANCHOR-PLAN-20260728T192809Z","finished_at_utc":"2026-07-28T19:35:57.352172+00:00","state_path_sha256":"d7574ecf7202f08e6b69481499f1864fb564adbe5900db4917bf03187e31af05"},"public_route_before_apply":{"body_sha256":"d6c66c39e34849b5551282bfa922255d2576fd273a073c2fb65460849c0e936b","http":404},"target_lookup_sha256":"9979838f12ce27d74bdd554b6ffa409863ffb06c7456d9e71155b87c1598eb60","target_unit_sha256":"4a2da42926ff1f8b9ce0d87ff037d2d02ecc9db0e896ef63150e96b6a2edd44a","terminal_state_count":72},"plan":{"anti_regression":["malformed JSON historical state does not break health","historical terminal state with missing runner does not break latest","newest terminal invalid state returns 409 instead of stale fallback","exact valid result works with unrelated invalid history","flattened and nested contracts both work","full output and PLAN_SHA256 are returned"],"automatic_workflow":["User runs any future .hcmd","Adapter writes normal terminal state and runner.json","User writes only \u0433\u043e\u0442\u043e\u0432\u043e","Assistant opens the same permanent fixed URL","Assistant compares command_id/capsule_sha256 and reads full output"],"changes_for_apply":{"forbidden":["modify Adapter","restart Adapter","modify or restart Portal","modify edge Nginx","modify Gitea","modify MinIO","create ledger","create second runner","modify backups"],"modify":["/usr/local/sbin/homelab-result-lookup","/etc/systemd/system/homelab-result-lookup.service"],"restart_only":["homelab-result-lookup.service"]},"diagnosis":{"architectural_defect":"The old candidate aborted the entire state scan on the first historical IntegrityError. One unrelated old state or missing runner file therefore made health, latest, feed and every exact lookup unavailable.","confirmed_boundary":"Synthetic clean state directory passed; the same candidate did not return health 200 against the real state directory.","fix":"Index terminal metadata separately; isolate invalid historical entries; require the newest terminal entry itself to validate; validate exact requests only against the matching state.","observed_failure":"LIVE_CANDIDATE_NOT_READY","observed_mutation":false,"superseded_command_id":"AUTOMATIC-FIXED-RESULT-ANCHOR-PLAN-20260728T192809Z","unavailable_fact":"The temporary candidate's final HTTP body and stderr were removed by the PLAN, so the exact offending historical file is not proven."},"existing_public_route":"/.well-known/homelab-runtime/result/ prefix already routes to homelab-result-lookup on pve01:18095","fixed_url":"https://git.gram1.ru/.well-known/homelab-runtime/result/0000000000000000000000000000000000000000000000000000000000000000/LATEST.json","objective":"Provide one permanent public URL that always returns the newest full sanitized terminal result directly from local Adapter state. Do not modify Adapter, Portal, edge Nginx, Gitea, MinIO or backups.","operation":"AUTOMATIC_FIXED_RESULT_ANCHOR_FIX1","read_only_plan":true,"readback_contract":{"cache":"no-store","exact_local_results_supported":true,"exact_lookup_ignores_unrelated_invalid_history":true,"feed_path_supported":true,"feed_version":6,"fixed_latest_alias":"/.well-known/homelab-runtime/result/0000000000000000000000000000000000000000000000000000000000000000/LATEST.json","flattened_contract_supported":true,"full_output":true,"health_reports_valid_invalid_ignored_counts":true,"historical_invalid_entries_isolated":true,"integrity_failure_http":409,"latest_path_supported":true,"methods":["GET","HEAD"],"missing_http":404,"nested_contract_supported":true,"newest_terminal_must_validate":true,"source":"local-adapter-state"},"schema":1,"target_sha256":{"/etc/systemd/system/homelab-result-lookup.service":"4a2da42926ff1f8b9ce0d87ff037d2d02ecc9db0e896ef63150e96b6a2edd44a","/usr/local/sbin/homelab-result-lookup":"9979838f12ce27d74bdd554b6ffa409863ffb06c7456d9e71155b87c1598eb60"}},"portal_changed":false,"private_addresses_included":false,"rollback_started":false,"sanitized":true,"schema":1,"secrets_included":false,"status":"PLAN_READY"} OUTPUT_END CHAT_OUTPUT_END