diff --git a/runtime/history/SUPPORT-261006-SNIKKET-WGEDGE-SOURCE-HISTORY-RCA-99738R1.json b/runtime/history/SUPPORT-261006-SNIKKET-WGEDGE-SOURCE-HISTORY-RCA-99738R1.json new file mode 100644 index 00000000..4e685f05 --- /dev/null +++ b/runtime/history/SUPPORT-261006-SNIKKET-WGEDGE-SOURCE-HISTORY-RCA-99738R1.json @@ -0,0 +1,38 @@ +{ + "schema_version": 1, + "channel": "homelab-runtime", + "command_id": "SUPPORT-261006-SNIKKET-WGEDGE-SOURCE-HISTORY-RCA-99738R1", + "status": "OK", + "rc": 0, + "host": "pve01", + "mode": "read-only", + "component": "snikket-wgedge-source-history-rca", + "started_at_utc": "2026-10-06T17:52:05Z", + "finished_at_utc": "2026-10-06T17:52:09Z", + "reference_register_checked": true, + "reference_sha256": "5a3d8e5154c41cb582a4e0aca68090be1f0138918bf82131a948df326f9d8d66", + "error_register_checked": true, + "error_register_sha256": "3b09a553ec0f527ed3afeed4753f52a74ee3036045bbfb3c685e9f8af4ba7ba0", + "command_sha256": "b72f8aea0efdedfd1585f74fe26fff8d183e9a4538dce609a82f6bae4fef6667", + "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": "7c2f6f882be15d7f108ee4daada8307d99e6ee9f71276b816e814a4ad06919c5", + "sanitized_output_sha256": "7c2f6f882be15d7f108ee4daada8307d99e6ee9f71276b816e814a4ad06919c5", + "output_truncated_in_json": false, + "full_sanitized_output_url": "https://git.gram1.ru/.well-known/homelab-runtime/latest.txt", + "output": "SNIKKET_WGEDGE_SOURCE_HISTORY_RCA=V1\nMODE=read-only\nNO_MUTATION=true\nSOURCE_REPO_MATCH_COUNT=1\nSOURCE_REPO_BASENAME=homelab-ops\nSOURCE_REPO_PATH_SHA=8598ef1c63466691ec91c66fa47f29edcd2530f1de043b13ed32760a1dbac3ba\nSOURCE_HEAD=bd85699d8b588a34c480f10dee71323687bd48f1\nSOURCE_BRANCH=main\nSOURCE_WORKTREE_DIRTY_COUNT=0\nTARGET_COMMIT=83b3d27c1de533cabb2d23e337579b06ddd0c355\nTARGET_PARENT=d399d24440f948b518761ecfd516521993861b43\nTARGET_DATE=2026-09-28T08:44:44+03:00\nTARGET_SUBJECT=skladchik: align NetBird route health with overlay peer\nTARGET_CHANGED_FILE_COUNT=3\nREC|TARGET_FILE|BASENAME=skladchik-reports-monitor-health-alert.py|PARENT=runtime|PATH_SHA=2cf94533e16decd5f8d6b2996104d83857a74de1d151c1a79750c4532597edb8\nREC|TARGET_FILE|BASENAME=skladchik-reports-monitor-status-edge|PARENT=runtime|PATH_SHA=afa86a4ed42cb9238cc2e5e9b2594a9a1fd6c779d76de2fea8ab15dcf17e3480\nREC|TARGET_FILE|BASENAME=skladchik-reports-monitor-supervisor|PARENT=runtime|PATH_SHA=3a84408d15ba97496865eab207054845e1d90af4decf786591ec5f01b3d4c27e\nHISTORY_WG_EDGE01_COUNT=1\nREC|HISTORY|NEEDLE=WG_EDGE01|COMMIT=911d8cc52d5e8a677f132b736d01ade7a5879e59|DATE=2026-08-17T10:27:24+03:00|SUBJECT=CR-2026-0080: build Snikket EDGE cutover task\nHISTORY_SNIKKET_EDGE_INGRESS_NFT_COUNT=0\nHISTORY_17777_COUNT=3\nREC|HISTORY|NEEDLE=17777|COMMIT=85a325224532505bce79ef3bc2a224a162a32dd1|DATE=2026-08-17T10:08:28+03:00|SUBJECT=CR-2026-0080: approve Snikket EDGE cutover design\nREC|HISTORY|NEEDLE=17777|COMMIT=bcee02410290c4563fea4507a35fdf6dce08d674|DATE=2026-08-17T10:13:58+03:00|SUBJECT=CR-2026-0080: plan Snikket EDGE cutover implementation\nREC|HISTORY|NEEDLE=17777|COMMIT=911d8cc52d5e8a677f132b736d01ade7a5879e59|DATE=2026-08-17T10:27:24+03:00|SUBJECT=CR-2026-0080: build Snikket EDGE cutover task\nHISTORY_51820_COUNT=6\nREC|HISTORY|NEEDLE=51820|COMMIT=d29752e1de327ad588bf3f1689f277f55e33e58c|DATE=2026-07-17T08:05:30+03:00|SUBJECT=CR-2026-0001 recover handoff and operational context\nREC|HISTORY|NEEDLE=51820|COMMIT=b0f9935dce45a7dee2949aef342cadec90ff38a2|DATE=2026-07-17T13:48:47+03:00|SUBJECT=CR-2026-0003 remediate cluster storage retention\nREC|HISTORY|NEEDLE=51820|COMMIT=f9d3ba8caf65005605aa8aee2ede7e4e7e94ee49|DATE=2026-07-31T10:37:56+03:00|SUBJECT=GRAM1: capture initial site baseline 20260731T071400Z\nREC|HISTORY|NEEDLE=51820|COMMIT=542f34b5903a437f43c869c81d3736dbfe081b81|DATE=2026-08-06T05:41:37+03:00|SUBJECT=homelab: canonical cluster handbook and Error System V2\nREC|HISTORY|NEEDLE=51820|COMMIT=b2853f444fe8725a590f96bf40c45bd694eddfb4|DATE=2026-08-06T05:41:39+03:00|SUBJECT=rollback: restore pre-transaction path states\nREC|HISTORY|NEEDLE=51820|COMMIT=772e862ee9b775a2d3eaea10b214688ab75b7434|DATE=2026-08-19T07:04:49+03:00|SUBJECT=docs(CR-2026-0084): add cluster operational knowledge base\nCURRENT_SOURCE_REFERENCE_COUNT=20\nREC|SOURCE_REF|BASENAME=2026-08-17-snikket-edge-cutover.md|PARENT=plans|LINE=20|PATH_SHA=72bcfe0160d221fc3f06466006c3163dc2e5f67f2224cacd1c5c50e02135eb37\nREC|SOURCE_REF|BASENAME=2026-08-17-snikket-edge-cutover.md|PARENT=plans|LINE=23|PATH_SHA=72bcfe0160d221fc3f06466006c3163dc2e5f67f2224cacd1c5c50e02135eb37\nREC|SOURCE_REF|BASENAME=2026-08-17-snikket-edge-cutover-design.md|PARENT=specs|LINE=8|PATH_SHA=224ed8ac7b09df73545e49a1ac681848f67b00df285ec5a3b7b8398f21d015ee\nREC|SOURCE_REF|BASENAME=2026-08-17-snikket-edge-cutover-design.md|PARENT=specs|LINE=20|PATH_SHA=224ed8ac7b09df73545e49a1ac681848f67b00df285ec5a3b7b8398f21d015ee\nREC|SOURCE_REF|BASENAME=task.json|PARENT=snikket-edge-cutover-v1|LINE=23|PATH_SHA=9a63e2769a24f3ce2c23c172837f46c1f044cbd8f886e45313a3b0e7e467e55d\nREC|SOURCE_REF|BASENAME=task.json|PARENT=snikket-edge-cutover-v1|LINE=37|PATH_SHA=9a63e2769a24f3ce2c23c172837f46c1f044cbd8f886e45313a3b0e7e467e55d\nREC|SOURCE_REF|BASENAME=task.json|PARENT=snikket-edge-cutover-v1|LINE=66|PATH_SHA=9a63e2769a24f3ce2c23c172837f46c1f044cbd8f886e45313a3b0e7e467e55d\nREC|SOURCE_REF|BASENAME=task.json|PARENT=snikket-edge-cutover-v1|LINE=137|PATH_SHA=9a63e2769a24f3ce2c23c172837f46c1f044cbd8f886e45313a3b0e7e467e55d\nREC|SOURCE_REF|BASENAME=cutover.py|PARENT=tools|LINE=13|PATH_SHA=d90388278e2775b1ac7534b35946dfa3dadd03f65cd16117db653731b47346ad\nREC|SOURCE_REF|BASENAME=cutover.py|PARENT=tools|LINE=175|PATH_SHA=d90388278e2775b1ac7534b35946dfa3dadd03f65cd16117db653731b47346ad\nREC|SOURCE_REF|BASENAME=cutover.py|PARENT=tools|LINE=181|PATH_SHA=d90388278e2775b1ac7534b35946dfa3dadd03f65cd16117db653731b47346ad\nREC|SOURCE_REF|BASENAME=cutover.py|PARENT=tools|LINE=205|PATH_SHA=d90388278e2775b1ac7534b35946dfa3dadd03f65cd16117db653731b47346ad\nREC|SOURCE_REF|BASENAME=cutover.py|PARENT=tools|LINE=237|PATH_SHA=d90388278e2775b1ac7534b35946dfa3dadd03f65cd16117db653731b47346ad\nREC|SOURCE_REF|BASENAME=cutover.py|PARENT=tools|LINE=238|PATH_SHA=d90388278e2775b1ac7534b35946dfa3dadd03f65cd16117db653731b47346ad\nREC|SOURCE_REF|BASENAME=cutover.py|PARENT=tools|LINE=244|PATH_SHA=d90388278e2775b1ac7534b35946dfa3dadd03f65cd16117db653731b47346ad\nREC|SOURCE_REF|BASENAME=cutover.py|PARENT=tools|LINE=245|PATH_SHA=d90388278e2775b1ac7534b35946dfa3dadd03f65cd16117db653731b47346ad\nREC|SOURCE_REF|BASENAME=cutover.py|PARENT=tools|LINE=247|PATH_SHA=d90388278e2775b1ac7534b35946dfa3dadd03f65cd16117db653731b47346ad\nREC|SOURCE_REF|BASENAME=cutover.py|PARENT=tools|LINE=252|PATH_SHA=d90388278e2775b1ac7534b35946dfa3dadd03f65cd16117db653731b47346ad\nREC|SOURCE_REF|BASENAME=cutover.py|PARENT=tools|LINE=253|PATH_SHA=d90388278e2775b1ac7534b35946dfa3dadd03f65cd16117db653731b47346ad\nREC|SOURCE_REF|BASENAME=cutover.py|PARENT=tools|LINE=258|PATH_SHA=d90388278e2775b1ac7534b35946dfa3dadd03f65cd16117db653731b47346ad\nSOURCE_SUBJECT_HIT_COUNT=31\nREC|SOURCE_LOG|COMMIT=0a045c3f90a98b78547f635a5d80c63901e118e7|DATE=2026-08-31T19:15:39Z|SUBJECT=Merge pull request 'CR0104 add explicit edge rollback' (#41) from cr-2026-0104-command-stack-retirement into main\nREC|SOURCE_LOG|COMMIT=3bc25b7abde3ef263d728549e92de5ec6dc4a027|DATE=2026-08-31T22:13:52+03:00|SUBJECT=CR0104 add explicit edge rollback\nREC|SOURCE_LOG|COMMIT=73c4cb4cc446ec8a10f81ba635624f2bf9373467|DATE=2026-08-31T22:01:03+03:00|SUBJECT=CR0104 add edge ingress retirement\nREC|SOURCE_LOG|COMMIT=005074d9abde9d599b7394b92fc33f56596e7589|DATE=2026-08-23T06:34:35+03:00|SUBJECT=fix(CR-2026-0096): include email ledger in backup contract\nREC|SOURCE_LOG|COMMIT=02160e152d6ed349c5eb7614283b2a6a2cd414d1|DATE=2026-08-23T06:17:38+03:00|SUBJECT=fix(CR-2026-0096): delegate email ledger path from integration hook\nREC|SOURCE_LOG|COMMIT=f178e01b7f8ec831fa212be027c95adfbe941910|DATE=2026-08-23T06:01:45+03:00|SUBJECT=fix(CR-2026-0096): place email ledger beside shadow ledger\nREC|SOURCE_LOG|COMMIT=634bb165226627a5694d37c7d858a9fda00a04c9|DATE=2026-08-22T09:48:54+03:00|SUBJECT=feat: add calibrated models decision and execution ledger\nREC|SOURCE_LOG|COMMIT=772e862ee9b775a2d3eaea10b214688ab75b7434|DATE=2026-08-19T07:04:49+03:00|SUBJECT=docs(CR-2026-0084): add cluster operational knowledge base\nREC|SOURCE_LOG|COMMIT=d8ae1b62d5d09a2a0249541967daf1ffd15eb932|DATE=2026-08-18T11:24:38Z|SUBJECT=Merge pull request 'Cr 2026 0083 gitea edge publisher v3' (#17) from cr-2026-0083-gitea-edge-publisher-v3 into main\nREC|SOURCE_LOG|COMMIT=064c6f23ab8a7038b0b0f64545ddf1965c5f860e|DATE=2026-08-18T08:42:28+03:00|SUBJECT=fix(CR-2026-0083): harden EDGE Publisher V3 deployment\nREC|SOURCE_LOG|COMMIT=f0d2d006953079a07c9510e2489d01c4969826b4|DATE=2026-08-18T00:30:16+03:00|SUBJECT=CR-2026-0083: add Gitea EDGE Publisher V3 source\nREC|SOURCE_LOG|COMMIT=8a2e58e3ace69b76d4508434290cd9600cba3270|DATE=2026-08-17T15:11:21Z|SUBJECT=Merge pull request 'CR-2026-0081: fix VM150 EDGE egress probe' (#16) from cr-2026-0081-snikket-hardening into main\nREC|SOURCE_LOG|COMMIT=f418f45ae134724c4f23a2712718fb842db9a6ae|DATE=2026-08-17T18:10:53+03:00|SUBJECT=CR-2026-0081: fix VM150 EDGE egress probe parsing\nREC|SOURCE_LOG|COMMIT=17e094035bd395a8a632bafef2570be5004f91cc|DATE=2026-08-17T15:04:12Z|SUBJECT=Merge pull request 'CR-2026-0081: fix Netcraze Snikket forward parsing' (#15) from cr-2026-0081-snikket-hardening into main\nREC|SOURCE_LOG|COMMIT=58313735ab3507975331922e9e016d0b20e473d0|DATE=2026-08-17T14:51:25Z|SUBJECT=Merge pull request 'CR-2026-0081: retire obsolete Snikket home forwards' (#14) from cr-2026-0081-snikket-hardening into main\nREC|SOURCE_LOG|COMMIT=0bdb4794d3910ec579bc539dcb75f49dd36f86cc|DATE=2026-08-17T13:49:14+03:00|SUBJECT=CR-2026-0081: retire obsolete Snikket home forwards\nREC|SOURCE_LOG|COMMIT=6c2f65c3d98a20f6b5581cb019bbc6b371d343fb|DATE=2026-08-17T10:10:26Z|SUBJECT=Merge pull request 'CR-2026-0081: fix legacy TURN no-consumer scan' (#13) from cr-2026-0081-snikket-hardening into main\nREC|SOURCE_LOG|COMMIT=6c3c5db756b1c5fa77dee0d14fcb23432662240a|DATE=2026-08-17T13:09:58+03:00|SUBJECT=CR-2026-0081: harden optional Snikket scan roots\nREC|SOURCE_LOG|COMMIT=093efa5ee15da274e54bdd10b86fb97768414ef5|DATE=2026-08-17T08:42:24Z|SUBJECT=Merge pull request 'CR-2026-0081: retire legacy turn.gram1.ru DNS' (#12) from cr-2026-0081-snikket-hardening into main\nREC|SOURCE_LOG|COMMIT=2af4c5cb638754862c376bc710f1e25389d96072|DATE=2026-08-17T11:10:01+03:00|SUBJECT=CR-2026-0081: approve Snikket post-cutover hardening design\nREC|SOURCE_LOG|COMMIT=81dceedd5bbbc900c25d1638b476437ae69a0783|DATE=2026-08-17T08:02:10Z|SUBJECT=Merge pull request 'CR-2026-0080: harden post-restart readiness' (#11) from cr-2026-0080-snikket-edge-cutover into main\nREC|SOURCE_LOG|COMMIT=c920450e5a2a1ba987cba8c6ede9c4f08b217783|DATE=2026-08-17T07:55:54Z|SUBJECT=Merge pull request 'CR-2026-0080: fix coturn container shell quoting' (#10) from cr-2026-0080-snikket-edge-cutover into main\nREC|SOURCE_LOG|COMMIT=b261135e87a9acb1e1e289a41d16baef8885cb3c|DATE=2026-08-17T07:50:18Z|SUBJECT=Merge pull request 'CR-2026-0080: harden failed Snikket EDGE apply' (#9) from cr-2026-0080-snikket-edge-cutover into main\nREC|SOURCE_LOG|COMMIT=cdf7e519df309d0a1dd6c2c4eeb4b051488fd7bf|DATE=2026-08-17T07:29:47Z|SUBJECT=Merge pull request 'CR-2026-0080: Snikket EDGE traffic cutover' (#8) from cr-2026-0080-snikket-edge-cutover into main\nREC|SOURCE_LOG|COMMIT=911d8cc52d5e8a677f132b736d01ade7a5879e59|DATE=2026-08-17T10:27:24+03:00|SUBJECT=CR-2026-0080: build Snikket EDGE cutover task\nREC|SOURCE_LOG|COMMIT=bcee02410290c4563fea4507a35fdf6dce08d674|DATE=2026-08-17T10:13:58+03:00|SUBJECT=CR-2026-0080: plan Snikket EDGE cutover implementation\nREC|SOURCE_LOG|COMMIT=85a325224532505bce79ef3bc2a224a162a32dd1|DATE=2026-08-17T10:08:28+03:00|SUBJECT=CR-2026-0080: approve Snikket EDGE cutover design\nREC|SOURCE_LOG|COMMIT=81174ec87f42a04f893df6ce2a3a4bcde8e1e2ee|DATE=2026-08-16T04:45:00Z|SUBJECT=Merge pull request 'CR-2026-0078: harden Snikket TURN durability' (#6) from cr-2026-0078-snikket-turn-durability into main\nREC|SOURCE_LOG|COMMIT=eb010cef52173ddba0f24f5486acab471efa05d6|DATE=2026-08-16T07:08:28+03:00|SUBJECT=CR-2026-0078: harden Snikket TURN durability\nREC|SOURCE_LOG|COMMIT=c1a71bc168f06fbd78e8956bc3836e75a6241244|DATE=2026-08-15T18:04:07+03:00|SUBJECT=CR-2026-0076: install Docker CLI for Snikket guest\nREC|SOURCE_LOG|COMMIT=08e77a62ccbf5d7684c0946f922fb7e28d1f4073|DATE=2026-08-15T02:26:48+03:00|SUBJECT=CR-2026-0076: harden Snikket VM150 rebuild source\nDECISION=PASS_SNIKKET_WGEDGE_SOURCE_HISTORY_RCA\nNEXT_GATE=RESTORE_FROM_SOURCE_HISTORY\nTASK_RESULT=SNIKKET_WGEDGE_SOURCE_HISTORY_RCA\nCHANGES_MADE=false\nROLLBACK_STARTED=false\nROLLBACK_RESTORED=null\nMUTATION_OUTCOME=NO_MUTATION\nHOMELAB_RESULT_CONTRACT={\"version\":1,\"command_id\":\"SUPPORT-261006-SNIKKET-WGEDGE-SOURCE-HISTORY-RCA-99738R1\",\"status\":\"OK\",\"changes_made\":false,\"rollback_started\":false,\"rollback_restored\":null}\n" +} diff --git a/runtime/history/SUPPORT-261006-SNIKKET-WGEDGE-SOURCE-HISTORY-RCA-99738R1.txt b/runtime/history/SUPPORT-261006-SNIKKET-WGEDGE-SOURCE-HISTORY-RCA-99738R1.txt new file mode 100644 index 00000000..22391f7e --- /dev/null +++ b/runtime/history/SUPPORT-261006-SNIKKET-WGEDGE-SOURCE-HISTORY-RCA-99738R1.txt @@ -0,0 +1,124 @@ +CHAT_OUTPUT_BEGIN +COMMAND_ID=SUPPORT-261006-SNIKKET-WGEDGE-SOURCE-HISTORY-RCA-99738R1 +STATUS=OK +RC=0 +HOST=pve01 +MODE=read-only +COMPONENT=snikket-wgedge-source-history-rca +REFERENCE_REGISTER_CHECK=OK +REFERENCE_SHA256=5a3d8e5154c41cb582a4e0aca68090be1f0138918bf82131a948df326f9d8d66 +ERROR_REGISTER_CHECK=OK +ERROR_REGISTER_SHA256=3b09a553ec0f527ed3afeed4753f52a74ee3036045bbfb3c685e9f8af4ba7ba0 +COMMAND_SHA256=b72f8aea0efdedfd1585f74fe26fff8d183e9a4538dce609a82f6bae4fef6667 +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=7c2f6f882be15d7f108ee4daada8307d99e6ee9f71276b816e814a4ad06919c5 +SANITIZED_OUTPUT_SHA256=7c2f6f882be15d7f108ee4daada8307d99e6ee9f71276b816e814a4ad06919c5 +OUTPUT_BEGIN +SNIKKET_WGEDGE_SOURCE_HISTORY_RCA=V1 +MODE=read-only +NO_MUTATION=true +SOURCE_REPO_MATCH_COUNT=1 +SOURCE_REPO_BASENAME=homelab-ops +SOURCE_REPO_PATH_SHA=8598ef1c63466691ec91c66fa47f29edcd2530f1de043b13ed32760a1dbac3ba +SOURCE_HEAD=bd85699d8b588a34c480f10dee71323687bd48f1 +SOURCE_BRANCH=main +SOURCE_WORKTREE_DIRTY_COUNT=0 +TARGET_COMMIT=83b3d27c1de533cabb2d23e337579b06ddd0c355 +TARGET_PARENT=d399d24440f948b518761ecfd516521993861b43 +TARGET_DATE=2026-09-28T08:44:44+03:00 +TARGET_SUBJECT=skladchik: align NetBird route health with overlay peer +TARGET_CHANGED_FILE_COUNT=3 +REC|TARGET_FILE|BASENAME=skladchik-reports-monitor-health-alert.py|PARENT=runtime|PATH_SHA=2cf94533e16decd5f8d6b2996104d83857a74de1d151c1a79750c4532597edb8 +REC|TARGET_FILE|BASENAME=skladchik-reports-monitor-status-edge|PARENT=runtime|PATH_SHA=afa86a4ed42cb9238cc2e5e9b2594a9a1fd6c779d76de2fea8ab15dcf17e3480 +REC|TARGET_FILE|BASENAME=skladchik-reports-monitor-supervisor|PARENT=runtime|PATH_SHA=3a84408d15ba97496865eab207054845e1d90af4decf786591ec5f01b3d4c27e +HISTORY_WG_EDGE01_COUNT=1 +REC|HISTORY|NEEDLE=WG_EDGE01|COMMIT=911d8cc52d5e8a677f132b736d01ade7a5879e59|DATE=2026-08-17T10:27:24+03:00|SUBJECT=CR-2026-0080: build Snikket EDGE cutover task +HISTORY_SNIKKET_EDGE_INGRESS_NFT_COUNT=0 +HISTORY_17777_COUNT=3 +REC|HISTORY|NEEDLE=17777|COMMIT=85a325224532505bce79ef3bc2a224a162a32dd1|DATE=2026-08-17T10:08:28+03:00|SUBJECT=CR-2026-0080: approve Snikket EDGE cutover design +REC|HISTORY|NEEDLE=17777|COMMIT=bcee02410290c4563fea4507a35fdf6dce08d674|DATE=2026-08-17T10:13:58+03:00|SUBJECT=CR-2026-0080: plan Snikket EDGE cutover implementation +REC|HISTORY|NEEDLE=17777|COMMIT=911d8cc52d5e8a677f132b736d01ade7a5879e59|DATE=2026-08-17T10:27:24+03:00|SUBJECT=CR-2026-0080: build Snikket EDGE cutover task +HISTORY_51820_COUNT=6 +REC|HISTORY|NEEDLE=51820|COMMIT=d29752e1de327ad588bf3f1689f277f55e33e58c|DATE=2026-07-17T08:05:30+03:00|SUBJECT=CR-2026-0001 recover handoff and operational context +REC|HISTORY|NEEDLE=51820|COMMIT=b0f9935dce45a7dee2949aef342cadec90ff38a2|DATE=2026-07-17T13:48:47+03:00|SUBJECT=CR-2026-0003 remediate cluster storage retention +REC|HISTORY|NEEDLE=51820|COMMIT=f9d3ba8caf65005605aa8aee2ede7e4e7e94ee49|DATE=2026-07-31T10:37:56+03:00|SUBJECT=GRAM1: capture initial site baseline 20260731T071400Z +REC|HISTORY|NEEDLE=51820|COMMIT=542f34b5903a437f43c869c81d3736dbfe081b81|DATE=2026-08-06T05:41:37+03:00|SUBJECT=homelab: canonical cluster handbook and Error System V2 +REC|HISTORY|NEEDLE=51820|COMMIT=b2853f444fe8725a590f96bf40c45bd694eddfb4|DATE=2026-08-06T05:41:39+03:00|SUBJECT=rollback: restore pre-transaction path states +REC|HISTORY|NEEDLE=51820|COMMIT=772e862ee9b775a2d3eaea10b214688ab75b7434|DATE=2026-08-19T07:04:49+03:00|SUBJECT=docs(CR-2026-0084): add cluster operational knowledge base +CURRENT_SOURCE_REFERENCE_COUNT=20 +REC|SOURCE_REF|BASENAME=2026-08-17-snikket-edge-cutover.md|PARENT=plans|LINE=20|PATH_SHA=72bcfe0160d221fc3f06466006c3163dc2e5f67f2224cacd1c5c50e02135eb37 +REC|SOURCE_REF|BASENAME=2026-08-17-snikket-edge-cutover.md|PARENT=plans|LINE=23|PATH_SHA=72bcfe0160d221fc3f06466006c3163dc2e5f67f2224cacd1c5c50e02135eb37 +REC|SOURCE_REF|BASENAME=2026-08-17-snikket-edge-cutover-design.md|PARENT=specs|LINE=8|PATH_SHA=224ed8ac7b09df73545e49a1ac681848f67b00df285ec5a3b7b8398f21d015ee +REC|SOURCE_REF|BASENAME=2026-08-17-snikket-edge-cutover-design.md|PARENT=specs|LINE=20|PATH_SHA=224ed8ac7b09df73545e49a1ac681848f67b00df285ec5a3b7b8398f21d015ee +REC|SOURCE_REF|BASENAME=task.json|PARENT=snikket-edge-cutover-v1|LINE=23|PATH_SHA=9a63e2769a24f3ce2c23c172837f46c1f044cbd8f886e45313a3b0e7e467e55d +REC|SOURCE_REF|BASENAME=task.json|PARENT=snikket-edge-cutover-v1|LINE=37|PATH_SHA=9a63e2769a24f3ce2c23c172837f46c1f044cbd8f886e45313a3b0e7e467e55d +REC|SOURCE_REF|BASENAME=task.json|PARENT=snikket-edge-cutover-v1|LINE=66|PATH_SHA=9a63e2769a24f3ce2c23c172837f46c1f044cbd8f886e45313a3b0e7e467e55d +REC|SOURCE_REF|BASENAME=task.json|PARENT=snikket-edge-cutover-v1|LINE=137|PATH_SHA=9a63e2769a24f3ce2c23c172837f46c1f044cbd8f886e45313a3b0e7e467e55d +REC|SOURCE_REF|BASENAME=cutover.py|PARENT=tools|LINE=13|PATH_SHA=d90388278e2775b1ac7534b35946dfa3dadd03f65cd16117db653731b47346ad +REC|SOURCE_REF|BASENAME=cutover.py|PARENT=tools|LINE=175|PATH_SHA=d90388278e2775b1ac7534b35946dfa3dadd03f65cd16117db653731b47346ad +REC|SOURCE_REF|BASENAME=cutover.py|PARENT=tools|LINE=181|PATH_SHA=d90388278e2775b1ac7534b35946dfa3dadd03f65cd16117db653731b47346ad +REC|SOURCE_REF|BASENAME=cutover.py|PARENT=tools|LINE=205|PATH_SHA=d90388278e2775b1ac7534b35946dfa3dadd03f65cd16117db653731b47346ad +REC|SOURCE_REF|BASENAME=cutover.py|PARENT=tools|LINE=237|PATH_SHA=d90388278e2775b1ac7534b35946dfa3dadd03f65cd16117db653731b47346ad +REC|SOURCE_REF|BASENAME=cutover.py|PARENT=tools|LINE=238|PATH_SHA=d90388278e2775b1ac7534b35946dfa3dadd03f65cd16117db653731b47346ad +REC|SOURCE_REF|BASENAME=cutover.py|PARENT=tools|LINE=244|PATH_SHA=d90388278e2775b1ac7534b35946dfa3dadd03f65cd16117db653731b47346ad +REC|SOURCE_REF|BASENAME=cutover.py|PARENT=tools|LINE=245|PATH_SHA=d90388278e2775b1ac7534b35946dfa3dadd03f65cd16117db653731b47346ad +REC|SOURCE_REF|BASENAME=cutover.py|PARENT=tools|LINE=247|PATH_SHA=d90388278e2775b1ac7534b35946dfa3dadd03f65cd16117db653731b47346ad +REC|SOURCE_REF|BASENAME=cutover.py|PARENT=tools|LINE=252|PATH_SHA=d90388278e2775b1ac7534b35946dfa3dadd03f65cd16117db653731b47346ad +REC|SOURCE_REF|BASENAME=cutover.py|PARENT=tools|LINE=253|PATH_SHA=d90388278e2775b1ac7534b35946dfa3dadd03f65cd16117db653731b47346ad +REC|SOURCE_REF|BASENAME=cutover.py|PARENT=tools|LINE=258|PATH_SHA=d90388278e2775b1ac7534b35946dfa3dadd03f65cd16117db653731b47346ad +SOURCE_SUBJECT_HIT_COUNT=31 +REC|SOURCE_LOG|COMMIT=0a045c3f90a98b78547f635a5d80c63901e118e7|DATE=2026-08-31T19:15:39Z|SUBJECT=Merge pull request 'CR0104 add explicit edge rollback' (#41) from cr-2026-0104-command-stack-retirement into main +REC|SOURCE_LOG|COMMIT=3bc25b7abde3ef263d728549e92de5ec6dc4a027|DATE=2026-08-31T22:13:52+03:00|SUBJECT=CR0104 add explicit edge rollback +REC|SOURCE_LOG|COMMIT=73c4cb4cc446ec8a10f81ba635624f2bf9373467|DATE=2026-08-31T22:01:03+03:00|SUBJECT=CR0104 add edge ingress retirement +REC|SOURCE_LOG|COMMIT=005074d9abde9d599b7394b92fc33f56596e7589|DATE=2026-08-23T06:34:35+03:00|SUBJECT=fix(CR-2026-0096): include email ledger in backup contract +REC|SOURCE_LOG|COMMIT=02160e152d6ed349c5eb7614283b2a6a2cd414d1|DATE=2026-08-23T06:17:38+03:00|SUBJECT=fix(CR-2026-0096): delegate email ledger path from integration hook +REC|SOURCE_LOG|COMMIT=f178e01b7f8ec831fa212be027c95adfbe941910|DATE=2026-08-23T06:01:45+03:00|SUBJECT=fix(CR-2026-0096): place email ledger beside shadow ledger +REC|SOURCE_LOG|COMMIT=634bb165226627a5694d37c7d858a9fda00a04c9|DATE=2026-08-22T09:48:54+03:00|SUBJECT=feat: add calibrated models decision and execution ledger +REC|SOURCE_LOG|COMMIT=772e862ee9b775a2d3eaea10b214688ab75b7434|DATE=2026-08-19T07:04:49+03:00|SUBJECT=docs(CR-2026-0084): add cluster operational knowledge base +REC|SOURCE_LOG|COMMIT=d8ae1b62d5d09a2a0249541967daf1ffd15eb932|DATE=2026-08-18T11:24:38Z|SUBJECT=Merge pull request 'Cr 2026 0083 gitea edge publisher v3' (#17) from cr-2026-0083-gitea-edge-publisher-v3 into main +REC|SOURCE_LOG|COMMIT=064c6f23ab8a7038b0b0f64545ddf1965c5f860e|DATE=2026-08-18T08:42:28+03:00|SUBJECT=fix(CR-2026-0083): harden EDGE Publisher V3 deployment +REC|SOURCE_LOG|COMMIT=f0d2d006953079a07c9510e2489d01c4969826b4|DATE=2026-08-18T00:30:16+03:00|SUBJECT=CR-2026-0083: add Gitea EDGE Publisher V3 source +REC|SOURCE_LOG|COMMIT=8a2e58e3ace69b76d4508434290cd9600cba3270|DATE=2026-08-17T15:11:21Z|SUBJECT=Merge pull request 'CR-2026-0081: fix VM150 EDGE egress probe' (#16) from cr-2026-0081-snikket-hardening into main +REC|SOURCE_LOG|COMMIT=f418f45ae134724c4f23a2712718fb842db9a6ae|DATE=2026-08-17T18:10:53+03:00|SUBJECT=CR-2026-0081: fix VM150 EDGE egress probe parsing +REC|SOURCE_LOG|COMMIT=17e094035bd395a8a632bafef2570be5004f91cc|DATE=2026-08-17T15:04:12Z|SUBJECT=Merge pull request 'CR-2026-0081: fix Netcraze Snikket forward parsing' (#15) from cr-2026-0081-snikket-hardening into main +REC|SOURCE_LOG|COMMIT=58313735ab3507975331922e9e016d0b20e473d0|DATE=2026-08-17T14:51:25Z|SUBJECT=Merge pull request 'CR-2026-0081: retire obsolete Snikket home forwards' (#14) from cr-2026-0081-snikket-hardening into main +REC|SOURCE_LOG|COMMIT=0bdb4794d3910ec579bc539dcb75f49dd36f86cc|DATE=2026-08-17T13:49:14+03:00|SUBJECT=CR-2026-0081: retire obsolete Snikket home forwards +REC|SOURCE_LOG|COMMIT=6c2f65c3d98a20f6b5581cb019bbc6b371d343fb|DATE=2026-08-17T10:10:26Z|SUBJECT=Merge pull request 'CR-2026-0081: fix legacy TURN no-consumer scan' (#13) from cr-2026-0081-snikket-hardening into main +REC|SOURCE_LOG|COMMIT=6c3c5db756b1c5fa77dee0d14fcb23432662240a|DATE=2026-08-17T13:09:58+03:00|SUBJECT=CR-2026-0081: harden optional Snikket scan roots +REC|SOURCE_LOG|COMMIT=093efa5ee15da274e54bdd10b86fb97768414ef5|DATE=2026-08-17T08:42:24Z|SUBJECT=Merge pull request 'CR-2026-0081: retire legacy turn.gram1.ru DNS' (#12) from cr-2026-0081-snikket-hardening into main +REC|SOURCE_LOG|COMMIT=2af4c5cb638754862c376bc710f1e25389d96072|DATE=2026-08-17T11:10:01+03:00|SUBJECT=CR-2026-0081: approve Snikket post-cutover hardening design +REC|SOURCE_LOG|COMMIT=81dceedd5bbbc900c25d1638b476437ae69a0783|DATE=2026-08-17T08:02:10Z|SUBJECT=Merge pull request 'CR-2026-0080: harden post-restart readiness' (#11) from cr-2026-0080-snikket-edge-cutover into main +REC|SOURCE_LOG|COMMIT=c920450e5a2a1ba987cba8c6ede9c4f08b217783|DATE=2026-08-17T07:55:54Z|SUBJECT=Merge pull request 'CR-2026-0080: fix coturn container shell quoting' (#10) from cr-2026-0080-snikket-edge-cutover into main +REC|SOURCE_LOG|COMMIT=b261135e87a9acb1e1e289a41d16baef8885cb3c|DATE=2026-08-17T07:50:18Z|SUBJECT=Merge pull request 'CR-2026-0080: harden failed Snikket EDGE apply' (#9) from cr-2026-0080-snikket-edge-cutover into main +REC|SOURCE_LOG|COMMIT=cdf7e519df309d0a1dd6c2c4eeb4b051488fd7bf|DATE=2026-08-17T07:29:47Z|SUBJECT=Merge pull request 'CR-2026-0080: Snikket EDGE traffic cutover' (#8) from cr-2026-0080-snikket-edge-cutover into main +REC|SOURCE_LOG|COMMIT=911d8cc52d5e8a677f132b736d01ade7a5879e59|DATE=2026-08-17T10:27:24+03:00|SUBJECT=CR-2026-0080: build Snikket EDGE cutover task +REC|SOURCE_LOG|COMMIT=bcee02410290c4563fea4507a35fdf6dce08d674|DATE=2026-08-17T10:13:58+03:00|SUBJECT=CR-2026-0080: plan Snikket EDGE cutover implementation +REC|SOURCE_LOG|COMMIT=85a325224532505bce79ef3bc2a224a162a32dd1|DATE=2026-08-17T10:08:28+03:00|SUBJECT=CR-2026-0080: approve Snikket EDGE cutover design +REC|SOURCE_LOG|COMMIT=81174ec87f42a04f893df6ce2a3a4bcde8e1e2ee|DATE=2026-08-16T04:45:00Z|SUBJECT=Merge pull request 'CR-2026-0078: harden Snikket TURN durability' (#6) from cr-2026-0078-snikket-turn-durability into main +REC|SOURCE_LOG|COMMIT=eb010cef52173ddba0f24f5486acab471efa05d6|DATE=2026-08-16T07:08:28+03:00|SUBJECT=CR-2026-0078: harden Snikket TURN durability +REC|SOURCE_LOG|COMMIT=c1a71bc168f06fbd78e8956bc3836e75a6241244|DATE=2026-08-15T18:04:07+03:00|SUBJECT=CR-2026-0076: install Docker CLI for Snikket guest +REC|SOURCE_LOG|COMMIT=08e77a62ccbf5d7684c0946f922fb7e28d1f4073|DATE=2026-08-15T02:26:48+03:00|SUBJECT=CR-2026-0076: harden Snikket VM150 rebuild source +DECISION=PASS_SNIKKET_WGEDGE_SOURCE_HISTORY_RCA +NEXT_GATE=RESTORE_FROM_SOURCE_HISTORY +TASK_RESULT=SNIKKET_WGEDGE_SOURCE_HISTORY_RCA +CHANGES_MADE=false +ROLLBACK_STARTED=false +ROLLBACK_RESTORED=null +MUTATION_OUTCOME=NO_MUTATION +HOMELAB_RESULT_CONTRACT={"version":1,"command_id":"SUPPORT-261006-SNIKKET-WGEDGE-SOURCE-HISTORY-RCA-99738R1","status":"OK","changes_made":false,"rollback_started":false,"rollback_restored":null} + +OUTPUT_END +CHAT_OUTPUT_END diff --git a/runtime/latest.json b/runtime/latest.json index 2f8e4b4c..4e685f05 100644 --- a/runtime/latest.json +++ b/runtime/latest.json @@ -1,19 +1,19 @@ { "schema_version": 1, "channel": "homelab-runtime", - "command_id": "SUPPORT-261006-SNIKKET-WG-ENDPOINT-WINDOWS-AUTH-FIXED-99736R1", + "command_id": "SUPPORT-261006-SNIKKET-WGEDGE-SOURCE-HISTORY-RCA-99738R1", "status": "OK", "rc": 0, "host": "pve01", "mode": "read-only", - "component": "snikket-wg-endpoint-windows-auth-fixed", - "started_at_utc": "2026-10-06T17:19:28Z", - "finished_at_utc": "2026-10-06T17:19:28Z", + "component": "snikket-wgedge-source-history-rca", + "started_at_utc": "2026-10-06T17:52:05Z", + "finished_at_utc": "2026-10-06T17:52:09Z", "reference_register_checked": true, "reference_sha256": "5a3d8e5154c41cb582a4e0aca68090be1f0138918bf82131a948df326f9d8d66", "error_register_checked": true, "error_register_sha256": "3b09a553ec0f527ed3afeed4753f52a74ee3036045bbfb3c685e9f8af4ba7ba0", - "command_sha256": "95a7070588641b394920cd2bb158b2f9d6f34b660ae6821c3d05b880b90227f4", + "command_sha256": "b72f8aea0efdedfd1585f74fe26fff8d183e9a4538dce609a82f6bae4fef6667", "duplicate_failed_command_blocked": false, "block_reason": null, "execution_started": true, @@ -30,9 +30,9 @@ "secrets_included": false, "private_addresses_included": false, "raw_evidence_retained_locally": true, - "raw_evidence_sha256": "649b28c90d6e416f08f41fc129b7402093e60c1420432835af5564feb2ca954b", - "sanitized_output_sha256": "649b28c90d6e416f08f41fc129b7402093e60c1420432835af5564feb2ca954b", + "raw_evidence_sha256": "7c2f6f882be15d7f108ee4daada8307d99e6ee9f71276b816e814a4ad06919c5", + "sanitized_output_sha256": "7c2f6f882be15d7f108ee4daada8307d99e6ee9f71276b816e814a4ad06919c5", "output_truncated_in_json": false, "full_sanitized_output_url": "https://git.gram1.ru/.well-known/homelab-runtime/latest.txt", - "output": "SNIKKET_WG_ENDPOINT_WINDOWS_AUTH_FIXED=V1\nMODE=read-only\nNO_MUTATION=true\nREMOTE_COMMAND=true_only\nWINDOWS_DISCOVERY_WRAPPER_RC=0\nWINDOWS_DISCOVERY_OK=true\nWINDOWS_ENDPOINT_FINGERPRINT_PRESENT=true\nWINDOWS_ENDPOINT_HOSTKEY_MATCH=true\nWINDOWS_PAGEANT_AUTH_SUCCESS_COUNT=0\nWINDOWS_PAGEANT_AUTH_FIRST_USER=NONE\nWINDOWS_PAGEANT_PROCESS_COUNT=1\nCLUSTER_QUORATE=true\nPVE01_FAILED_UNIT_COUNT=1\nDECISION=PASS_SNIKKET_WG_ENDPOINT_WINDOWS_AUTH_FIXED\nNEXT_GATE=REMOTE_ENDPOINT_EXTERNAL_DEPENDENCY\nTASK_RESULT=SNIKKET_WG_ENDPOINT_WINDOWS_AUTH_FIXED\nCHANGES_MADE=false\nROLLBACK_STARTED=false\nROLLBACK_RESTORED=null\nMUTATION_OUTCOME=NO_MUTATION\nHOMELAB_RESULT_CONTRACT={\"version\":1,\"command_id\":\"SUPPORT-261006-SNIKKET-WG-ENDPOINT-WINDOWS-AUTH-FIXED-99736R1\",\"status\":\"OK\",\"changes_made\":false,\"rollback_started\":false,\"rollback_restored\":null}\n" + "output": "SNIKKET_WGEDGE_SOURCE_HISTORY_RCA=V1\nMODE=read-only\nNO_MUTATION=true\nSOURCE_REPO_MATCH_COUNT=1\nSOURCE_REPO_BASENAME=homelab-ops\nSOURCE_REPO_PATH_SHA=8598ef1c63466691ec91c66fa47f29edcd2530f1de043b13ed32760a1dbac3ba\nSOURCE_HEAD=bd85699d8b588a34c480f10dee71323687bd48f1\nSOURCE_BRANCH=main\nSOURCE_WORKTREE_DIRTY_COUNT=0\nTARGET_COMMIT=83b3d27c1de533cabb2d23e337579b06ddd0c355\nTARGET_PARENT=d399d24440f948b518761ecfd516521993861b43\nTARGET_DATE=2026-09-28T08:44:44+03:00\nTARGET_SUBJECT=skladchik: align NetBird route health with overlay peer\nTARGET_CHANGED_FILE_COUNT=3\nREC|TARGET_FILE|BASENAME=skladchik-reports-monitor-health-alert.py|PARENT=runtime|PATH_SHA=2cf94533e16decd5f8d6b2996104d83857a74de1d151c1a79750c4532597edb8\nREC|TARGET_FILE|BASENAME=skladchik-reports-monitor-status-edge|PARENT=runtime|PATH_SHA=afa86a4ed42cb9238cc2e5e9b2594a9a1fd6c779d76de2fea8ab15dcf17e3480\nREC|TARGET_FILE|BASENAME=skladchik-reports-monitor-supervisor|PARENT=runtime|PATH_SHA=3a84408d15ba97496865eab207054845e1d90af4decf786591ec5f01b3d4c27e\nHISTORY_WG_EDGE01_COUNT=1\nREC|HISTORY|NEEDLE=WG_EDGE01|COMMIT=911d8cc52d5e8a677f132b736d01ade7a5879e59|DATE=2026-08-17T10:27:24+03:00|SUBJECT=CR-2026-0080: build Snikket EDGE cutover task\nHISTORY_SNIKKET_EDGE_INGRESS_NFT_COUNT=0\nHISTORY_17777_COUNT=3\nREC|HISTORY|NEEDLE=17777|COMMIT=85a325224532505bce79ef3bc2a224a162a32dd1|DATE=2026-08-17T10:08:28+03:00|SUBJECT=CR-2026-0080: approve Snikket EDGE cutover design\nREC|HISTORY|NEEDLE=17777|COMMIT=bcee02410290c4563fea4507a35fdf6dce08d674|DATE=2026-08-17T10:13:58+03:00|SUBJECT=CR-2026-0080: plan Snikket EDGE cutover implementation\nREC|HISTORY|NEEDLE=17777|COMMIT=911d8cc52d5e8a677f132b736d01ade7a5879e59|DATE=2026-08-17T10:27:24+03:00|SUBJECT=CR-2026-0080: build Snikket EDGE cutover task\nHISTORY_51820_COUNT=6\nREC|HISTORY|NEEDLE=51820|COMMIT=d29752e1de327ad588bf3f1689f277f55e33e58c|DATE=2026-07-17T08:05:30+03:00|SUBJECT=CR-2026-0001 recover handoff and operational context\nREC|HISTORY|NEEDLE=51820|COMMIT=b0f9935dce45a7dee2949aef342cadec90ff38a2|DATE=2026-07-17T13:48:47+03:00|SUBJECT=CR-2026-0003 remediate cluster storage retention\nREC|HISTORY|NEEDLE=51820|COMMIT=f9d3ba8caf65005605aa8aee2ede7e4e7e94ee49|DATE=2026-07-31T10:37:56+03:00|SUBJECT=GRAM1: capture initial site baseline 20260731T071400Z\nREC|HISTORY|NEEDLE=51820|COMMIT=542f34b5903a437f43c869c81d3736dbfe081b81|DATE=2026-08-06T05:41:37+03:00|SUBJECT=homelab: canonical cluster handbook and Error System V2\nREC|HISTORY|NEEDLE=51820|COMMIT=b2853f444fe8725a590f96bf40c45bd694eddfb4|DATE=2026-08-06T05:41:39+03:00|SUBJECT=rollback: restore pre-transaction path states\nREC|HISTORY|NEEDLE=51820|COMMIT=772e862ee9b775a2d3eaea10b214688ab75b7434|DATE=2026-08-19T07:04:49+03:00|SUBJECT=docs(CR-2026-0084): add cluster operational knowledge base\nCURRENT_SOURCE_REFERENCE_COUNT=20\nREC|SOURCE_REF|BASENAME=2026-08-17-snikket-edge-cutover.md|PARENT=plans|LINE=20|PATH_SHA=72bcfe0160d221fc3f06466006c3163dc2e5f67f2224cacd1c5c50e02135eb37\nREC|SOURCE_REF|BASENAME=2026-08-17-snikket-edge-cutover.md|PARENT=plans|LINE=23|PATH_SHA=72bcfe0160d221fc3f06466006c3163dc2e5f67f2224cacd1c5c50e02135eb37\nREC|SOURCE_REF|BASENAME=2026-08-17-snikket-edge-cutover-design.md|PARENT=specs|LINE=8|PATH_SHA=224ed8ac7b09df73545e49a1ac681848f67b00df285ec5a3b7b8398f21d015ee\nREC|SOURCE_REF|BASENAME=2026-08-17-snikket-edge-cutover-design.md|PARENT=specs|LINE=20|PATH_SHA=224ed8ac7b09df73545e49a1ac681848f67b00df285ec5a3b7b8398f21d015ee\nREC|SOURCE_REF|BASENAME=task.json|PARENT=snikket-edge-cutover-v1|LINE=23|PATH_SHA=9a63e2769a24f3ce2c23c172837f46c1f044cbd8f886e45313a3b0e7e467e55d\nREC|SOURCE_REF|BASENAME=task.json|PARENT=snikket-edge-cutover-v1|LINE=37|PATH_SHA=9a63e2769a24f3ce2c23c172837f46c1f044cbd8f886e45313a3b0e7e467e55d\nREC|SOURCE_REF|BASENAME=task.json|PARENT=snikket-edge-cutover-v1|LINE=66|PATH_SHA=9a63e2769a24f3ce2c23c172837f46c1f044cbd8f886e45313a3b0e7e467e55d\nREC|SOURCE_REF|BASENAME=task.json|PARENT=snikket-edge-cutover-v1|LINE=137|PATH_SHA=9a63e2769a24f3ce2c23c172837f46c1f044cbd8f886e45313a3b0e7e467e55d\nREC|SOURCE_REF|BASENAME=cutover.py|PARENT=tools|LINE=13|PATH_SHA=d90388278e2775b1ac7534b35946dfa3dadd03f65cd16117db653731b47346ad\nREC|SOURCE_REF|BASENAME=cutover.py|PARENT=tools|LINE=175|PATH_SHA=d90388278e2775b1ac7534b35946dfa3dadd03f65cd16117db653731b47346ad\nREC|SOURCE_REF|BASENAME=cutover.py|PARENT=tools|LINE=181|PATH_SHA=d90388278e2775b1ac7534b35946dfa3dadd03f65cd16117db653731b47346ad\nREC|SOURCE_REF|BASENAME=cutover.py|PARENT=tools|LINE=205|PATH_SHA=d90388278e2775b1ac7534b35946dfa3dadd03f65cd16117db653731b47346ad\nREC|SOURCE_REF|BASENAME=cutover.py|PARENT=tools|LINE=237|PATH_SHA=d90388278e2775b1ac7534b35946dfa3dadd03f65cd16117db653731b47346ad\nREC|SOURCE_REF|BASENAME=cutover.py|PARENT=tools|LINE=238|PATH_SHA=d90388278e2775b1ac7534b35946dfa3dadd03f65cd16117db653731b47346ad\nREC|SOURCE_REF|BASENAME=cutover.py|PARENT=tools|LINE=244|PATH_SHA=d90388278e2775b1ac7534b35946dfa3dadd03f65cd16117db653731b47346ad\nREC|SOURCE_REF|BASENAME=cutover.py|PARENT=tools|LINE=245|PATH_SHA=d90388278e2775b1ac7534b35946dfa3dadd03f65cd16117db653731b47346ad\nREC|SOURCE_REF|BASENAME=cutover.py|PARENT=tools|LINE=247|PATH_SHA=d90388278e2775b1ac7534b35946dfa3dadd03f65cd16117db653731b47346ad\nREC|SOURCE_REF|BASENAME=cutover.py|PARENT=tools|LINE=252|PATH_SHA=d90388278e2775b1ac7534b35946dfa3dadd03f65cd16117db653731b47346ad\nREC|SOURCE_REF|BASENAME=cutover.py|PARENT=tools|LINE=253|PATH_SHA=d90388278e2775b1ac7534b35946dfa3dadd03f65cd16117db653731b47346ad\nREC|SOURCE_REF|BASENAME=cutover.py|PARENT=tools|LINE=258|PATH_SHA=d90388278e2775b1ac7534b35946dfa3dadd03f65cd16117db653731b47346ad\nSOURCE_SUBJECT_HIT_COUNT=31\nREC|SOURCE_LOG|COMMIT=0a045c3f90a98b78547f635a5d80c63901e118e7|DATE=2026-08-31T19:15:39Z|SUBJECT=Merge pull request 'CR0104 add explicit edge rollback' (#41) from cr-2026-0104-command-stack-retirement into main\nREC|SOURCE_LOG|COMMIT=3bc25b7abde3ef263d728549e92de5ec6dc4a027|DATE=2026-08-31T22:13:52+03:00|SUBJECT=CR0104 add explicit edge rollback\nREC|SOURCE_LOG|COMMIT=73c4cb4cc446ec8a10f81ba635624f2bf9373467|DATE=2026-08-31T22:01:03+03:00|SUBJECT=CR0104 add edge ingress retirement\nREC|SOURCE_LOG|COMMIT=005074d9abde9d599b7394b92fc33f56596e7589|DATE=2026-08-23T06:34:35+03:00|SUBJECT=fix(CR-2026-0096): include email ledger in backup contract\nREC|SOURCE_LOG|COMMIT=02160e152d6ed349c5eb7614283b2a6a2cd414d1|DATE=2026-08-23T06:17:38+03:00|SUBJECT=fix(CR-2026-0096): delegate email ledger path from integration hook\nREC|SOURCE_LOG|COMMIT=f178e01b7f8ec831fa212be027c95adfbe941910|DATE=2026-08-23T06:01:45+03:00|SUBJECT=fix(CR-2026-0096): place email ledger beside shadow ledger\nREC|SOURCE_LOG|COMMIT=634bb165226627a5694d37c7d858a9fda00a04c9|DATE=2026-08-22T09:48:54+03:00|SUBJECT=feat: add calibrated models decision and execution ledger\nREC|SOURCE_LOG|COMMIT=772e862ee9b775a2d3eaea10b214688ab75b7434|DATE=2026-08-19T07:04:49+03:00|SUBJECT=docs(CR-2026-0084): add cluster operational knowledge base\nREC|SOURCE_LOG|COMMIT=d8ae1b62d5d09a2a0249541967daf1ffd15eb932|DATE=2026-08-18T11:24:38Z|SUBJECT=Merge pull request 'Cr 2026 0083 gitea edge publisher v3' (#17) from cr-2026-0083-gitea-edge-publisher-v3 into main\nREC|SOURCE_LOG|COMMIT=064c6f23ab8a7038b0b0f64545ddf1965c5f860e|DATE=2026-08-18T08:42:28+03:00|SUBJECT=fix(CR-2026-0083): harden EDGE Publisher V3 deployment\nREC|SOURCE_LOG|COMMIT=f0d2d006953079a07c9510e2489d01c4969826b4|DATE=2026-08-18T00:30:16+03:00|SUBJECT=CR-2026-0083: add Gitea EDGE Publisher V3 source\nREC|SOURCE_LOG|COMMIT=8a2e58e3ace69b76d4508434290cd9600cba3270|DATE=2026-08-17T15:11:21Z|SUBJECT=Merge pull request 'CR-2026-0081: fix VM150 EDGE egress probe' (#16) from cr-2026-0081-snikket-hardening into main\nREC|SOURCE_LOG|COMMIT=f418f45ae134724c4f23a2712718fb842db9a6ae|DATE=2026-08-17T18:10:53+03:00|SUBJECT=CR-2026-0081: fix VM150 EDGE egress probe parsing\nREC|SOURCE_LOG|COMMIT=17e094035bd395a8a632bafef2570be5004f91cc|DATE=2026-08-17T15:04:12Z|SUBJECT=Merge pull request 'CR-2026-0081: fix Netcraze Snikket forward parsing' (#15) from cr-2026-0081-snikket-hardening into main\nREC|SOURCE_LOG|COMMIT=58313735ab3507975331922e9e016d0b20e473d0|DATE=2026-08-17T14:51:25Z|SUBJECT=Merge pull request 'CR-2026-0081: retire obsolete Snikket home forwards' (#14) from cr-2026-0081-snikket-hardening into main\nREC|SOURCE_LOG|COMMIT=0bdb4794d3910ec579bc539dcb75f49dd36f86cc|DATE=2026-08-17T13:49:14+03:00|SUBJECT=CR-2026-0081: retire obsolete Snikket home forwards\nREC|SOURCE_LOG|COMMIT=6c2f65c3d98a20f6b5581cb019bbc6b371d343fb|DATE=2026-08-17T10:10:26Z|SUBJECT=Merge pull request 'CR-2026-0081: fix legacy TURN no-consumer scan' (#13) from cr-2026-0081-snikket-hardening into main\nREC|SOURCE_LOG|COMMIT=6c3c5db756b1c5fa77dee0d14fcb23432662240a|DATE=2026-08-17T13:09:58+03:00|SUBJECT=CR-2026-0081: harden optional Snikket scan roots\nREC|SOURCE_LOG|COMMIT=093efa5ee15da274e54bdd10b86fb97768414ef5|DATE=2026-08-17T08:42:24Z|SUBJECT=Merge pull request 'CR-2026-0081: retire legacy turn.gram1.ru DNS' (#12) from cr-2026-0081-snikket-hardening into main\nREC|SOURCE_LOG|COMMIT=2af4c5cb638754862c376bc710f1e25389d96072|DATE=2026-08-17T11:10:01+03:00|SUBJECT=CR-2026-0081: approve Snikket post-cutover hardening design\nREC|SOURCE_LOG|COMMIT=81dceedd5bbbc900c25d1638b476437ae69a0783|DATE=2026-08-17T08:02:10Z|SUBJECT=Merge pull request 'CR-2026-0080: harden post-restart readiness' (#11) from cr-2026-0080-snikket-edge-cutover into main\nREC|SOURCE_LOG|COMMIT=c920450e5a2a1ba987cba8c6ede9c4f08b217783|DATE=2026-08-17T07:55:54Z|SUBJECT=Merge pull request 'CR-2026-0080: fix coturn container shell quoting' (#10) from cr-2026-0080-snikket-edge-cutover into main\nREC|SOURCE_LOG|COMMIT=b261135e87a9acb1e1e289a41d16baef8885cb3c|DATE=2026-08-17T07:50:18Z|SUBJECT=Merge pull request 'CR-2026-0080: harden failed Snikket EDGE apply' (#9) from cr-2026-0080-snikket-edge-cutover into main\nREC|SOURCE_LOG|COMMIT=cdf7e519df309d0a1dd6c2c4eeb4b051488fd7bf|DATE=2026-08-17T07:29:47Z|SUBJECT=Merge pull request 'CR-2026-0080: Snikket EDGE traffic cutover' (#8) from cr-2026-0080-snikket-edge-cutover into main\nREC|SOURCE_LOG|COMMIT=911d8cc52d5e8a677f132b736d01ade7a5879e59|DATE=2026-08-17T10:27:24+03:00|SUBJECT=CR-2026-0080: build Snikket EDGE cutover task\nREC|SOURCE_LOG|COMMIT=bcee02410290c4563fea4507a35fdf6dce08d674|DATE=2026-08-17T10:13:58+03:00|SUBJECT=CR-2026-0080: plan Snikket EDGE cutover implementation\nREC|SOURCE_LOG|COMMIT=85a325224532505bce79ef3bc2a224a162a32dd1|DATE=2026-08-17T10:08:28+03:00|SUBJECT=CR-2026-0080: approve Snikket EDGE cutover design\nREC|SOURCE_LOG|COMMIT=81174ec87f42a04f893df6ce2a3a4bcde8e1e2ee|DATE=2026-08-16T04:45:00Z|SUBJECT=Merge pull request 'CR-2026-0078: harden Snikket TURN durability' (#6) from cr-2026-0078-snikket-turn-durability into main\nREC|SOURCE_LOG|COMMIT=eb010cef52173ddba0f24f5486acab471efa05d6|DATE=2026-08-16T07:08:28+03:00|SUBJECT=CR-2026-0078: harden Snikket TURN durability\nREC|SOURCE_LOG|COMMIT=c1a71bc168f06fbd78e8956bc3836e75a6241244|DATE=2026-08-15T18:04:07+03:00|SUBJECT=CR-2026-0076: install Docker CLI for Snikket guest\nREC|SOURCE_LOG|COMMIT=08e77a62ccbf5d7684c0946f922fb7e28d1f4073|DATE=2026-08-15T02:26:48+03:00|SUBJECT=CR-2026-0076: harden Snikket VM150 rebuild source\nDECISION=PASS_SNIKKET_WGEDGE_SOURCE_HISTORY_RCA\nNEXT_GATE=RESTORE_FROM_SOURCE_HISTORY\nTASK_RESULT=SNIKKET_WGEDGE_SOURCE_HISTORY_RCA\nCHANGES_MADE=false\nROLLBACK_STARTED=false\nROLLBACK_RESTORED=null\nMUTATION_OUTCOME=NO_MUTATION\nHOMELAB_RESULT_CONTRACT={\"version\":1,\"command_id\":\"SUPPORT-261006-SNIKKET-WGEDGE-SOURCE-HISTORY-RCA-99738R1\",\"status\":\"OK\",\"changes_made\":false,\"rollback_started\":false,\"rollback_restored\":null}\n" } diff --git a/runtime/latest.txt b/runtime/latest.txt index b688fa02..22391f7e 100644 --- a/runtime/latest.txt +++ b/runtime/latest.txt @@ -1,15 +1,15 @@ CHAT_OUTPUT_BEGIN -COMMAND_ID=SUPPORT-261006-SNIKKET-WG-ENDPOINT-WINDOWS-AUTH-FIXED-99736R1 +COMMAND_ID=SUPPORT-261006-SNIKKET-WGEDGE-SOURCE-HISTORY-RCA-99738R1 STATUS=OK RC=0 HOST=pve01 MODE=read-only -COMPONENT=snikket-wg-endpoint-windows-auth-fixed +COMPONENT=snikket-wgedge-source-history-rca REFERENCE_REGISTER_CHECK=OK REFERENCE_SHA256=5a3d8e5154c41cb582a4e0aca68090be1f0138918bf82131a948df326f9d8d66 ERROR_REGISTER_CHECK=OK ERROR_REGISTER_SHA256=3b09a553ec0f527ed3afeed4753f52a74ee3036045bbfb3c685e9f8af4ba7ba0 -COMMAND_SHA256=95a7070588641b394920cd2bb158b2f9d6f34b660ae6821c3d05b880b90227f4 +COMMAND_SHA256=b72f8aea0efdedfd1585f74fe26fff8d183e9a4538dce609a82f6bae4fef6667 DUPLICATE_FAILED_COMMAND_BLOCKED=false EXECUTION_STARTED=true CHANGE_DECLARED=false @@ -24,30 +24,101 @@ MUTATION_OUTCOME=NO_MUTATION SANITIZED=yes SECRETS_INCLUDED=no PRIVATE_ADDRESSES_INCLUDED=no -RAW_EVIDENCE_SHA256=649b28c90d6e416f08f41fc129b7402093e60c1420432835af5564feb2ca954b -SANITIZED_OUTPUT_SHA256=649b28c90d6e416f08f41fc129b7402093e60c1420432835af5564feb2ca954b +RAW_EVIDENCE_SHA256=7c2f6f882be15d7f108ee4daada8307d99e6ee9f71276b816e814a4ad06919c5 +SANITIZED_OUTPUT_SHA256=7c2f6f882be15d7f108ee4daada8307d99e6ee9f71276b816e814a4ad06919c5 OUTPUT_BEGIN -SNIKKET_WG_ENDPOINT_WINDOWS_AUTH_FIXED=V1 +SNIKKET_WGEDGE_SOURCE_HISTORY_RCA=V1 MODE=read-only NO_MUTATION=true -REMOTE_COMMAND=true_only -WINDOWS_DISCOVERY_WRAPPER_RC=0 -WINDOWS_DISCOVERY_OK=true -WINDOWS_ENDPOINT_FINGERPRINT_PRESENT=true -WINDOWS_ENDPOINT_HOSTKEY_MATCH=true -WINDOWS_PAGEANT_AUTH_SUCCESS_COUNT=0 -WINDOWS_PAGEANT_AUTH_FIRST_USER=NONE -WINDOWS_PAGEANT_PROCESS_COUNT=1 -CLUSTER_QUORATE=true -PVE01_FAILED_UNIT_COUNT=1 -DECISION=PASS_SNIKKET_WG_ENDPOINT_WINDOWS_AUTH_FIXED -NEXT_GATE=REMOTE_ENDPOINT_EXTERNAL_DEPENDENCY -TASK_RESULT=SNIKKET_WG_ENDPOINT_WINDOWS_AUTH_FIXED +SOURCE_REPO_MATCH_COUNT=1 +SOURCE_REPO_BASENAME=homelab-ops +SOURCE_REPO_PATH_SHA=8598ef1c63466691ec91c66fa47f29edcd2530f1de043b13ed32760a1dbac3ba +SOURCE_HEAD=bd85699d8b588a34c480f10dee71323687bd48f1 +SOURCE_BRANCH=main +SOURCE_WORKTREE_DIRTY_COUNT=0 +TARGET_COMMIT=83b3d27c1de533cabb2d23e337579b06ddd0c355 +TARGET_PARENT=d399d24440f948b518761ecfd516521993861b43 +TARGET_DATE=2026-09-28T08:44:44+03:00 +TARGET_SUBJECT=skladchik: align NetBird route health with overlay peer +TARGET_CHANGED_FILE_COUNT=3 +REC|TARGET_FILE|BASENAME=skladchik-reports-monitor-health-alert.py|PARENT=runtime|PATH_SHA=2cf94533e16decd5f8d6b2996104d83857a74de1d151c1a79750c4532597edb8 +REC|TARGET_FILE|BASENAME=skladchik-reports-monitor-status-edge|PARENT=runtime|PATH_SHA=afa86a4ed42cb9238cc2e5e9b2594a9a1fd6c779d76de2fea8ab15dcf17e3480 +REC|TARGET_FILE|BASENAME=skladchik-reports-monitor-supervisor|PARENT=runtime|PATH_SHA=3a84408d15ba97496865eab207054845e1d90af4decf786591ec5f01b3d4c27e +HISTORY_WG_EDGE01_COUNT=1 +REC|HISTORY|NEEDLE=WG_EDGE01|COMMIT=911d8cc52d5e8a677f132b736d01ade7a5879e59|DATE=2026-08-17T10:27:24+03:00|SUBJECT=CR-2026-0080: build Snikket EDGE cutover task +HISTORY_SNIKKET_EDGE_INGRESS_NFT_COUNT=0 +HISTORY_17777_COUNT=3 +REC|HISTORY|NEEDLE=17777|COMMIT=85a325224532505bce79ef3bc2a224a162a32dd1|DATE=2026-08-17T10:08:28+03:00|SUBJECT=CR-2026-0080: approve Snikket EDGE cutover design +REC|HISTORY|NEEDLE=17777|COMMIT=bcee02410290c4563fea4507a35fdf6dce08d674|DATE=2026-08-17T10:13:58+03:00|SUBJECT=CR-2026-0080: plan Snikket EDGE cutover implementation +REC|HISTORY|NEEDLE=17777|COMMIT=911d8cc52d5e8a677f132b736d01ade7a5879e59|DATE=2026-08-17T10:27:24+03:00|SUBJECT=CR-2026-0080: build Snikket EDGE cutover task +HISTORY_51820_COUNT=6 +REC|HISTORY|NEEDLE=51820|COMMIT=d29752e1de327ad588bf3f1689f277f55e33e58c|DATE=2026-07-17T08:05:30+03:00|SUBJECT=CR-2026-0001 recover handoff and operational context +REC|HISTORY|NEEDLE=51820|COMMIT=b0f9935dce45a7dee2949aef342cadec90ff38a2|DATE=2026-07-17T13:48:47+03:00|SUBJECT=CR-2026-0003 remediate cluster storage retention +REC|HISTORY|NEEDLE=51820|COMMIT=f9d3ba8caf65005605aa8aee2ede7e4e7e94ee49|DATE=2026-07-31T10:37:56+03:00|SUBJECT=GRAM1: capture initial site baseline 20260731T071400Z +REC|HISTORY|NEEDLE=51820|COMMIT=542f34b5903a437f43c869c81d3736dbfe081b81|DATE=2026-08-06T05:41:37+03:00|SUBJECT=homelab: canonical cluster handbook and Error System V2 +REC|HISTORY|NEEDLE=51820|COMMIT=b2853f444fe8725a590f96bf40c45bd694eddfb4|DATE=2026-08-06T05:41:39+03:00|SUBJECT=rollback: restore pre-transaction path states +REC|HISTORY|NEEDLE=51820|COMMIT=772e862ee9b775a2d3eaea10b214688ab75b7434|DATE=2026-08-19T07:04:49+03:00|SUBJECT=docs(CR-2026-0084): add cluster operational knowledge base +CURRENT_SOURCE_REFERENCE_COUNT=20 +REC|SOURCE_REF|BASENAME=2026-08-17-snikket-edge-cutover.md|PARENT=plans|LINE=20|PATH_SHA=72bcfe0160d221fc3f06466006c3163dc2e5f67f2224cacd1c5c50e02135eb37 +REC|SOURCE_REF|BASENAME=2026-08-17-snikket-edge-cutover.md|PARENT=plans|LINE=23|PATH_SHA=72bcfe0160d221fc3f06466006c3163dc2e5f67f2224cacd1c5c50e02135eb37 +REC|SOURCE_REF|BASENAME=2026-08-17-snikket-edge-cutover-design.md|PARENT=specs|LINE=8|PATH_SHA=224ed8ac7b09df73545e49a1ac681848f67b00df285ec5a3b7b8398f21d015ee +REC|SOURCE_REF|BASENAME=2026-08-17-snikket-edge-cutover-design.md|PARENT=specs|LINE=20|PATH_SHA=224ed8ac7b09df73545e49a1ac681848f67b00df285ec5a3b7b8398f21d015ee +REC|SOURCE_REF|BASENAME=task.json|PARENT=snikket-edge-cutover-v1|LINE=23|PATH_SHA=9a63e2769a24f3ce2c23c172837f46c1f044cbd8f886e45313a3b0e7e467e55d +REC|SOURCE_REF|BASENAME=task.json|PARENT=snikket-edge-cutover-v1|LINE=37|PATH_SHA=9a63e2769a24f3ce2c23c172837f46c1f044cbd8f886e45313a3b0e7e467e55d +REC|SOURCE_REF|BASENAME=task.json|PARENT=snikket-edge-cutover-v1|LINE=66|PATH_SHA=9a63e2769a24f3ce2c23c172837f46c1f044cbd8f886e45313a3b0e7e467e55d +REC|SOURCE_REF|BASENAME=task.json|PARENT=snikket-edge-cutover-v1|LINE=137|PATH_SHA=9a63e2769a24f3ce2c23c172837f46c1f044cbd8f886e45313a3b0e7e467e55d +REC|SOURCE_REF|BASENAME=cutover.py|PARENT=tools|LINE=13|PATH_SHA=d90388278e2775b1ac7534b35946dfa3dadd03f65cd16117db653731b47346ad +REC|SOURCE_REF|BASENAME=cutover.py|PARENT=tools|LINE=175|PATH_SHA=d90388278e2775b1ac7534b35946dfa3dadd03f65cd16117db653731b47346ad +REC|SOURCE_REF|BASENAME=cutover.py|PARENT=tools|LINE=181|PATH_SHA=d90388278e2775b1ac7534b35946dfa3dadd03f65cd16117db653731b47346ad +REC|SOURCE_REF|BASENAME=cutover.py|PARENT=tools|LINE=205|PATH_SHA=d90388278e2775b1ac7534b35946dfa3dadd03f65cd16117db653731b47346ad +REC|SOURCE_REF|BASENAME=cutover.py|PARENT=tools|LINE=237|PATH_SHA=d90388278e2775b1ac7534b35946dfa3dadd03f65cd16117db653731b47346ad +REC|SOURCE_REF|BASENAME=cutover.py|PARENT=tools|LINE=238|PATH_SHA=d90388278e2775b1ac7534b35946dfa3dadd03f65cd16117db653731b47346ad +REC|SOURCE_REF|BASENAME=cutover.py|PARENT=tools|LINE=244|PATH_SHA=d90388278e2775b1ac7534b35946dfa3dadd03f65cd16117db653731b47346ad +REC|SOURCE_REF|BASENAME=cutover.py|PARENT=tools|LINE=245|PATH_SHA=d90388278e2775b1ac7534b35946dfa3dadd03f65cd16117db653731b47346ad +REC|SOURCE_REF|BASENAME=cutover.py|PARENT=tools|LINE=247|PATH_SHA=d90388278e2775b1ac7534b35946dfa3dadd03f65cd16117db653731b47346ad +REC|SOURCE_REF|BASENAME=cutover.py|PARENT=tools|LINE=252|PATH_SHA=d90388278e2775b1ac7534b35946dfa3dadd03f65cd16117db653731b47346ad +REC|SOURCE_REF|BASENAME=cutover.py|PARENT=tools|LINE=253|PATH_SHA=d90388278e2775b1ac7534b35946dfa3dadd03f65cd16117db653731b47346ad +REC|SOURCE_REF|BASENAME=cutover.py|PARENT=tools|LINE=258|PATH_SHA=d90388278e2775b1ac7534b35946dfa3dadd03f65cd16117db653731b47346ad +SOURCE_SUBJECT_HIT_COUNT=31 +REC|SOURCE_LOG|COMMIT=0a045c3f90a98b78547f635a5d80c63901e118e7|DATE=2026-08-31T19:15:39Z|SUBJECT=Merge pull request 'CR0104 add explicit edge rollback' (#41) from cr-2026-0104-command-stack-retirement into main +REC|SOURCE_LOG|COMMIT=3bc25b7abde3ef263d728549e92de5ec6dc4a027|DATE=2026-08-31T22:13:52+03:00|SUBJECT=CR0104 add explicit edge rollback +REC|SOURCE_LOG|COMMIT=73c4cb4cc446ec8a10f81ba635624f2bf9373467|DATE=2026-08-31T22:01:03+03:00|SUBJECT=CR0104 add edge ingress retirement +REC|SOURCE_LOG|COMMIT=005074d9abde9d599b7394b92fc33f56596e7589|DATE=2026-08-23T06:34:35+03:00|SUBJECT=fix(CR-2026-0096): include email ledger in backup contract +REC|SOURCE_LOG|COMMIT=02160e152d6ed349c5eb7614283b2a6a2cd414d1|DATE=2026-08-23T06:17:38+03:00|SUBJECT=fix(CR-2026-0096): delegate email ledger path from integration hook +REC|SOURCE_LOG|COMMIT=f178e01b7f8ec831fa212be027c95adfbe941910|DATE=2026-08-23T06:01:45+03:00|SUBJECT=fix(CR-2026-0096): place email ledger beside shadow ledger +REC|SOURCE_LOG|COMMIT=634bb165226627a5694d37c7d858a9fda00a04c9|DATE=2026-08-22T09:48:54+03:00|SUBJECT=feat: add calibrated models decision and execution ledger +REC|SOURCE_LOG|COMMIT=772e862ee9b775a2d3eaea10b214688ab75b7434|DATE=2026-08-19T07:04:49+03:00|SUBJECT=docs(CR-2026-0084): add cluster operational knowledge base +REC|SOURCE_LOG|COMMIT=d8ae1b62d5d09a2a0249541967daf1ffd15eb932|DATE=2026-08-18T11:24:38Z|SUBJECT=Merge pull request 'Cr 2026 0083 gitea edge publisher v3' (#17) from cr-2026-0083-gitea-edge-publisher-v3 into main +REC|SOURCE_LOG|COMMIT=064c6f23ab8a7038b0b0f64545ddf1965c5f860e|DATE=2026-08-18T08:42:28+03:00|SUBJECT=fix(CR-2026-0083): harden EDGE Publisher V3 deployment +REC|SOURCE_LOG|COMMIT=f0d2d006953079a07c9510e2489d01c4969826b4|DATE=2026-08-18T00:30:16+03:00|SUBJECT=CR-2026-0083: add Gitea EDGE Publisher V3 source +REC|SOURCE_LOG|COMMIT=8a2e58e3ace69b76d4508434290cd9600cba3270|DATE=2026-08-17T15:11:21Z|SUBJECT=Merge pull request 'CR-2026-0081: fix VM150 EDGE egress probe' (#16) from cr-2026-0081-snikket-hardening into main +REC|SOURCE_LOG|COMMIT=f418f45ae134724c4f23a2712718fb842db9a6ae|DATE=2026-08-17T18:10:53+03:00|SUBJECT=CR-2026-0081: fix VM150 EDGE egress probe parsing +REC|SOURCE_LOG|COMMIT=17e094035bd395a8a632bafef2570be5004f91cc|DATE=2026-08-17T15:04:12Z|SUBJECT=Merge pull request 'CR-2026-0081: fix Netcraze Snikket forward parsing' (#15) from cr-2026-0081-snikket-hardening into main +REC|SOURCE_LOG|COMMIT=58313735ab3507975331922e9e016d0b20e473d0|DATE=2026-08-17T14:51:25Z|SUBJECT=Merge pull request 'CR-2026-0081: retire obsolete Snikket home forwards' (#14) from cr-2026-0081-snikket-hardening into main +REC|SOURCE_LOG|COMMIT=0bdb4794d3910ec579bc539dcb75f49dd36f86cc|DATE=2026-08-17T13:49:14+03:00|SUBJECT=CR-2026-0081: retire obsolete Snikket home forwards +REC|SOURCE_LOG|COMMIT=6c2f65c3d98a20f6b5581cb019bbc6b371d343fb|DATE=2026-08-17T10:10:26Z|SUBJECT=Merge pull request 'CR-2026-0081: fix legacy TURN no-consumer scan' (#13) from cr-2026-0081-snikket-hardening into main +REC|SOURCE_LOG|COMMIT=6c3c5db756b1c5fa77dee0d14fcb23432662240a|DATE=2026-08-17T13:09:58+03:00|SUBJECT=CR-2026-0081: harden optional Snikket scan roots +REC|SOURCE_LOG|COMMIT=093efa5ee15da274e54bdd10b86fb97768414ef5|DATE=2026-08-17T08:42:24Z|SUBJECT=Merge pull request 'CR-2026-0081: retire legacy turn.gram1.ru DNS' (#12) from cr-2026-0081-snikket-hardening into main +REC|SOURCE_LOG|COMMIT=2af4c5cb638754862c376bc710f1e25389d96072|DATE=2026-08-17T11:10:01+03:00|SUBJECT=CR-2026-0081: approve Snikket post-cutover hardening design +REC|SOURCE_LOG|COMMIT=81dceedd5bbbc900c25d1638b476437ae69a0783|DATE=2026-08-17T08:02:10Z|SUBJECT=Merge pull request 'CR-2026-0080: harden post-restart readiness' (#11) from cr-2026-0080-snikket-edge-cutover into main +REC|SOURCE_LOG|COMMIT=c920450e5a2a1ba987cba8c6ede9c4f08b217783|DATE=2026-08-17T07:55:54Z|SUBJECT=Merge pull request 'CR-2026-0080: fix coturn container shell quoting' (#10) from cr-2026-0080-snikket-edge-cutover into main +REC|SOURCE_LOG|COMMIT=b261135e87a9acb1e1e289a41d16baef8885cb3c|DATE=2026-08-17T07:50:18Z|SUBJECT=Merge pull request 'CR-2026-0080: harden failed Snikket EDGE apply' (#9) from cr-2026-0080-snikket-edge-cutover into main +REC|SOURCE_LOG|COMMIT=cdf7e519df309d0a1dd6c2c4eeb4b051488fd7bf|DATE=2026-08-17T07:29:47Z|SUBJECT=Merge pull request 'CR-2026-0080: Snikket EDGE traffic cutover' (#8) from cr-2026-0080-snikket-edge-cutover into main +REC|SOURCE_LOG|COMMIT=911d8cc52d5e8a677f132b736d01ade7a5879e59|DATE=2026-08-17T10:27:24+03:00|SUBJECT=CR-2026-0080: build Snikket EDGE cutover task +REC|SOURCE_LOG|COMMIT=bcee02410290c4563fea4507a35fdf6dce08d674|DATE=2026-08-17T10:13:58+03:00|SUBJECT=CR-2026-0080: plan Snikket EDGE cutover implementation +REC|SOURCE_LOG|COMMIT=85a325224532505bce79ef3bc2a224a162a32dd1|DATE=2026-08-17T10:08:28+03:00|SUBJECT=CR-2026-0080: approve Snikket EDGE cutover design +REC|SOURCE_LOG|COMMIT=81174ec87f42a04f893df6ce2a3a4bcde8e1e2ee|DATE=2026-08-16T04:45:00Z|SUBJECT=Merge pull request 'CR-2026-0078: harden Snikket TURN durability' (#6) from cr-2026-0078-snikket-turn-durability into main +REC|SOURCE_LOG|COMMIT=eb010cef52173ddba0f24f5486acab471efa05d6|DATE=2026-08-16T07:08:28+03:00|SUBJECT=CR-2026-0078: harden Snikket TURN durability +REC|SOURCE_LOG|COMMIT=c1a71bc168f06fbd78e8956bc3836e75a6241244|DATE=2026-08-15T18:04:07+03:00|SUBJECT=CR-2026-0076: install Docker CLI for Snikket guest +REC|SOURCE_LOG|COMMIT=08e77a62ccbf5d7684c0946f922fb7e28d1f4073|DATE=2026-08-15T02:26:48+03:00|SUBJECT=CR-2026-0076: harden Snikket VM150 rebuild source +DECISION=PASS_SNIKKET_WGEDGE_SOURCE_HISTORY_RCA +NEXT_GATE=RESTORE_FROM_SOURCE_HISTORY +TASK_RESULT=SNIKKET_WGEDGE_SOURCE_HISTORY_RCA CHANGES_MADE=false ROLLBACK_STARTED=false ROLLBACK_RESTORED=null MUTATION_OUTCOME=NO_MUTATION -HOMELAB_RESULT_CONTRACT={"version":1,"command_id":"SUPPORT-261006-SNIKKET-WG-ENDPOINT-WINDOWS-AUTH-FIXED-99736R1","status":"OK","changes_made":false,"rollback_started":false,"rollback_restored":null} +HOMELAB_RESULT_CONTRACT={"version":1,"command_id":"SUPPORT-261006-SNIKKET-WGEDGE-SOURCE-HISTORY-RCA-99738R1","status":"OK","changes_made":false,"rollback_started":false,"rollback_restored":null} OUTPUT_END CHAT_OUTPUT_END