{ "schema_version": 1, "channel": "homelab-runtime", "command_id": "SUPPORT-260917-XENFORO-TEMPLATE-AUTOMERGE-INTERNAL-DIAGNOSTIC-495T2D3", "status": "OK", "rc": 0, "host": "pve01", "mode": "read-only", "component": "xenforo-template-automerge-internal-diagnostic", "started_at_utc": "2026-09-17T15:37:36Z", "finished_at_utc": "2026-09-17T15:37:38Z", "reference_register_checked": true, "reference_sha256": "5a3d8e5154c41cb582a4e0aca68090be1f0138918bf82131a948df326f9d8d66", "error_register_checked": true, "error_register_sha256": "3b09a553ec0f527ed3afeed4753f52a74ee3036045bbfb3c685e9f8af4ba7ba0", "command_sha256": "5ed69c22c6c770b35d10e1ad2585dd397cd9b4661472f4e5eb7c960b139cbcd0", "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": "1fb46b6c0cd583a25cabb57e66ef1dcf525d98e176dbcf0211212dacaa7aec77", "sanitized_output_sha256": "1fb46b6c0cd583a25cabb57e66ef1dcf525d98e176dbcf0211212dacaa7aec77", "output_truncated_in_json": false, "full_sanitized_output_url": "https://git.gram1.ru/.well-known/homelab-runtime/latest.txt", "output": "TPL495T2D3_BEGIN=\nTPL495T2D3_DECISION=PASS_AUTOMERGE_INTERNAL_DISCOVERY\nTPL495T2D3_NEXT_GATE=READY_FOR_DIRECT_NATIVE_INTERNAL_REPAIR_495T2R5\nTPL495T2D3_PROOF={\"action_auto_merge\":{\"body_sha256\":\"dafc6ff3ebb435f50860ed1de3d0569dcbb95771b88898885be8f56c01986a0c\",\"calls\":{\"repository_aliases\":[],\"service_aliases\":[],\"static_calls\":[],\"template_repo_methods\":[\"getOutdatedTemplates\"],\"this_methods\":[\"buildLink\",\"getTemplateRepo\",\"isPost\",\"redirect\",\"view\"]},\"line_count\":18,\"signature\":{\"params\":[],\"return_type\":\"\",\"static\":false,\"visibility\":\"public\"},\"token_skeleton\":\"public function actionAutoMerge ( ) { if ( $this -> isPost ( ) ) { $templateRepo = $this -> getTemplateRepo ( ) ; $templateIds = array_keys ( $templateRepo -> getOutdatedTemplates ( ) ) ; $this -> app -> jobManager ( ) -> enqueueUnique ( , TemplateMerge :: class , [ => $templateIds , ] ) ; return $this -> redirect ( $this -> buildLink ( , null , [ => ] ) ) ; } else { return $this -> view ( , ) ; } }\"},\"domain\":\"codevipe.ru\",\"ok\":true,\"outdated_count\":1,\"source_strings_redacted\":true,\"template_bodies_published\":false,\"template_repository_candidates\":[{\"body_sha256\":\"3d486c7fbe8cd03304878752429b7caba2e73bb01b49d73da981cc0cbe49c1b4\",\"calls\":{\"repository_aliases\":[],\"service_aliases\":[],\"static_calls\":[],\"template_repo_methods\":[],\"this_methods\":[\"getBaseOutdatedTemplateData\"]},\"name\":\"countOutdatedTemplates\",\"signature\":{\"params\":[],\"return_type\":\"\",\"static\":false,\"visibility\":\"public\"},\"token_skeleton\":\"public function countOutdatedTemplates ( ) { return count ( $this -> getBaseOutdatedTemplateData ( ) ) ; }\"},{\"body_sha256\":\"d5dc4e81e1834a500f3c5064cad55ee2eb03399d85a7c7a16561321039b2e6f2\",\"calls\":{\"repository_aliases\":[],\"service_aliases\":[],\"static_calls\":[],\"template_repo_methods\":[],\"this_methods\":[\"db\"]},\"name\":\"getBaseOutdatedTemplateData\",\"signature\":{\"params\":[],\"return_type\":\"\",\"static\":false,\"visibility\":\"protected\"},\"token_skeleton\":\"protected function getBaseOutdatedTemplateData ( ) { $db = $this -> db ( ) ; return $db -> fetchAllKeyed ( , ) ; }\"},{\"body_sha256\":\"d78b3772d6aa9d553902a10b90d692f184d3f56d08f3255defc88a9ce5b65b16\",\"calls\":{\"repository_aliases\":[],\"service_aliases\":[],\"static_calls\":[],\"template_repo_methods\":[],\"this_methods\":[\"getBaseOutdatedTemplateData\"]},\"name\":\"getOutdatedTemplates\",\"signature\":{\"params\":[],\"return_type\":\"\",\"static\":false,\"visibility\":\"public\"},\"token_skeleton\":\"public function getOutdatedTemplates ( ) { $data = $this -> getBaseOutdatedTemplateData ( ) ; $templateIds = array_keys ( $data ) ; if ( ! $templateIds ) { return [ ] ; } $templates = $this -> em -> findByIds ( Template :: class , $templateIds ) ; $output = [ ] ; foreach ( $data AS $templateId => $outdated ) { if ( ! isset ( $templates [ $templateId ] ) ) { continue ; } $outdated [ ] = $templates [ $templateId ] ; $output [ $templateId ] = $outdated ; } return $output ; }\"}],\"xf_error_after\":0,\"xf_error_before\":0}\nTPL495T2D3_SAFE_REPORT={\"commands_remaining_to_full_finish\":2,\"decision\":\"PASS_AUTOMERGE_INTERNAL_DISCOVERY\",\"mail_sends\":0,\"mutations\":0,\"next_gate\":\"READY_FOR_DIRECT_NATIVE_INTERNAL_REPAIR_495T2R5\",\"vm211_excluded\":true}\nTPL495T2D3_END=\n" }