1
0

runtime: publish RUNNER-MUTATION-CONTRACT-APPLY-20260726T205715Z

This commit is contained in:
homelab-runtime-publisher
2026-07-26 21:02:55 +00:00
parent 0fc4531e93
commit 15f64d702f
4 changed files with 73 additions and 16 deletions
@@ -0,0 +1,30 @@
{
"schema_version": 1,
"channel": "homelab-runtime",
"command_id": "RUNNER-MUTATION-CONTRACT-APPLY-20260726T205715Z",
"status": "OK",
"rc": 0,
"host": "pve01",
"mode": "change",
"component": "runner",
"started_at_utc": "2026-07-26T21:02:54Z",
"finished_at_utc": "2026-07-26T21:02:55Z",
"reference_register_checked": true,
"reference_sha256": "5763f2f8edc75fcf6f3951f8c95896d1cc112ceccb6cf5b64a383f540a4deb8e",
"error_register_checked": true,
"error_register_sha256": "24934a2c7fa5c26f6e828583c4aefac7f143b40c0171736ed7571e617d55ab83",
"command_sha256": "83adb37ea842dc736fd0a58cdb67f768b204e01fb6b32c90775504c67958de16",
"duplicate_failed_command_blocked": false,
"block_reason": null,
"execution_started": true,
"changes_made": true,
"sanitized": true,
"secrets_included": false,
"private_addresses_included": false,
"raw_evidence_retained_locally": true,
"raw_evidence_sha256": "3c98acc82d21d62e7fdc2ef0207432fe1d3c10547761ceffaea3b1b4afcc971e",
"sanitized_output_sha256": "3c98acc82d21d62e7fdc2ef0207432fe1d3c10547761ceffaea3b1b4afcc971e",
"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\":true,\"command_id\":\"RUNNER-MUTATION-CONTRACT-APPLY-20260726T205715Z\",\"rollback_restored\":null,\"rollback_started\":false,\"status\":\"OK\",\"version\":1}\n{\"PLAN_SHA256\":\"22eedf9b1090960a7f92cef992f481d8d6cc3f42e4f4ecd6e27bbda4ebf752bd\",\"backup_changed\":false,\"changes_made\":true,\"cluster_changed\":false,\"gitea_changed\":false,\"postconditions\":{\"adapter_healthy\":true,\"adapter_not_restarted\":true,\"adapter_self_test\":true,\"portal_health\":true,\"portal_healthy\":true,\"portal_identity_self_test\":true,\"portal_not_restarted\":true,\"preserved_source_lock\":true,\"rollback_copy_mode_0600\":true,\"rollback_copy_sha256\":true,\"runner_bash_syntax\":true,\"runner_mode_preserved\":true,\"runner_owner_preserved\":true,\"runner_regular_not_symlink\":true,\"runner_self_test\":true,\"target_sha256\":true},\"rollback_copy\":\"/var/lib/homelab-change-rollback/RUNNER-MUTATION-CONTRACT-APPLY-20260726T205715Z/homelab-chat-run.rollback\",\"rollback_metadata\":\"/var/lib/homelab-change-rollback/RUNNER-MUTATION-CONTRACT-APPLY-20260726T205715Z/metadata.json\",\"rollback_started\":false,\"service_restart\":false,\"source_sha256\":\"2a88defef9517f89bc60934dce82097f8e316b08af9417e95167ea5d759a10d9\",\"status\":\"OK\",\"target_sha256\":\"b248a4c32c9cc64e5747e7dce6c7fc0a23f5124a77c71ce72e27a81aceae9d2d\"}\n"
}
@@ -0,0 +1,26 @@
CHAT_OUTPUT_BEGIN
COMMAND_ID=RUNNER-MUTATION-CONTRACT-APPLY-20260726T205715Z
STATUS=OK
RC=0
HOST=pve01
MODE=change
COMPONENT=runner
REFERENCE_REGISTER_CHECK=OK
REFERENCE_SHA256=5763f2f8edc75fcf6f3951f8c95896d1cc112ceccb6cf5b64a383f540a4deb8e
ERROR_REGISTER_CHECK=OK
ERROR_REGISTER_SHA256=24934a2c7fa5c26f6e828583c4aefac7f143b40c0171736ed7571e617d55ab83
COMMAND_SHA256=83adb37ea842dc736fd0a58cdb67f768b204e01fb6b32c90775504c67958de16
DUPLICATE_FAILED_COMMAND_BLOCKED=false
EXECUTION_STARTED=true
CHANGES_MADE=true
SANITIZED=yes
SECRETS_INCLUDED=no
PRIVATE_ADDRESSES_INCLUDED=no
RAW_EVIDENCE_SHA256=3c98acc82d21d62e7fdc2ef0207432fe1d3c10547761ceffaea3b1b4afcc971e
SANITIZED_OUTPUT_SHA256=3c98acc82d21d62e7fdc2ef0207432fe1d3c10547761ceffaea3b1b4afcc971e
OUTPUT_BEGIN
HOMELAB_RESULT_CONTRACT={"changes_made":true,"command_id":"RUNNER-MUTATION-CONTRACT-APPLY-20260726T205715Z","rollback_restored":null,"rollback_started":false,"status":"OK","version":1}
{"PLAN_SHA256":"22eedf9b1090960a7f92cef992f481d8d6cc3f42e4f4ecd6e27bbda4ebf752bd","backup_changed":false,"changes_made":true,"cluster_changed":false,"gitea_changed":false,"postconditions":{"adapter_healthy":true,"adapter_not_restarted":true,"adapter_self_test":true,"portal_health":true,"portal_healthy":true,"portal_identity_self_test":true,"portal_not_restarted":true,"preserved_source_lock":true,"rollback_copy_mode_0600":true,"rollback_copy_sha256":true,"runner_bash_syntax":true,"runner_mode_preserved":true,"runner_owner_preserved":true,"runner_regular_not_symlink":true,"runner_self_test":true,"target_sha256":true},"rollback_copy":"/var/lib/homelab-change-rollback/RUNNER-MUTATION-CONTRACT-APPLY-20260726T205715Z/homelab-chat-run.rollback","rollback_metadata":"/var/lib/homelab-change-rollback/RUNNER-MUTATION-CONTRACT-APPLY-20260726T205715Z/metadata.json","rollback_started":false,"service_restart":false,"source_sha256":"2a88defef9517f89bc60934dce82097f8e316b08af9417e95167ea5d759a10d9","status":"OK","target_sha256":"b248a4c32c9cc64e5747e7dce6c7fc0a23f5124a77c71ce72e27a81aceae9d2d"}
OUTPUT_END
CHAT_OUTPUT_END
+9 -9
View File
@@ -1,30 +1,30 @@
{
"schema_version": 1,
"channel": "homelab-runtime",
"command_id": "RUNNER-MUTATION-CONTRACT-PLAN-20260726T204219Z",
"command_id": "RUNNER-MUTATION-CONTRACT-APPLY-20260726T205715Z",
"status": "OK",
"rc": 0,
"host": "pve01",
"mode": "verify",
"mode": "change",
"component": "runner",
"started_at_utc": "2026-07-26T20:50:10Z",
"finished_at_utc": "2026-07-26T20:50:10Z",
"started_at_utc": "2026-07-26T21:02:54Z",
"finished_at_utc": "2026-07-26T21:02:55Z",
"reference_register_checked": true,
"reference_sha256": "5763f2f8edc75fcf6f3951f8c95896d1cc112ceccb6cf5b64a383f540a4deb8e",
"error_register_checked": true,
"error_register_sha256": "24934a2c7fa5c26f6e828583c4aefac7f143b40c0171736ed7571e617d55ab83",
"command_sha256": "18ca7f1fb586bea8de09771fb8a2620d7c1e624494878d745b07a897fb6cb780",
"command_sha256": "83adb37ea842dc736fd0a58cdb67f768b204e01fb6b32c90775504c67958de16",
"duplicate_failed_command_blocked": false,
"block_reason": null,
"execution_started": true,
"changes_made": false,
"changes_made": true,
"sanitized": true,
"secrets_included": false,
"private_addresses_included": false,
"raw_evidence_retained_locally": true,
"raw_evidence_sha256": "65beaf599a688212c2299703e01dab946a652f2837f41a98f983eee7fadf9909",
"sanitized_output_sha256": "65beaf599a688212c2299703e01dab946a652f2837f41a98f983eee7fadf9909",
"raw_evidence_sha256": "3c98acc82d21d62e7fdc2ef0207432fe1d3c10547761ceffaea3b1b4afcc971e",
"sanitized_output_sha256": "3c98acc82d21d62e7fdc2ef0207432fe1d3c10547761ceffaea3b1b4afcc971e",
"output_truncated_in_json": false,
"full_sanitized_output_url": "https://git.gram1.ru/.well-known/homelab-runtime/latest.txt",
"output": "{\"PLAN_SHA256\":\"22eedf9b1090960a7f92cef992f481d8d6cc3f42e4f4ecd6e27bbda4ebf752bd\",\"changes_made\":false,\"command_id\":\"RUNNER-MUTATION-CONTRACT-PLAN-20260726T204219Z\",\"diff\":{\"additions\":285,\"deletions\":8,\"diff_sha256\":\"6ce1b41ad8de334ca804bccee03cae25ca600364473eee1677afde818cfcc192\",\"hunks\":8},\"mutating_states\":{\"closed\":[\"RUNNER-LINKED-REMOVAL-APPLY-20260726T202107Z\",\"RUNNER-LINKED-REMOVAL-APPLY-FINAL-20260726T202825Z\"],\"unresolved\":[]},\"plan\":{\"anti_regression\":[\"mode=change больше не означает changes_made=true\",\"повтор заблокированной команды считается NO_MUTATION\",\"несовпадающий command_id контракта блокируется\",\"несколько контрактов блокируются\",\"отсутствующий контракт блокируется с UNKNOWN\"],\"file\":\"/usr/local/sbin/homelab-chat-run\",\"next\":\"после APPLY обновить Adapter META/state, затем закрыть старые precondition-only записи\",\"operation\":\"УСТАНОВИТЬ_КОНТРАКТ_ФАКТИЧЕСКОЙ_МУТАЦИИ_RUNNER\",\"postconditions\":[\"target SHA совпадает\",\"bash -n проходит\",\"--self-test проходит\",\"verify/read-only всегда changes_made=false\",\"BLOCKED change с контрактом даёт changes_made=false\",\"change без контракта даёт changes_made=null и FAIL\",\"успешная мутация даёт changes_made=true\",\"успешный rollback даёт mutation_outcome=ROLLED_BACK\",\"Adapter и Portal не перезапускаются\"],\"preconditions\":{\"adapter_self_test\":true,\"adapter_здоров\":true,\"portal_identity_self_test\":true,\"portal_здоров\":true,\"известные_старые_попытки_закрыты\":true,\"нет_других_mutating_failure\":true,\"текущая_capsule_корректна\":true,\"точный_source_lock\":true},\"risk\":\"REVERSIBLE\",\"rollback\":{\"atomic_restore\":true,\"copy_before_apply\":true,\"copy_mode\":\"0600\",\"diagnostics_before_rollback\":true,\"verify_sha256\":\"2a88defef9517f89bc60934dce82097f8e316b08af9417e95167ea5d759a10d9\"},\"schema\":1,\"scope\":{\"backup_changed\":false,\"cluster_changed\":false,\"gitea_changed\":false,\"modify\":[\"/usr/local/sbin/homelab-chat-run\"],\"preserve\":[\"/usr/local/sbin/homelab-command-adapter\",\"/usr/local/sbin/homelab-command-portal\",\"/usr/local/sbin/homelab-chat-run-linked\"],\"service_restart\":false},\"source_evidence\":[\"d33b0cb4f775fb6bfb57d7681273a2ae9b3e884088ae794f1c152797cd03f6dd\",\"98474ad0c0c5ab2b6507c2469ea804b3c771f8a8f71c23a8238fd64ae1fe989d\"],\"source_sha256\":\"2a88defef9517f89bc60934dce82097f8e316b08af9417e95167ea5d759a10d9\",\"target\":\"pve01\",\"target_sha256\":\"b248a4c32c9cc64e5747e7dce6c7fc0a23f5124a77c71ce72e27a81aceae9d2d\"},\"rollback_started\":false,\"source_sha256\":\"2a88defef9517f89bc60934dce82097f8e316b08af9417e95167ea5d759a10d9\",\"static_tests\":{\"bash_syntax\":true,\"marker_контракта\":true,\"preexecution_block_no_mutation\":true,\"runner_self_test\":true,\"target_sha_отличается\":true,\"unknown_fail_closed\":true,\"нет_mode_change_equals_changed\":true},\"status\":\"PASS\",\"target_sha256\":\"b248a4c32c9cc64e5747e7dce6c7fc0a23f5124a77c71ce72e27a81aceae9d2d\"}\n"
"output": "HOMELAB_RESULT_CONTRACT={\"changes_made\":true,\"command_id\":\"RUNNER-MUTATION-CONTRACT-APPLY-20260726T205715Z\",\"rollback_restored\":null,\"rollback_started\":false,\"status\":\"OK\",\"version\":1}\n{\"PLAN_SHA256\":\"22eedf9b1090960a7f92cef992f481d8d6cc3f42e4f4ecd6e27bbda4ebf752bd\",\"backup_changed\":false,\"changes_made\":true,\"cluster_changed\":false,\"gitea_changed\":false,\"postconditions\":{\"adapter_healthy\":true,\"adapter_not_restarted\":true,\"adapter_self_test\":true,\"portal_health\":true,\"portal_healthy\":true,\"portal_identity_self_test\":true,\"portal_not_restarted\":true,\"preserved_source_lock\":true,\"rollback_copy_mode_0600\":true,\"rollback_copy_sha256\":true,\"runner_bash_syntax\":true,\"runner_mode_preserved\":true,\"runner_owner_preserved\":true,\"runner_regular_not_symlink\":true,\"runner_self_test\":true,\"target_sha256\":true},\"rollback_copy\":\"/var/lib/homelab-change-rollback/RUNNER-MUTATION-CONTRACT-APPLY-20260726T205715Z/homelab-chat-run.rollback\",\"rollback_metadata\":\"/var/lib/homelab-change-rollback/RUNNER-MUTATION-CONTRACT-APPLY-20260726T205715Z/metadata.json\",\"rollback_started\":false,\"service_restart\":false,\"source_sha256\":\"2a88defef9517f89bc60934dce82097f8e316b08af9417e95167ea5d759a10d9\",\"status\":\"OK\",\"target_sha256\":\"b248a4c32c9cc64e5747e7dce6c7fc0a23f5124a77c71ce72e27a81aceae9d2d\"}\n"
}
+8 -7
View File
@@ -1,25 +1,26 @@
CHAT_OUTPUT_BEGIN
COMMAND_ID=RUNNER-MUTATION-CONTRACT-PLAN-20260726T204219Z
COMMAND_ID=RUNNER-MUTATION-CONTRACT-APPLY-20260726T205715Z
STATUS=OK
RC=0
HOST=pve01
MODE=verify
MODE=change
COMPONENT=runner
REFERENCE_REGISTER_CHECK=OK
REFERENCE_SHA256=5763f2f8edc75fcf6f3951f8c95896d1cc112ceccb6cf5b64a383f540a4deb8e
ERROR_REGISTER_CHECK=OK
ERROR_REGISTER_SHA256=24934a2c7fa5c26f6e828583c4aefac7f143b40c0171736ed7571e617d55ab83
COMMAND_SHA256=18ca7f1fb586bea8de09771fb8a2620d7c1e624494878d745b07a897fb6cb780
COMMAND_SHA256=83adb37ea842dc736fd0a58cdb67f768b204e01fb6b32c90775504c67958de16
DUPLICATE_FAILED_COMMAND_BLOCKED=false
EXECUTION_STARTED=true
CHANGES_MADE=false
CHANGES_MADE=true
SANITIZED=yes
SECRETS_INCLUDED=no
PRIVATE_ADDRESSES_INCLUDED=no
RAW_EVIDENCE_SHA256=65beaf599a688212c2299703e01dab946a652f2837f41a98f983eee7fadf9909
SANITIZED_OUTPUT_SHA256=65beaf599a688212c2299703e01dab946a652f2837f41a98f983eee7fadf9909
RAW_EVIDENCE_SHA256=3c98acc82d21d62e7fdc2ef0207432fe1d3c10547761ceffaea3b1b4afcc971e
SANITIZED_OUTPUT_SHA256=3c98acc82d21d62e7fdc2ef0207432fe1d3c10547761ceffaea3b1b4afcc971e
OUTPUT_BEGIN
{"PLAN_SHA256":"22eedf9b1090960a7f92cef992f481d8d6cc3f42e4f4ecd6e27bbda4ebf752bd","changes_made":false,"command_id":"RUNNER-MUTATION-CONTRACT-PLAN-20260726T204219Z","diff":{"additions":285,"deletions":8,"diff_sha256":"6ce1b41ad8de334ca804bccee03cae25ca600364473eee1677afde818cfcc192","hunks":8},"mutating_states":{"closed":["RUNNER-LINKED-REMOVAL-APPLY-20260726T202107Z","RUNNER-LINKED-REMOVAL-APPLY-FINAL-20260726T202825Z"],"unresolved":[]},"plan":{"anti_regression":["mode=change больше не означает changes_made=true","повтор заблокированной команды считается NO_MUTATION","несовпадающий command_id контракта блокируется","несколько контрактов блокируются","отсутствующий контракт блокируется с UNKNOWN"],"file":"/usr/local/sbin/homelab-chat-run","next":"после APPLY обновить Adapter META/state, затем закрыть старые precondition-only записи","operation":"УСТАНОВИТЬ_КОНТРАКТ_ФАКТИЧЕСКОЙ_МУТАЦИИ_RUNNER","postconditions":["target SHA совпадает","bash -n проходит","--self-test проходит","verify/read-only всегда changes_made=false","BLOCKED change с контрактом даёт changes_made=false","change без контракта даёт changes_made=null и FAIL","успешная мутация даёт changes_made=true","успешный rollback даёт mutation_outcome=ROLLED_BACK","Adapter и Portal не перезапускаются"],"preconditions":{"adapter_self_test":true,"adapter_здоров":true,"portal_identity_self_test":true,"portal_здоров":true,"известные_старые_попытки_закрыты":true,"нет_других_mutating_failure":true,"текущая_capsule_корректна":true,"точный_source_lock":true},"risk":"REVERSIBLE","rollback":{"atomic_restore":true,"copy_before_apply":true,"copy_mode":"0600","diagnostics_before_rollback":true,"verify_sha256":"2a88defef9517f89bc60934dce82097f8e316b08af9417e95167ea5d759a10d9"},"schema":1,"scope":{"backup_changed":false,"cluster_changed":false,"gitea_changed":false,"modify":["/usr/local/sbin/homelab-chat-run"],"preserve":["/usr/local/sbin/homelab-command-adapter","/usr/local/sbin/homelab-command-portal","/usr/local/sbin/homelab-chat-run-linked"],"service_restart":false},"source_evidence":["d33b0cb4f775fb6bfb57d7681273a2ae9b3e884088ae794f1c152797cd03f6dd","98474ad0c0c5ab2b6507c2469ea804b3c771f8a8f71c23a8238fd64ae1fe989d"],"source_sha256":"2a88defef9517f89bc60934dce82097f8e316b08af9417e95167ea5d759a10d9","target":"pve01","target_sha256":"b248a4c32c9cc64e5747e7dce6c7fc0a23f5124a77c71ce72e27a81aceae9d2d"},"rollback_started":false,"source_sha256":"2a88defef9517f89bc60934dce82097f8e316b08af9417e95167ea5d759a10d9","static_tests":{"bash_syntax":true,"marker_контракта":true,"preexecution_block_no_mutation":true,"runner_self_test":true,"target_sha_отличается":true,"unknown_fail_closed":true,"нет_mode_change_equals_changed":true},"status":"PASS","target_sha256":"b248a4c32c9cc64e5747e7dce6c7fc0a23f5124a77c71ce72e27a81aceae9d2d"}
HOMELAB_RESULT_CONTRACT={"changes_made":true,"command_id":"RUNNER-MUTATION-CONTRACT-APPLY-20260726T205715Z","rollback_restored":null,"rollback_started":false,"status":"OK","version":1}
{"PLAN_SHA256":"22eedf9b1090960a7f92cef992f481d8d6cc3f42e4f4ecd6e27bbda4ebf752bd","backup_changed":false,"changes_made":true,"cluster_changed":false,"gitea_changed":false,"postconditions":{"adapter_healthy":true,"adapter_not_restarted":true,"adapter_self_test":true,"portal_health":true,"portal_healthy":true,"portal_identity_self_test":true,"portal_not_restarted":true,"preserved_source_lock":true,"rollback_copy_mode_0600":true,"rollback_copy_sha256":true,"runner_bash_syntax":true,"runner_mode_preserved":true,"runner_owner_preserved":true,"runner_regular_not_symlink":true,"runner_self_test":true,"target_sha256":true},"rollback_copy":"/var/lib/homelab-change-rollback/RUNNER-MUTATION-CONTRACT-APPLY-20260726T205715Z/homelab-chat-run.rollback","rollback_metadata":"/var/lib/homelab-change-rollback/RUNNER-MUTATION-CONTRACT-APPLY-20260726T205715Z/metadata.json","rollback_started":false,"service_restart":false,"source_sha256":"2a88defef9517f89bc60934dce82097f8e316b08af9417e95167ea5d759a10d9","status":"OK","target_sha256":"b248a4c32c9cc64e5747e7dce6c7fc0a23f5124a77c71ce72e27a81aceae9d2d"}
OUTPUT_END
CHAT_OUTPUT_END