diff --git a/runtime/history/RUNNER-LINKED-REMOVAL-PLAN-FIX1-20260726T201500Z.json b/runtime/history/RUNNER-LINKED-REMOVAL-PLAN-FIX1-20260726T201500Z.json new file mode 100644 index 0000000..386ae92 --- /dev/null +++ b/runtime/history/RUNNER-LINKED-REMOVAL-PLAN-FIX1-20260726T201500Z.json @@ -0,0 +1,30 @@ +{ + "schema_version": 1, + "channel": "homelab-runtime", + "command_id": "RUNNER-LINKED-REMOVAL-PLAN-FIX1-20260726T201500Z", + "status": "OK", + "rc": 0, + "host": "pve01", + "mode": "verify", + "component": "runner", + "started_at_utc": "2026-07-26T20:09:58Z", + "finished_at_utc": "2026-07-26T20:09:58Z", + "reference_register_checked": true, + "reference_sha256": "5763f2f8edc75fcf6f3951f8c95896d1cc112ceccb6cf5b64a383f540a4deb8e", + "error_register_checked": true, + "error_register_sha256": "24934a2c7fa5c26f6e828583c4aefac7f143b40c0171736ed7571e617d55ab83", + "command_sha256": "1524c3bd78c1ad70a1388eac6823fa70babf465bf01494e8e29b1633eea023ca", + "duplicate_failed_command_blocked": false, + "block_reason": null, + "execution_started": true, + "changes_made": false, + "sanitized": true, + "secrets_included": false, + "private_addresses_included": false, + "raw_evidence_retained_locally": true, + "raw_evidence_sha256": "28c62a8739557f52c670c53980379fa6bea3b97baf3a90cf44695b75a65e5abf", + "sanitized_output_sha256": "28c62a8739557f52c670c53980379fa6bea3b97baf3a90cf44695b75a65e5abf", + "output_truncated_in_json": false, + "full_sanitized_output_url": "https://git.gram1.ru/.well-known/homelab-runtime/latest.txt", + "output": "RUNNER_LINKED_REMOVAL_PLAN=PASS\nPLAN_SHA256=8cb775587817330dd12296c2f17665110353bcd090330d9bef36e4b61a23541e\n{\"PLAN_SHA256\":\"8cb775587817330dd12296c2f17665110353bcd090330d9bef36e4b61a23541e\",\"anti_regression\":{\"status\":\"PASS\",\"tests\":{\"canonical_not_linked\":true,\"exact_linked_token_detected\":true,\"historical_reference_not_live\":true,\"redactor_line_boundary\":true}},\"backup_changed\":false,\"canonical_callers\":{\"/usr/local/sbin/homelab-command-adapter\":{\"references_canonical\":true,\"references_linked\":false,\"sha256\":\"f2410cd328e2837b99e8ce4a28e25cb031a6bdd596d0286ac77a1822ef1cecd0\"},\"/usr/local/sbin/homelab-context-refresh\":{\"references_canonical\":true,\"references_linked\":false,\"sha256\":\"98faa546f7a612f0d1f439d637c1293355371592afbcadf6cae0ee05b3552ef8\"}},\"changes_made\":false,\"checked_at_utc\":\"2026-07-26T20:09:58.563384+00:00\",\"cluster_changed\":false,\"command_id\":\"RUNNER-LINKED-REMOVAL-PLAN-FIX1-20260726T201500Z\",\"file_state\":{\"canonical\":{\"device\":64513,\"group\":\"root\",\"inode\":5148520,\"mode\":\"0750\",\"nlink\":1,\"owner\":\"root\",\"path\":\"/usr/local/sbin/homelab-chat-run\",\"regular\":true,\"sha256\":\"2a88defef9517f89bc60934dce82097f8e316b08af9417e95167ea5d759a10d9\",\"size\":11864},\"linked\":{\"device\":64513,\"group\":\"root\",\"inode\":5148536,\"mode\":\"0755\",\"nlink\":1,\"owner\":\"root\",\"path\":\"/usr/local/sbin/homelab-chat-run-linked\",\"regular\":true,\"sha256\":\"5e8725e129fd2055b36fe2fae13fc95fc4b3271074a0e0d4bb7347e7b2f270a1\",\"size\":1901}},\"gitea_changed\":false,\"historical_references\":{\"/root/_1\":{\"errors\":0,\"matched_files\":7,\"occurrences\":31,\"visited\":355},\"/var/lib/homelab-chat-run\":{\"errors\":0,\"matched_files\":60,\"occurrences\":1052,\"visited\":1922},\"/var/lib/homelab-command-adapter/capsules\":{\"errors\":0,\"matched_files\":4,\"occurrences\":33,\"visited\":30},\"overflow\":false,\"total_files\":2307},\"live_references\":{\"match_count\":0,\"matches\":[],\"overflow\":false,\"roots\":{\"/etc/bash.bashrc\":{\"errors\":0,\"matched_files\":0,\"read\":1,\"visited\":1},\"/etc/cron.d\":{\"errors\":0,\"matched_files\":0,\"read\":8,\"visited\":8},\"/etc/cron.daily\":{\"errors\":0,\"matched_files\":0,\"read\":5,\"visited\":5},\"/etc/cron.hourly\":{\"errors\":0,\"matched_files\":0,\"read\":1,\"visited\":1},\"/etc/cron.monthly\":{\"errors\":0,\"matched_files\":0,\"read\":1,\"visited\":1},\"/etc/cron.weekly\":{\"errors\":0,\"matched_files\":0,\"read\":2,\"visited\":2},\"/etc/crontab\":{\"errors\":0,\"matched_files\":0,\"read\":1,\"visited\":1},\"/etc/profile\":{\"errors\":0,\"matched_files\":0,\"read\":1,\"visited\":1},\"/etc/profile.d\":{\"errors\":0,\"matched_files\":0,\"read\":1,\"visited\":1},\"/etc/sudoers\":{\"errors\":0,\"matched_files\":0,\"read\":0,\"visited\":0},\"/etc/sudoers.d\":{\"errors\":0,\"matched_files\":0,\"read\":1,\"visited\":1},\"/etc/systemd/system\":{\"errors\":0,\"matched_files\":0,\"read\":252,\"visited\":252},\"/lib/systemd/system\":{\"errors\":0,\"matched_files\":0,\"read\":389,\"visited\":389},\"/opt\":{\"errors\":0,\"matched_files\":0,\"read\":294,\"visited\":294},\"/root/.bash_profile\":{\"errors\":0,\"matched_files\":0,\"read\":0,\"visited\":0},\"/root/.bashrc\":{\"errors\":0,\"matched_files\":0,\"read\":1,\"visited\":1},\"/root/.config/systemd/user\":{\"errors\":0,\"matched_files\":0,\"read\":0,\"visited\":0},\"/root/.profile\":{\"errors\":0,\"matched_files\":0,\"read\":1,\"visited\":1},\"/run/systemd/system\":{\"errors\":0,\"matched_files\":0,\"read\":0,\"visited\":0},\"/usr/lib/systemd/system\":{\"errors\":0,\"matched_files\":0,\"read\":389,\"visited\":389},\"/usr/local/bin\":{\"errors\":0,\"matched_files\":0,\"read\":1,\"visited\":1},\"/usr/local/sbin\":{\"errors\":0,\"matched_files\":0,\"read\":182,\"visited\":182},\"/var/spool/cron/atjobs\":{\"errors\":0,\"matched_files\":0,\"read\":0,\"visited\":0},\"/var/spool/cron/crontabs\":{\"errors\":0,\"matched_files\":0,\"read\":0,\"visited\":0}}},\"package_state\":{\"alternative_registered\":false,\"alternatives_rc\":2,\"diversion_rc\":0,\"diverted\":false,\"package_owned\":false,\"query_rc\":1},\"plan\":{\"acceptance\":[\"static exact live-reference rescan\",\"Adapter and Portal identity self-tests\",\"Portal healthz\",\"separate new-PC .hcmd end-to-end verify through canonical runner\",\"evidence SHA verification\"],\"anti_regression\":[\"historical evidence and /root/_1 references do not count as live callers\",\"any exact linked-wrapper reference in live roots blocks APPLY\",\"any linked process or open FD blocks APPLY\",\"canonical runner and all current callers must retain exact SHA\"],\"blocking_preconditions\":[],\"cleanup\":[\"no temporary executable remains\",\"rollback artifact remains non-executable until final acceptance seal\"],\"declared_change_flags\":{\"backup\":false,\"cluster\":false,\"gitea\":false,\"production\":true},\"exact_diff_scope\":{\"modify\":[],\"preserve\":[\"/usr/local/sbin/homelab-chat-run\",\"/usr/local/sbin/homelab-command-adapter\",\"/usr/local/sbin/homelab-command-portal\",\"/usr/local/sbin/homelab-context-refresh\"],\"remove\":[\"/usr/local/sbin/homelab-chat-run-linked\"],\"service_restart\":false},\"expected_postconditions\":[\"/usr/local/sbin/homelab-chat-run-linked is absent\",\"canonical runner SHA remains 2a88defef9517f89bc60934dce82097f8e316b08af9417e95167ea5d759a10d9\",\"Adapter and Portal remain active/enabled\",\"NRestarts remains 0\",\"zero live references to linked wrapper\",\"no undeclared file changes\"],\"next_after_seal\":\"rerun corrected RUN7P2 immutable-result PLAN with fresh source lock\",\"operation\":\"REMOVE_UNUSED_LINKED_RUNNER_WRAPPER\",\"preconditions\":[\"adapter_active_enabled\",\"adapter_self_test\",\"adapter_uses_canonical\",\"context_refresh_uses_canonical\",\"current_capsule_state\",\"live_reference_scan_complete\",\"no_unresolved_mutating\",\"not_package_managed\",\"portal_active_enabled\",\"portal_identity_self_test\",\"source_lock\",\"wrapper_bash_syntax\",\"wrapper_calls_canonical\",\"zero_linked_open_fds\",\"zero_linked_processes\",\"zero_live_linked_references\"],\"risk\":\"LOW: remove one unreferenced wrapper after exact live-caller, process, FD and package checks\",\"rollback\":{\"before_mutation\":\"copy exact linked file and metadata to /var/lib/homelab-change-rollback/{APPLY_COMMAND_ID}/\",\"diagnostics_before_rollback\":[\"file state\",\"systemd state\",\"journal hashes\",\"listeners\",\"processes and open FDs\",\"exact return code\"],\"restore\":\"atomically restore exact file, root:root 0755, then verify SHA-256\",\"restore_condition\":\"any failed postcondition or acceptance\",\"verify_copy_sha256\":\"5e8725e129fd2055b36fe2fae13fc95fc4b3271074a0e0d4bb7347e7b2f270a1\"},\"schema\":1,\"service_identity_test\":[\"Adapter self-test as root\",\"Portal self-test as homelab-command-portal\"],\"source\":{\"capsule_sha256\":\"89641d4e5131d345ad56b5774e5b16dc05fd27b33f618b2f5c0883ea81839688\",\"command_id\":\"RUNNER-DUPLICATE-READONLY-DIAG-20260726T195742Z\",\"evidence_sha256\":\"b9a3eb1b51eb6d93c09ef61afbaeadae5c2bef66857a82b6a22b56d17b78de20\",\"report_sha256\":\"ae8ce5323776c1647515c7833afd4f4771599824b391b5ff78f1191ea47602ab\"},\"source_lock\":{\"/etc/systemd/system/homelab-command-adapter.service\":\"74d0f37878652ed9d46b53ae8556bbb30ebd683741f293c3f59b3527876ed2d7\",\"/etc/systemd/system/homelab-command-portal.service\":\"8453eab30f5c3ccd285fc9f70fff18f564809bb27f7bf84f51f2ba593aa85263\",\"/usr/local/sbin/homelab-chat-run\":\"2a88defef9517f89bc60934dce82097f8e316b08af9417e95167ea5d759a10d9\",\"/usr/local/sbin/homelab-chat-run-linked\":\"5e8725e129fd2055b36fe2fae13fc95fc4b3271074a0e0d4bb7347e7b2f270a1\",\"/usr/local/sbin/homelab-command-adapter\":\"f2410cd328e2837b99e8ce4a28e25cb031a6bdd596d0286ac77a1822ef1cecd0\",\"/usr/local/sbin/homelab-command-portal\":\"8056faf4ef6348f0b06319ad3c49fbfeeadf25b6370f857ea19569bd27652ee2\",\"/usr/local/sbin/homelab-context-refresh\":\"98faa546f7a612f0d1f439d637c1293355371592afbcadf6cae0ee05b3552ef8\"},\"target_identity\":{\"component\":\"runner\",\"node\":\"pve01\",\"service_group\":\"root\",\"service_user\":\"root\"}},\"preconditions\":{\"adapter_active_enabled\":true,\"adapter_self_test\":true,\"adapter_uses_canonical\":true,\"context_refresh_uses_canonical\":true,\"current_capsule_state\":true,\"live_reference_scan_complete\":true,\"no_unresolved_mutating\":true,\"not_package_managed\":true,\"portal_active_enabled\":true,\"portal_identity_self_test\":true,\"source_lock\":true,\"wrapper_bash_syntax\":true,\"wrapper_calls_canonical\":true,\"zero_linked_open_fds\":true,\"zero_linked_processes\":true,\"zero_live_linked_references\":true},\"processes\":{\"linked_open_fd_count\":0,\"linked_process_count\":0,\"process_cmdline_sha256\":[]},\"production_changed\":false,\"rollback_started\":false,\"schema\":1,\"source\":{\"capsule_sha256\":\"89641d4e5131d345ad56b5774e5b16dc05fd27b33f618b2f5c0883ea81839688\",\"command_id\":\"RUNNER-DUPLICATE-READONLY-DIAG-20260726T195742Z\",\"evidence_sha256\":\"b9a3eb1b51eb6d93c09ef61afbaeadae5c2bef66857a82b6a22b56d17b78de20\",\"report_sha256\":\"ae8ce5323776c1647515c7833afd4f4771599824b391b5ff78f1191ea47602ab\"},\"source_lock_checks\":{\"/etc/systemd/system/homelab-command-adapter.service\":true,\"/etc/systemd/system/homelab-command-portal.service\":true,\"/usr/local/sbin/homelab-chat-run\":true,\"/usr/local/sbin/homelab-chat-run-linked\":true,\"/usr/local/sbin/homelab-command-adapter\":true,\"/usr/local/sbin/homelab-command-portal\":true,\"/usr/local/sbin/homelab-context-refresh\":true},\"stage\":\"RUNNER_LINKED_REMOVAL_PLAN\",\"status\":\"PASS\",\"units\":{\"adapter\":{\"ActiveState\":\"active\",\"ExecMainStatus\":\"0\",\"Group\":\"homelab-command-portal\",\"LoadState\":\"loaded\",\"NRestarts\":\"0\",\"Result\":\"success\",\"SubState\":\"running\",\"UnitFileState\":\"enabled\",\"User\":\"root\",\"show_rc\":\"0\"},\"portal\":{\"ActiveState\":\"active\",\"ExecMainStatus\":\"0\",\"Group\":\"homelab-command-portal\",\"LoadState\":\"loaded\",\"NRestarts\":\"0\",\"Result\":\"success\",\"SubState\":\"running\",\"UnitFileState\":\"enabled\",\"User\":\"homelab-command-portal\",\"show_rc\":\"0\"}},\"unresolved_mutating\":[],\"wrapper_contract\":{\"bash_syntax_pass\":true,\"calls_canonical\":true,\"content_sha256\":\"5e8725e129fd2055b36fe2fae13fc95fc4b3271074a0e0d4bb7347e7b2f270a1\",\"prints_immutable_result_url\":true,\"publishes_reader_feed\":true}}\n" +} diff --git a/runtime/history/RUNNER-LINKED-REMOVAL-PLAN-FIX1-20260726T201500Z.txt b/runtime/history/RUNNER-LINKED-REMOVAL-PLAN-FIX1-20260726T201500Z.txt new file mode 100644 index 0000000..a6abef7 --- /dev/null +++ b/runtime/history/RUNNER-LINKED-REMOVAL-PLAN-FIX1-20260726T201500Z.txt @@ -0,0 +1,27 @@ +CHAT_OUTPUT_BEGIN +COMMAND_ID=RUNNER-LINKED-REMOVAL-PLAN-FIX1-20260726T201500Z +STATUS=OK +RC=0 +HOST=pve01 +MODE=verify +COMPONENT=runner +REFERENCE_REGISTER_CHECK=OK +REFERENCE_SHA256=5763f2f8edc75fcf6f3951f8c95896d1cc112ceccb6cf5b64a383f540a4deb8e +ERROR_REGISTER_CHECK=OK +ERROR_REGISTER_SHA256=24934a2c7fa5c26f6e828583c4aefac7f143b40c0171736ed7571e617d55ab83 +COMMAND_SHA256=1524c3bd78c1ad70a1388eac6823fa70babf465bf01494e8e29b1633eea023ca +DUPLICATE_FAILED_COMMAND_BLOCKED=false +EXECUTION_STARTED=true +CHANGES_MADE=false +SANITIZED=yes +SECRETS_INCLUDED=no +PRIVATE_ADDRESSES_INCLUDED=no +RAW_EVIDENCE_SHA256=28c62a8739557f52c670c53980379fa6bea3b97baf3a90cf44695b75a65e5abf +SANITIZED_OUTPUT_SHA256=28c62a8739557f52c670c53980379fa6bea3b97baf3a90cf44695b75a65e5abf +OUTPUT_BEGIN +RUNNER_LINKED_REMOVAL_PLAN=PASS +PLAN_SHA256=8cb775587817330dd12296c2f17665110353bcd090330d9bef36e4b61a23541e +{"PLAN_SHA256":"8cb775587817330dd12296c2f17665110353bcd090330d9bef36e4b61a23541e","anti_regression":{"status":"PASS","tests":{"canonical_not_linked":true,"exact_linked_token_detected":true,"historical_reference_not_live":true,"redactor_line_boundary":true}},"backup_changed":false,"canonical_callers":{"/usr/local/sbin/homelab-command-adapter":{"references_canonical":true,"references_linked":false,"sha256":"f2410cd328e2837b99e8ce4a28e25cb031a6bdd596d0286ac77a1822ef1cecd0"},"/usr/local/sbin/homelab-context-refresh":{"references_canonical":true,"references_linked":false,"sha256":"98faa546f7a612f0d1f439d637c1293355371592afbcadf6cae0ee05b3552ef8"}},"changes_made":false,"checked_at_utc":"2026-07-26T20:09:58.563384+00:00","cluster_changed":false,"command_id":"RUNNER-LINKED-REMOVAL-PLAN-FIX1-20260726T201500Z","file_state":{"canonical":{"device":64513,"group":"root","inode":5148520,"mode":"0750","nlink":1,"owner":"root","path":"/usr/local/sbin/homelab-chat-run","regular":true,"sha256":"2a88defef9517f89bc60934dce82097f8e316b08af9417e95167ea5d759a10d9","size":11864},"linked":{"device":64513,"group":"root","inode":5148536,"mode":"0755","nlink":1,"owner":"root","path":"/usr/local/sbin/homelab-chat-run-linked","regular":true,"sha256":"5e8725e129fd2055b36fe2fae13fc95fc4b3271074a0e0d4bb7347e7b2f270a1","size":1901}},"gitea_changed":false,"historical_references":{"/root/_1":{"errors":0,"matched_files":7,"occurrences":31,"visited":355},"/var/lib/homelab-chat-run":{"errors":0,"matched_files":60,"occurrences":1052,"visited":1922},"/var/lib/homelab-command-adapter/capsules":{"errors":0,"matched_files":4,"occurrences":33,"visited":30},"overflow":false,"total_files":2307},"live_references":{"match_count":0,"matches":[],"overflow":false,"roots":{"/etc/bash.bashrc":{"errors":0,"matched_files":0,"read":1,"visited":1},"/etc/cron.d":{"errors":0,"matched_files":0,"read":8,"visited":8},"/etc/cron.daily":{"errors":0,"matched_files":0,"read":5,"visited":5},"/etc/cron.hourly":{"errors":0,"matched_files":0,"read":1,"visited":1},"/etc/cron.monthly":{"errors":0,"matched_files":0,"read":1,"visited":1},"/etc/cron.weekly":{"errors":0,"matched_files":0,"read":2,"visited":2},"/etc/crontab":{"errors":0,"matched_files":0,"read":1,"visited":1},"/etc/profile":{"errors":0,"matched_files":0,"read":1,"visited":1},"/etc/profile.d":{"errors":0,"matched_files":0,"read":1,"visited":1},"/etc/sudoers":{"errors":0,"matched_files":0,"read":0,"visited":0},"/etc/sudoers.d":{"errors":0,"matched_files":0,"read":1,"visited":1},"/etc/systemd/system":{"errors":0,"matched_files":0,"read":252,"visited":252},"/lib/systemd/system":{"errors":0,"matched_files":0,"read":389,"visited":389},"/opt":{"errors":0,"matched_files":0,"read":294,"visited":294},"/root/.bash_profile":{"errors":0,"matched_files":0,"read":0,"visited":0},"/root/.bashrc":{"errors":0,"matched_files":0,"read":1,"visited":1},"/root/.config/systemd/user":{"errors":0,"matched_files":0,"read":0,"visited":0},"/root/.profile":{"errors":0,"matched_files":0,"read":1,"visited":1},"/run/systemd/system":{"errors":0,"matched_files":0,"read":0,"visited":0},"/usr/lib/systemd/system":{"errors":0,"matched_files":0,"read":389,"visited":389},"/usr/local/bin":{"errors":0,"matched_files":0,"read":1,"visited":1},"/usr/local/sbin":{"errors":0,"matched_files":0,"read":182,"visited":182},"/var/spool/cron/atjobs":{"errors":0,"matched_files":0,"read":0,"visited":0},"/var/spool/cron/crontabs":{"errors":0,"matched_files":0,"read":0,"visited":0}}},"package_state":{"alternative_registered":false,"alternatives_rc":2,"diversion_rc":0,"diverted":false,"package_owned":false,"query_rc":1},"plan":{"acceptance":["static exact live-reference rescan","Adapter and Portal identity self-tests","Portal healthz","separate new-PC .hcmd end-to-end verify through canonical runner","evidence SHA verification"],"anti_regression":["historical evidence and /root/_1 references do not count as live callers","any exact linked-wrapper reference in live roots blocks APPLY","any linked process or open FD blocks APPLY","canonical runner and all current callers must retain exact SHA"],"blocking_preconditions":[],"cleanup":["no temporary executable remains","rollback artifact remains non-executable until final acceptance seal"],"declared_change_flags":{"backup":false,"cluster":false,"gitea":false,"production":true},"exact_diff_scope":{"modify":[],"preserve":["/usr/local/sbin/homelab-chat-run","/usr/local/sbin/homelab-command-adapter","/usr/local/sbin/homelab-command-portal","/usr/local/sbin/homelab-context-refresh"],"remove":["/usr/local/sbin/homelab-chat-run-linked"],"service_restart":false},"expected_postconditions":["/usr/local/sbin/homelab-chat-run-linked is absent","canonical runner SHA remains 2a88defef9517f89bc60934dce82097f8e316b08af9417e95167ea5d759a10d9","Adapter and Portal remain active/enabled","NRestarts remains 0","zero live references to linked wrapper","no undeclared file changes"],"next_after_seal":"rerun corrected RUN7P2 immutable-result PLAN with fresh source lock","operation":"REMOVE_UNUSED_LINKED_RUNNER_WRAPPER","preconditions":["adapter_active_enabled","adapter_self_test","adapter_uses_canonical","context_refresh_uses_canonical","current_capsule_state","live_reference_scan_complete","no_unresolved_mutating","not_package_managed","portal_active_enabled","portal_identity_self_test","source_lock","wrapper_bash_syntax","wrapper_calls_canonical","zero_linked_open_fds","zero_linked_processes","zero_live_linked_references"],"risk":"LOW: remove one unreferenced wrapper after exact live-caller, process, FD and package checks","rollback":{"before_mutation":"copy exact linked file and metadata to /var/lib/homelab-change-rollback/{APPLY_COMMAND_ID}/","diagnostics_before_rollback":["file state","systemd state","journal hashes","listeners","processes and open FDs","exact return code"],"restore":"atomically restore exact file, root:root 0755, then verify SHA-256","restore_condition":"any failed postcondition or acceptance","verify_copy_sha256":"5e8725e129fd2055b36fe2fae13fc95fc4b3271074a0e0d4bb7347e7b2f270a1"},"schema":1,"service_identity_test":["Adapter self-test as root","Portal self-test as homelab-command-portal"],"source":{"capsule_sha256":"89641d4e5131d345ad56b5774e5b16dc05fd27b33f618b2f5c0883ea81839688","command_id":"RUNNER-DUPLICATE-READONLY-DIAG-20260726T195742Z","evidence_sha256":"b9a3eb1b51eb6d93c09ef61afbaeadae5c2bef66857a82b6a22b56d17b78de20","report_sha256":"ae8ce5323776c1647515c7833afd4f4771599824b391b5ff78f1191ea47602ab"},"source_lock":{"/etc/systemd/system/homelab-command-adapter.service":"74d0f37878652ed9d46b53ae8556bbb30ebd683741f293c3f59b3527876ed2d7","/etc/systemd/system/homelab-command-portal.service":"8453eab30f5c3ccd285fc9f70fff18f564809bb27f7bf84f51f2ba593aa85263","/usr/local/sbin/homelab-chat-run":"2a88defef9517f89bc60934dce82097f8e316b08af9417e95167ea5d759a10d9","/usr/local/sbin/homelab-chat-run-linked":"5e8725e129fd2055b36fe2fae13fc95fc4b3271074a0e0d4bb7347e7b2f270a1","/usr/local/sbin/homelab-command-adapter":"f2410cd328e2837b99e8ce4a28e25cb031a6bdd596d0286ac77a1822ef1cecd0","/usr/local/sbin/homelab-command-portal":"8056faf4ef6348f0b06319ad3c49fbfeeadf25b6370f857ea19569bd27652ee2","/usr/local/sbin/homelab-context-refresh":"98faa546f7a612f0d1f439d637c1293355371592afbcadf6cae0ee05b3552ef8"},"target_identity":{"component":"runner","node":"pve01","service_group":"root","service_user":"root"}},"preconditions":{"adapter_active_enabled":true,"adapter_self_test":true,"adapter_uses_canonical":true,"context_refresh_uses_canonical":true,"current_capsule_state":true,"live_reference_scan_complete":true,"no_unresolved_mutating":true,"not_package_managed":true,"portal_active_enabled":true,"portal_identity_self_test":true,"source_lock":true,"wrapper_bash_syntax":true,"wrapper_calls_canonical":true,"zero_linked_open_fds":true,"zero_linked_processes":true,"zero_live_linked_references":true},"processes":{"linked_open_fd_count":0,"linked_process_count":0,"process_cmdline_sha256":[]},"production_changed":false,"rollback_started":false,"schema":1,"source":{"capsule_sha256":"89641d4e5131d345ad56b5774e5b16dc05fd27b33f618b2f5c0883ea81839688","command_id":"RUNNER-DUPLICATE-READONLY-DIAG-20260726T195742Z","evidence_sha256":"b9a3eb1b51eb6d93c09ef61afbaeadae5c2bef66857a82b6a22b56d17b78de20","report_sha256":"ae8ce5323776c1647515c7833afd4f4771599824b391b5ff78f1191ea47602ab"},"source_lock_checks":{"/etc/systemd/system/homelab-command-adapter.service":true,"/etc/systemd/system/homelab-command-portal.service":true,"/usr/local/sbin/homelab-chat-run":true,"/usr/local/sbin/homelab-chat-run-linked":true,"/usr/local/sbin/homelab-command-adapter":true,"/usr/local/sbin/homelab-command-portal":true,"/usr/local/sbin/homelab-context-refresh":true},"stage":"RUNNER_LINKED_REMOVAL_PLAN","status":"PASS","units":{"adapter":{"ActiveState":"active","ExecMainStatus":"0","Group":"homelab-command-portal","LoadState":"loaded","NRestarts":"0","Result":"success","SubState":"running","UnitFileState":"enabled","User":"root","show_rc":"0"},"portal":{"ActiveState":"active","ExecMainStatus":"0","Group":"homelab-command-portal","LoadState":"loaded","NRestarts":"0","Result":"success","SubState":"running","UnitFileState":"enabled","User":"homelab-command-portal","show_rc":"0"}},"unresolved_mutating":[],"wrapper_contract":{"bash_syntax_pass":true,"calls_canonical":true,"content_sha256":"5e8725e129fd2055b36fe2fae13fc95fc4b3271074a0e0d4bb7347e7b2f270a1","prints_immutable_result_url":true,"publishes_reader_feed":true}} + +OUTPUT_END +CHAT_OUTPUT_END diff --git a/runtime/latest.json b/runtime/latest.json index aeab598..386ae92 100644 --- a/runtime/latest.json +++ b/runtime/latest.json @@ -1,19 +1,19 @@ { "schema_version": 1, "channel": "homelab-runtime", - "command_id": "RUNNER-LINKED-REMOVAL-PLAN-20260726T200401Z", - "status": "FAIL", - "rc": 1, + "command_id": "RUNNER-LINKED-REMOVAL-PLAN-FIX1-20260726T201500Z", + "status": "OK", + "rc": 0, "host": "pve01", "mode": "verify", "component": "runner", - "started_at_utc": "2026-07-26T20:05:08Z", - "finished_at_utc": "2026-07-26T20:05:08Z", + "started_at_utc": "2026-07-26T20:09:58Z", + "finished_at_utc": "2026-07-26T20:09:58Z", "reference_register_checked": true, "reference_sha256": "5763f2f8edc75fcf6f3951f8c95896d1cc112ceccb6cf5b64a383f540a4deb8e", "error_register_checked": true, "error_register_sha256": "24934a2c7fa5c26f6e828583c4aefac7f143b40c0171736ed7571e617d55ab83", - "command_sha256": "0c0888a48e906eb87e238cbe298f3a3950104fd6a42d16280dbcc7d7692bd0ce", + "command_sha256": "1524c3bd78c1ad70a1388eac6823fa70babf465bf01494e8e29b1633eea023ca", "duplicate_failed_command_blocked": false, "block_reason": null, "execution_started": true, @@ -22,9 +22,9 @@ "secrets_included": false, "private_addresses_included": false, "raw_evidence_retained_locally": true, - "raw_evidence_sha256": "3acd20e2a45a312448012d9e84d3d0795cffa9fb4bb1acaeff7c280e64c8fb8c", - "sanitized_output_sha256": "3acd20e2a45a312448012d9e84d3d0795cffa9fb4bb1acaeff7c280e64c8fb8c", + "raw_evidence_sha256": "28c62a8739557f52c670c53980379fa6bea3b97baf3a90cf44695b75a65e5abf", + "sanitized_output_sha256": "28c62a8739557f52c670c53980379fa6bea3b97baf3a90cf44695b75a65e5abf", "output_truncated_in_json": false, "full_sanitized_output_url": "https://git.gram1.ru/.well-known/homelab-runtime/latest.txt", - "output": "RUNNER_LINKED_REMOVAL_PLAN=FAIL\n{\"backup_changed\":false,\"changes_made\":false,\"checked_at_utc\":\"2026-07-26T20:05:08.677487+00:00\",\"cluster_changed\":false,\"command_id\":\"RUNNER-LINKED-REMOVAL-PLAN-20260726T200401Z\",\"failure\":\"self_test() takes 0 positional arguments but 1 was given\",\"failure_type\":\"TypeError\",\"gitea_changed\":false,\"production_changed\":false,\"rollback_started\":false,\"schema\":1,\"source\":{\"capsule_sha256\":\"89641d4e5131d345ad56b5774e5b16dc05fd27b33f618b2f5c0883ea81839688\",\"command_id\":\"RUNNER-DUPLICATE-READONLY-DIAG-20260726T195742Z\",\"evidence_sha256\":\"b9a3eb1b51eb6d93c09ef61afbaeadae5c2bef66857a82b6a22b56d17b78de20\",\"report_sha256\":\"ae8ce5323776c1647515c7833afd4f4771599824b391b5ff78f1191ea47602ab\"},\"stage\":\"RUNNER_LINKED_REMOVAL_PLAN\",\"status\":\"FAIL\"}\n" + "output": "RUNNER_LINKED_REMOVAL_PLAN=PASS\nPLAN_SHA256=8cb775587817330dd12296c2f17665110353bcd090330d9bef36e4b61a23541e\n{\"PLAN_SHA256\":\"8cb775587817330dd12296c2f17665110353bcd090330d9bef36e4b61a23541e\",\"anti_regression\":{\"status\":\"PASS\",\"tests\":{\"canonical_not_linked\":true,\"exact_linked_token_detected\":true,\"historical_reference_not_live\":true,\"redactor_line_boundary\":true}},\"backup_changed\":false,\"canonical_callers\":{\"/usr/local/sbin/homelab-command-adapter\":{\"references_canonical\":true,\"references_linked\":false,\"sha256\":\"f2410cd328e2837b99e8ce4a28e25cb031a6bdd596d0286ac77a1822ef1cecd0\"},\"/usr/local/sbin/homelab-context-refresh\":{\"references_canonical\":true,\"references_linked\":false,\"sha256\":\"98faa546f7a612f0d1f439d637c1293355371592afbcadf6cae0ee05b3552ef8\"}},\"changes_made\":false,\"checked_at_utc\":\"2026-07-26T20:09:58.563384+00:00\",\"cluster_changed\":false,\"command_id\":\"RUNNER-LINKED-REMOVAL-PLAN-FIX1-20260726T201500Z\",\"file_state\":{\"canonical\":{\"device\":64513,\"group\":\"root\",\"inode\":5148520,\"mode\":\"0750\",\"nlink\":1,\"owner\":\"root\",\"path\":\"/usr/local/sbin/homelab-chat-run\",\"regular\":true,\"sha256\":\"2a88defef9517f89bc60934dce82097f8e316b08af9417e95167ea5d759a10d9\",\"size\":11864},\"linked\":{\"device\":64513,\"group\":\"root\",\"inode\":5148536,\"mode\":\"0755\",\"nlink\":1,\"owner\":\"root\",\"path\":\"/usr/local/sbin/homelab-chat-run-linked\",\"regular\":true,\"sha256\":\"5e8725e129fd2055b36fe2fae13fc95fc4b3271074a0e0d4bb7347e7b2f270a1\",\"size\":1901}},\"gitea_changed\":false,\"historical_references\":{\"/root/_1\":{\"errors\":0,\"matched_files\":7,\"occurrences\":31,\"visited\":355},\"/var/lib/homelab-chat-run\":{\"errors\":0,\"matched_files\":60,\"occurrences\":1052,\"visited\":1922},\"/var/lib/homelab-command-adapter/capsules\":{\"errors\":0,\"matched_files\":4,\"occurrences\":33,\"visited\":30},\"overflow\":false,\"total_files\":2307},\"live_references\":{\"match_count\":0,\"matches\":[],\"overflow\":false,\"roots\":{\"/etc/bash.bashrc\":{\"errors\":0,\"matched_files\":0,\"read\":1,\"visited\":1},\"/etc/cron.d\":{\"errors\":0,\"matched_files\":0,\"read\":8,\"visited\":8},\"/etc/cron.daily\":{\"errors\":0,\"matched_files\":0,\"read\":5,\"visited\":5},\"/etc/cron.hourly\":{\"errors\":0,\"matched_files\":0,\"read\":1,\"visited\":1},\"/etc/cron.monthly\":{\"errors\":0,\"matched_files\":0,\"read\":1,\"visited\":1},\"/etc/cron.weekly\":{\"errors\":0,\"matched_files\":0,\"read\":2,\"visited\":2},\"/etc/crontab\":{\"errors\":0,\"matched_files\":0,\"read\":1,\"visited\":1},\"/etc/profile\":{\"errors\":0,\"matched_files\":0,\"read\":1,\"visited\":1},\"/etc/profile.d\":{\"errors\":0,\"matched_files\":0,\"read\":1,\"visited\":1},\"/etc/sudoers\":{\"errors\":0,\"matched_files\":0,\"read\":0,\"visited\":0},\"/etc/sudoers.d\":{\"errors\":0,\"matched_files\":0,\"read\":1,\"visited\":1},\"/etc/systemd/system\":{\"errors\":0,\"matched_files\":0,\"read\":252,\"visited\":252},\"/lib/systemd/system\":{\"errors\":0,\"matched_files\":0,\"read\":389,\"visited\":389},\"/opt\":{\"errors\":0,\"matched_files\":0,\"read\":294,\"visited\":294},\"/root/.bash_profile\":{\"errors\":0,\"matched_files\":0,\"read\":0,\"visited\":0},\"/root/.bashrc\":{\"errors\":0,\"matched_files\":0,\"read\":1,\"visited\":1},\"/root/.config/systemd/user\":{\"errors\":0,\"matched_files\":0,\"read\":0,\"visited\":0},\"/root/.profile\":{\"errors\":0,\"matched_files\":0,\"read\":1,\"visited\":1},\"/run/systemd/system\":{\"errors\":0,\"matched_files\":0,\"read\":0,\"visited\":0},\"/usr/lib/systemd/system\":{\"errors\":0,\"matched_files\":0,\"read\":389,\"visited\":389},\"/usr/local/bin\":{\"errors\":0,\"matched_files\":0,\"read\":1,\"visited\":1},\"/usr/local/sbin\":{\"errors\":0,\"matched_files\":0,\"read\":182,\"visited\":182},\"/var/spool/cron/atjobs\":{\"errors\":0,\"matched_files\":0,\"read\":0,\"visited\":0},\"/var/spool/cron/crontabs\":{\"errors\":0,\"matched_files\":0,\"read\":0,\"visited\":0}}},\"package_state\":{\"alternative_registered\":false,\"alternatives_rc\":2,\"diversion_rc\":0,\"diverted\":false,\"package_owned\":false,\"query_rc\":1},\"plan\":{\"acceptance\":[\"static exact live-reference rescan\",\"Adapter and Portal identity self-tests\",\"Portal healthz\",\"separate new-PC .hcmd end-to-end verify through canonical runner\",\"evidence SHA verification\"],\"anti_regression\":[\"historical evidence and /root/_1 references do not count as live callers\",\"any exact linked-wrapper reference in live roots blocks APPLY\",\"any linked process or open FD blocks APPLY\",\"canonical runner and all current callers must retain exact SHA\"],\"blocking_preconditions\":[],\"cleanup\":[\"no temporary executable remains\",\"rollback artifact remains non-executable until final acceptance seal\"],\"declared_change_flags\":{\"backup\":false,\"cluster\":false,\"gitea\":false,\"production\":true},\"exact_diff_scope\":{\"modify\":[],\"preserve\":[\"/usr/local/sbin/homelab-chat-run\",\"/usr/local/sbin/homelab-command-adapter\",\"/usr/local/sbin/homelab-command-portal\",\"/usr/local/sbin/homelab-context-refresh\"],\"remove\":[\"/usr/local/sbin/homelab-chat-run-linked\"],\"service_restart\":false},\"expected_postconditions\":[\"/usr/local/sbin/homelab-chat-run-linked is absent\",\"canonical runner SHA remains 2a88defef9517f89bc60934dce82097f8e316b08af9417e95167ea5d759a10d9\",\"Adapter and Portal remain active/enabled\",\"NRestarts remains 0\",\"zero live references to linked wrapper\",\"no undeclared file changes\"],\"next_after_seal\":\"rerun corrected RUN7P2 immutable-result PLAN with fresh source lock\",\"operation\":\"REMOVE_UNUSED_LINKED_RUNNER_WRAPPER\",\"preconditions\":[\"adapter_active_enabled\",\"adapter_self_test\",\"adapter_uses_canonical\",\"context_refresh_uses_canonical\",\"current_capsule_state\",\"live_reference_scan_complete\",\"no_unresolved_mutating\",\"not_package_managed\",\"portal_active_enabled\",\"portal_identity_self_test\",\"source_lock\",\"wrapper_bash_syntax\",\"wrapper_calls_canonical\",\"zero_linked_open_fds\",\"zero_linked_processes\",\"zero_live_linked_references\"],\"risk\":\"LOW: remove one unreferenced wrapper after exact live-caller, process, FD and package checks\",\"rollback\":{\"before_mutation\":\"copy exact linked file and metadata to /var/lib/homelab-change-rollback/{APPLY_COMMAND_ID}/\",\"diagnostics_before_rollback\":[\"file state\",\"systemd state\",\"journal hashes\",\"listeners\",\"processes and open FDs\",\"exact return code\"],\"restore\":\"atomically restore exact file, root:root 0755, then verify SHA-256\",\"restore_condition\":\"any failed postcondition or acceptance\",\"verify_copy_sha256\":\"5e8725e129fd2055b36fe2fae13fc95fc4b3271074a0e0d4bb7347e7b2f270a1\"},\"schema\":1,\"service_identity_test\":[\"Adapter self-test as root\",\"Portal self-test as homelab-command-portal\"],\"source\":{\"capsule_sha256\":\"89641d4e5131d345ad56b5774e5b16dc05fd27b33f618b2f5c0883ea81839688\",\"command_id\":\"RUNNER-DUPLICATE-READONLY-DIAG-20260726T195742Z\",\"evidence_sha256\":\"b9a3eb1b51eb6d93c09ef61afbaeadae5c2bef66857a82b6a22b56d17b78de20\",\"report_sha256\":\"ae8ce5323776c1647515c7833afd4f4771599824b391b5ff78f1191ea47602ab\"},\"source_lock\":{\"/etc/systemd/system/homelab-command-adapter.service\":\"74d0f37878652ed9d46b53ae8556bbb30ebd683741f293c3f59b3527876ed2d7\",\"/etc/systemd/system/homelab-command-portal.service\":\"8453eab30f5c3ccd285fc9f70fff18f564809bb27f7bf84f51f2ba593aa85263\",\"/usr/local/sbin/homelab-chat-run\":\"2a88defef9517f89bc60934dce82097f8e316b08af9417e95167ea5d759a10d9\",\"/usr/local/sbin/homelab-chat-run-linked\":\"5e8725e129fd2055b36fe2fae13fc95fc4b3271074a0e0d4bb7347e7b2f270a1\",\"/usr/local/sbin/homelab-command-adapter\":\"f2410cd328e2837b99e8ce4a28e25cb031a6bdd596d0286ac77a1822ef1cecd0\",\"/usr/local/sbin/homelab-command-portal\":\"8056faf4ef6348f0b06319ad3c49fbfeeadf25b6370f857ea19569bd27652ee2\",\"/usr/local/sbin/homelab-context-refresh\":\"98faa546f7a612f0d1f439d637c1293355371592afbcadf6cae0ee05b3552ef8\"},\"target_identity\":{\"component\":\"runner\",\"node\":\"pve01\",\"service_group\":\"root\",\"service_user\":\"root\"}},\"preconditions\":{\"adapter_active_enabled\":true,\"adapter_self_test\":true,\"adapter_uses_canonical\":true,\"context_refresh_uses_canonical\":true,\"current_capsule_state\":true,\"live_reference_scan_complete\":true,\"no_unresolved_mutating\":true,\"not_package_managed\":true,\"portal_active_enabled\":true,\"portal_identity_self_test\":true,\"source_lock\":true,\"wrapper_bash_syntax\":true,\"wrapper_calls_canonical\":true,\"zero_linked_open_fds\":true,\"zero_linked_processes\":true,\"zero_live_linked_references\":true},\"processes\":{\"linked_open_fd_count\":0,\"linked_process_count\":0,\"process_cmdline_sha256\":[]},\"production_changed\":false,\"rollback_started\":false,\"schema\":1,\"source\":{\"capsule_sha256\":\"89641d4e5131d345ad56b5774e5b16dc05fd27b33f618b2f5c0883ea81839688\",\"command_id\":\"RUNNER-DUPLICATE-READONLY-DIAG-20260726T195742Z\",\"evidence_sha256\":\"b9a3eb1b51eb6d93c09ef61afbaeadae5c2bef66857a82b6a22b56d17b78de20\",\"report_sha256\":\"ae8ce5323776c1647515c7833afd4f4771599824b391b5ff78f1191ea47602ab\"},\"source_lock_checks\":{\"/etc/systemd/system/homelab-command-adapter.service\":true,\"/etc/systemd/system/homelab-command-portal.service\":true,\"/usr/local/sbin/homelab-chat-run\":true,\"/usr/local/sbin/homelab-chat-run-linked\":true,\"/usr/local/sbin/homelab-command-adapter\":true,\"/usr/local/sbin/homelab-command-portal\":true,\"/usr/local/sbin/homelab-context-refresh\":true},\"stage\":\"RUNNER_LINKED_REMOVAL_PLAN\",\"status\":\"PASS\",\"units\":{\"adapter\":{\"ActiveState\":\"active\",\"ExecMainStatus\":\"0\",\"Group\":\"homelab-command-portal\",\"LoadState\":\"loaded\",\"NRestarts\":\"0\",\"Result\":\"success\",\"SubState\":\"running\",\"UnitFileState\":\"enabled\",\"User\":\"root\",\"show_rc\":\"0\"},\"portal\":{\"ActiveState\":\"active\",\"ExecMainStatus\":\"0\",\"Group\":\"homelab-command-portal\",\"LoadState\":\"loaded\",\"NRestarts\":\"0\",\"Result\":\"success\",\"SubState\":\"running\",\"UnitFileState\":\"enabled\",\"User\":\"homelab-command-portal\",\"show_rc\":\"0\"}},\"unresolved_mutating\":[],\"wrapper_contract\":{\"bash_syntax_pass\":true,\"calls_canonical\":true,\"content_sha256\":\"5e8725e129fd2055b36fe2fae13fc95fc4b3271074a0e0d4bb7347e7b2f270a1\",\"prints_immutable_result_url\":true,\"publishes_reader_feed\":true}}\n" } diff --git a/runtime/latest.txt b/runtime/latest.txt index 6e66a4f..a6abef7 100644 --- a/runtime/latest.txt +++ b/runtime/latest.txt @@ -1,7 +1,7 @@ CHAT_OUTPUT_BEGIN -COMMAND_ID=RUNNER-LINKED-REMOVAL-PLAN-20260726T200401Z -STATUS=FAIL -RC=1 +COMMAND_ID=RUNNER-LINKED-REMOVAL-PLAN-FIX1-20260726T201500Z +STATUS=OK +RC=0 HOST=pve01 MODE=verify COMPONENT=runner @@ -9,18 +9,19 @@ REFERENCE_REGISTER_CHECK=OK REFERENCE_SHA256=5763f2f8edc75fcf6f3951f8c95896d1cc112ceccb6cf5b64a383f540a4deb8e ERROR_REGISTER_CHECK=OK ERROR_REGISTER_SHA256=24934a2c7fa5c26f6e828583c4aefac7f143b40c0171736ed7571e617d55ab83 -COMMAND_SHA256=0c0888a48e906eb87e238cbe298f3a3950104fd6a42d16280dbcc7d7692bd0ce +COMMAND_SHA256=1524c3bd78c1ad70a1388eac6823fa70babf465bf01494e8e29b1633eea023ca DUPLICATE_FAILED_COMMAND_BLOCKED=false EXECUTION_STARTED=true CHANGES_MADE=false SANITIZED=yes SECRETS_INCLUDED=no PRIVATE_ADDRESSES_INCLUDED=no -RAW_EVIDENCE_SHA256=3acd20e2a45a312448012d9e84d3d0795cffa9fb4bb1acaeff7c280e64c8fb8c -SANITIZED_OUTPUT_SHA256=3acd20e2a45a312448012d9e84d3d0795cffa9fb4bb1acaeff7c280e64c8fb8c +RAW_EVIDENCE_SHA256=28c62a8739557f52c670c53980379fa6bea3b97baf3a90cf44695b75a65e5abf +SANITIZED_OUTPUT_SHA256=28c62a8739557f52c670c53980379fa6bea3b97baf3a90cf44695b75a65e5abf OUTPUT_BEGIN -RUNNER_LINKED_REMOVAL_PLAN=FAIL -{"backup_changed":false,"changes_made":false,"checked_at_utc":"2026-07-26T20:05:08.677487+00:00","cluster_changed":false,"command_id":"RUNNER-LINKED-REMOVAL-PLAN-20260726T200401Z","failure":"self_test() takes 0 positional arguments but 1 was given","failure_type":"TypeError","gitea_changed":false,"production_changed":false,"rollback_started":false,"schema":1,"source":{"capsule_sha256":"89641d4e5131d345ad56b5774e5b16dc05fd27b33f618b2f5c0883ea81839688","command_id":"RUNNER-DUPLICATE-READONLY-DIAG-20260726T195742Z","evidence_sha256":"b9a3eb1b51eb6d93c09ef61afbaeadae5c2bef66857a82b6a22b56d17b78de20","report_sha256":"ae8ce5323776c1647515c7833afd4f4771599824b391b5ff78f1191ea47602ab"},"stage":"RUNNER_LINKED_REMOVAL_PLAN","status":"FAIL"} +RUNNER_LINKED_REMOVAL_PLAN=PASS +PLAN_SHA256=8cb775587817330dd12296c2f17665110353bcd090330d9bef36e4b61a23541e +{"PLAN_SHA256":"8cb775587817330dd12296c2f17665110353bcd090330d9bef36e4b61a23541e","anti_regression":{"status":"PASS","tests":{"canonical_not_linked":true,"exact_linked_token_detected":true,"historical_reference_not_live":true,"redactor_line_boundary":true}},"backup_changed":false,"canonical_callers":{"/usr/local/sbin/homelab-command-adapter":{"references_canonical":true,"references_linked":false,"sha256":"f2410cd328e2837b99e8ce4a28e25cb031a6bdd596d0286ac77a1822ef1cecd0"},"/usr/local/sbin/homelab-context-refresh":{"references_canonical":true,"references_linked":false,"sha256":"98faa546f7a612f0d1f439d637c1293355371592afbcadf6cae0ee05b3552ef8"}},"changes_made":false,"checked_at_utc":"2026-07-26T20:09:58.563384+00:00","cluster_changed":false,"command_id":"RUNNER-LINKED-REMOVAL-PLAN-FIX1-20260726T201500Z","file_state":{"canonical":{"device":64513,"group":"root","inode":5148520,"mode":"0750","nlink":1,"owner":"root","path":"/usr/local/sbin/homelab-chat-run","regular":true,"sha256":"2a88defef9517f89bc60934dce82097f8e316b08af9417e95167ea5d759a10d9","size":11864},"linked":{"device":64513,"group":"root","inode":5148536,"mode":"0755","nlink":1,"owner":"root","path":"/usr/local/sbin/homelab-chat-run-linked","regular":true,"sha256":"5e8725e129fd2055b36fe2fae13fc95fc4b3271074a0e0d4bb7347e7b2f270a1","size":1901}},"gitea_changed":false,"historical_references":{"/root/_1":{"errors":0,"matched_files":7,"occurrences":31,"visited":355},"/var/lib/homelab-chat-run":{"errors":0,"matched_files":60,"occurrences":1052,"visited":1922},"/var/lib/homelab-command-adapter/capsules":{"errors":0,"matched_files":4,"occurrences":33,"visited":30},"overflow":false,"total_files":2307},"live_references":{"match_count":0,"matches":[],"overflow":false,"roots":{"/etc/bash.bashrc":{"errors":0,"matched_files":0,"read":1,"visited":1},"/etc/cron.d":{"errors":0,"matched_files":0,"read":8,"visited":8},"/etc/cron.daily":{"errors":0,"matched_files":0,"read":5,"visited":5},"/etc/cron.hourly":{"errors":0,"matched_files":0,"read":1,"visited":1},"/etc/cron.monthly":{"errors":0,"matched_files":0,"read":1,"visited":1},"/etc/cron.weekly":{"errors":0,"matched_files":0,"read":2,"visited":2},"/etc/crontab":{"errors":0,"matched_files":0,"read":1,"visited":1},"/etc/profile":{"errors":0,"matched_files":0,"read":1,"visited":1},"/etc/profile.d":{"errors":0,"matched_files":0,"read":1,"visited":1},"/etc/sudoers":{"errors":0,"matched_files":0,"read":0,"visited":0},"/etc/sudoers.d":{"errors":0,"matched_files":0,"read":1,"visited":1},"/etc/systemd/system":{"errors":0,"matched_files":0,"read":252,"visited":252},"/lib/systemd/system":{"errors":0,"matched_files":0,"read":389,"visited":389},"/opt":{"errors":0,"matched_files":0,"read":294,"visited":294},"/root/.bash_profile":{"errors":0,"matched_files":0,"read":0,"visited":0},"/root/.bashrc":{"errors":0,"matched_files":0,"read":1,"visited":1},"/root/.config/systemd/user":{"errors":0,"matched_files":0,"read":0,"visited":0},"/root/.profile":{"errors":0,"matched_files":0,"read":1,"visited":1},"/run/systemd/system":{"errors":0,"matched_files":0,"read":0,"visited":0},"/usr/lib/systemd/system":{"errors":0,"matched_files":0,"read":389,"visited":389},"/usr/local/bin":{"errors":0,"matched_files":0,"read":1,"visited":1},"/usr/local/sbin":{"errors":0,"matched_files":0,"read":182,"visited":182},"/var/spool/cron/atjobs":{"errors":0,"matched_files":0,"read":0,"visited":0},"/var/spool/cron/crontabs":{"errors":0,"matched_files":0,"read":0,"visited":0}}},"package_state":{"alternative_registered":false,"alternatives_rc":2,"diversion_rc":0,"diverted":false,"package_owned":false,"query_rc":1},"plan":{"acceptance":["static exact live-reference rescan","Adapter and Portal identity self-tests","Portal healthz","separate new-PC .hcmd end-to-end verify through canonical runner","evidence SHA verification"],"anti_regression":["historical evidence and /root/_1 references do not count as live callers","any exact linked-wrapper reference in live roots blocks APPLY","any linked process or open FD blocks APPLY","canonical runner and all current callers must retain exact SHA"],"blocking_preconditions":[],"cleanup":["no temporary executable remains","rollback artifact remains non-executable until final acceptance seal"],"declared_change_flags":{"backup":false,"cluster":false,"gitea":false,"production":true},"exact_diff_scope":{"modify":[],"preserve":["/usr/local/sbin/homelab-chat-run","/usr/local/sbin/homelab-command-adapter","/usr/local/sbin/homelab-command-portal","/usr/local/sbin/homelab-context-refresh"],"remove":["/usr/local/sbin/homelab-chat-run-linked"],"service_restart":false},"expected_postconditions":["/usr/local/sbin/homelab-chat-run-linked is absent","canonical runner SHA remains 2a88defef9517f89bc60934dce82097f8e316b08af9417e95167ea5d759a10d9","Adapter and Portal remain active/enabled","NRestarts remains 0","zero live references to linked wrapper","no undeclared file changes"],"next_after_seal":"rerun corrected RUN7P2 immutable-result PLAN with fresh source lock","operation":"REMOVE_UNUSED_LINKED_RUNNER_WRAPPER","preconditions":["adapter_active_enabled","adapter_self_test","adapter_uses_canonical","context_refresh_uses_canonical","current_capsule_state","live_reference_scan_complete","no_unresolved_mutating","not_package_managed","portal_active_enabled","portal_identity_self_test","source_lock","wrapper_bash_syntax","wrapper_calls_canonical","zero_linked_open_fds","zero_linked_processes","zero_live_linked_references"],"risk":"LOW: remove one unreferenced wrapper after exact live-caller, process, FD and package checks","rollback":{"before_mutation":"copy exact linked file and metadata to /var/lib/homelab-change-rollback/{APPLY_COMMAND_ID}/","diagnostics_before_rollback":["file state","systemd state","journal hashes","listeners","processes and open FDs","exact return code"],"restore":"atomically restore exact file, root:root 0755, then verify SHA-256","restore_condition":"any failed postcondition or acceptance","verify_copy_sha256":"5e8725e129fd2055b36fe2fae13fc95fc4b3271074a0e0d4bb7347e7b2f270a1"},"schema":1,"service_identity_test":["Adapter self-test as root","Portal self-test as homelab-command-portal"],"source":{"capsule_sha256":"89641d4e5131d345ad56b5774e5b16dc05fd27b33f618b2f5c0883ea81839688","command_id":"RUNNER-DUPLICATE-READONLY-DIAG-20260726T195742Z","evidence_sha256":"b9a3eb1b51eb6d93c09ef61afbaeadae5c2bef66857a82b6a22b56d17b78de20","report_sha256":"ae8ce5323776c1647515c7833afd4f4771599824b391b5ff78f1191ea47602ab"},"source_lock":{"/etc/systemd/system/homelab-command-adapter.service":"74d0f37878652ed9d46b53ae8556bbb30ebd683741f293c3f59b3527876ed2d7","/etc/systemd/system/homelab-command-portal.service":"8453eab30f5c3ccd285fc9f70fff18f564809bb27f7bf84f51f2ba593aa85263","/usr/local/sbin/homelab-chat-run":"2a88defef9517f89bc60934dce82097f8e316b08af9417e95167ea5d759a10d9","/usr/local/sbin/homelab-chat-run-linked":"5e8725e129fd2055b36fe2fae13fc95fc4b3271074a0e0d4bb7347e7b2f270a1","/usr/local/sbin/homelab-command-adapter":"f2410cd328e2837b99e8ce4a28e25cb031a6bdd596d0286ac77a1822ef1cecd0","/usr/local/sbin/homelab-command-portal":"8056faf4ef6348f0b06319ad3c49fbfeeadf25b6370f857ea19569bd27652ee2","/usr/local/sbin/homelab-context-refresh":"98faa546f7a612f0d1f439d637c1293355371592afbcadf6cae0ee05b3552ef8"},"target_identity":{"component":"runner","node":"pve01","service_group":"root","service_user":"root"}},"preconditions":{"adapter_active_enabled":true,"adapter_self_test":true,"adapter_uses_canonical":true,"context_refresh_uses_canonical":true,"current_capsule_state":true,"live_reference_scan_complete":true,"no_unresolved_mutating":true,"not_package_managed":true,"portal_active_enabled":true,"portal_identity_self_test":true,"source_lock":true,"wrapper_bash_syntax":true,"wrapper_calls_canonical":true,"zero_linked_open_fds":true,"zero_linked_processes":true,"zero_live_linked_references":true},"processes":{"linked_open_fd_count":0,"linked_process_count":0,"process_cmdline_sha256":[]},"production_changed":false,"rollback_started":false,"schema":1,"source":{"capsule_sha256":"89641d4e5131d345ad56b5774e5b16dc05fd27b33f618b2f5c0883ea81839688","command_id":"RUNNER-DUPLICATE-READONLY-DIAG-20260726T195742Z","evidence_sha256":"b9a3eb1b51eb6d93c09ef61afbaeadae5c2bef66857a82b6a22b56d17b78de20","report_sha256":"ae8ce5323776c1647515c7833afd4f4771599824b391b5ff78f1191ea47602ab"},"source_lock_checks":{"/etc/systemd/system/homelab-command-adapter.service":true,"/etc/systemd/system/homelab-command-portal.service":true,"/usr/local/sbin/homelab-chat-run":true,"/usr/local/sbin/homelab-chat-run-linked":true,"/usr/local/sbin/homelab-command-adapter":true,"/usr/local/sbin/homelab-command-portal":true,"/usr/local/sbin/homelab-context-refresh":true},"stage":"RUNNER_LINKED_REMOVAL_PLAN","status":"PASS","units":{"adapter":{"ActiveState":"active","ExecMainStatus":"0","Group":"homelab-command-portal","LoadState":"loaded","NRestarts":"0","Result":"success","SubState":"running","UnitFileState":"enabled","User":"root","show_rc":"0"},"portal":{"ActiveState":"active","ExecMainStatus":"0","Group":"homelab-command-portal","LoadState":"loaded","NRestarts":"0","Result":"success","SubState":"running","UnitFileState":"enabled","User":"homelab-command-portal","show_rc":"0"}},"unresolved_mutating":[],"wrapper_contract":{"bash_syntax_pass":true,"calls_canonical":true,"content_sha256":"5e8725e129fd2055b36fe2fae13fc95fc4b3271074a0e0d4bb7347e7b2f270a1","prints_immutable_result_url":true,"publishes_reader_feed":true}} OUTPUT_END CHAT_OUTPUT_END