diff --git a/runtime/history/SUPPORT-260918-XENFORO-TEMPLATE-MERGE-SERVICE-RCA-495T3R4.json b/runtime/history/SUPPORT-260918-XENFORO-TEMPLATE-MERGE-SERVICE-RCA-495T3R4.json new file mode 100644 index 00000000..23f046c3 --- /dev/null +++ b/runtime/history/SUPPORT-260918-XENFORO-TEMPLATE-MERGE-SERVICE-RCA-495T3R4.json @@ -0,0 +1,38 @@ +{ + "schema_version": 1, + "channel": "homelab-runtime", + "command_id": "SUPPORT-260918-XENFORO-TEMPLATE-MERGE-SERVICE-RCA-495T3R4", + "status": "FAIL", + "rc": 3, + "host": "pve01", + "mode": "read-only", + "component": "xenforo-template-merge-service-rca", + "started_at_utc": "2026-09-17T22:19:22Z", + "finished_at_utc": "2026-09-17T22:19:25Z", + "reference_register_checked": true, + "reference_sha256": "5a3d8e5154c41cb582a4e0aca68090be1f0138918bf82131a948df326f9d8d66", + "error_register_checked": true, + "error_register_sha256": "3b09a553ec0f527ed3afeed4753f52a74ee3036045bbfb3c685e9f8af4ba7ba0", + "command_sha256": "f66955361fd82d2307ead100b2a5ecc8ef99f53c90131cfb6997170c5140693f", + "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": 3, + "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": "8e37e2561ea1769921a2d635d9d29e56238ab6889f6cc1953a6b5d87931e828d", + "sanitized_output_sha256": "8e37e2561ea1769921a2d635d9d29e56238ab6889f6cc1953a6b5d87931e828d", + "output_truncated_in_json": false, + "full_sanitized_output_url": "https://git.gram1.ru/.well-known/homelab-runtime/latest.txt", + "output": "TPL495T3R4_WRAPPER_BEGIN=true\nERROR_REGISTER_CHECK=OK\nREFERENCE_CHECK=OK\nAUTHORITY_CHECK_SCOPE=READABILITY_ONLY_INCIDENTS_NOT_CLOSED\nTPL495T3R4_BEGIN=true\nMODE=READ_ONLY_MERGE_SERVICE_RCA\nVM211_EXCLUDED=true\nTPL495T3R4_SAFE_REPORT={\"affected\":[\"codevipe.ru\",\"dsmods.ru\",\"gamevipe.ru\",\"hkmods.ru\",\"zakrutim.ru\"],\"outdated_total\":5,\"xf_error_rows_total\":7,\"sites\":[{\"site\":\"codevipe.ru\",\"xf_error_rows\":1,\"board_active\":\"1\",\"outdated_count_repo\":1,\"action_merge_outdated\":{\"descriptor\":{\"exists\":true,\"class\":\"XF\\\\Admin\\\\Controller\\\\TemplateController\",\"public\":true,\"required\":1,\"total\":1,\"params\":[{\"name\":\"params\",\"optional\":false,\"type\":\"XF\\\\Mvc\\\\ParameterBag\"}],\"file\":\"src/XF/Admin/Controller/TemplateController.php\",\"source_sha256\":\"1379d227c66f90a1e58acd7d0a3d00af36a7a8a3eaeee728cbb752231f6fcd61\",\"token_skeleton\":\"public function actionMergeOutdated ( ParameterBag $params ) { $this -> setSectionContext ( ) ; $template = $this -> assertTemplateForComparison ( $params -> template_id ) ; $parentTemplate = $template -> ParentTemplate ; if ( ! $parentTemplate -> last_edit_date || $parentTemplate -> last_edit_date < $template -> last_edit_date ) { return $this -> error ( \\\\XF :: phrase ( ) ) ; } $historyRepo = $this -> repository ( TemplateHistoryRepository :: class ) ; $previousVersion = $historyRepo -> getHistoryForMerge ( $template , $parentTemplate ) ; if ( ! $previousVersion ) { return $this -> error ( \\\\XF :: phrase ( ) ) ; } if ( $this -> isPost ( ) ) { $merged = $this -> filter ( , ) ; $final = implode ( , $merged ) ; $template -> template = $final ; $template -> last_edit_date = time ( ) ; if ( ! $template -> isChanged ( ) ) { $template -> updateVersionId ( ) ; } $template -> save ( ) ; return $this -> redirect ( $this -> buildLink ( ) ) ; } else { $diff = new Diff3 ( ) ; $diffs = $diff -> findDifferences ( $template -> template , $previousVersion -> template , $parentTemplate -> template ) ; $viewParams = [ => $template , => $parentTemplate , => $previousVersion , => $diffs , ] ; return $this -> view ( , , $viewParams ) ; } }\"},\"service_bindings\":[],\"history_receivers\":[\"historyRepo\"]},\"filesystem_hits\":[{\"file\":\"src/XF/Job/TemplateMerge.php\",\"file_sha256\":\"7cac80d14ba46c6889f99d0603eed60b387bdf527458a15e912bddc0015e3a93\",\"definition\":false,\"occurrences\":[{\"line\":89,\"sha256\":\"acf4133f395cfc430e8fd41a922367ee843ff80ad9653089d5525859d1ac4b96\"}]},{\"file\":\"src/XF/Admin/Controller/TemplateController.php\",\"file_sha256\":\"73b31a31b0498882cf599b3bb95d00ec42783d921d720dadd5342f7d6716f060\",\"definition\":false,\"occurrences\":[{\"line\":452,\"sha256\":\"acf4133f395cfc430e8fd41a922367ee843ff80ad9653089d5525859d1ac4b96\"}]},{\"file\":\"src/XF/Repository/TemplateHistoryRepository.php\",\"file_sha256\":\"5a3ee2f82eea6014df5a2db82ed37c49820c53abf375fde133884c93fef4a655\",\"definition\":true,\"occurrences\":[{\"line\":11,\"sha256\":\"62a29cb3534609192eff09eb69949a75b9e6f150b6a77f31e491c28ca9233f22\"}]}],\"definition_hits\":[{\"file\":\"src/XF/Repository/TemplateHistoryRepository.php\",\"file_sha256\":\"5a3ee2f82eea6014df5a2db82ed37c49820c53abf375fde133884c93fef4a655\",\"occurrences\":[{\"line\":11,\"sha256\":\"62a29cb3534609192eff09eb69949a75b9e6f150b6a77f31e491c28ca9233f22\"}]}],\"outdated\":[{\"template_id\":1401,\"type\":\"public\",\"title\":\"extra.less\",\"style_id\":2,\"addon_id\":\"\",\"version_id\":0,\"version_string\":\"\",\"last_edit_date\":1784195301,\"body\":{\"sha256\":\"ca051810957679432c36024c18f3adbf3a087c7a034cd46d72edfffbd4564b6c\",\"bytes\":2396,\"lines\":131},\"outdated_meta\":{\"template_id\":1401,\"parent_version_string\":\"2.0.0 Alpha\",\"parent_last_edit_date\":1721849139,\"outdated_by_version\":1,\"outdated_by_date\":0},\"native_service\":null}]},{\"site\":\"dsmods.ru\",\"xf_error_rows\":1,\"board_active\":\"1\",\"outdated_count_repo\":1,\"action_merge_outdated\":{\"descriptor\":{\"exists\":true,\"class\":\"XF\\\\Admin\\\\Controller\\\\TemplateController\",\"public\":true,\"required\":1,\"total\":1,\"params\":[{\"name\":\"params\",\"optional\":false,\"type\":\"XF\\\\Mvc\\\\ParameterBag\"}],\"file\":\"src/XF/Admin/Controller/TemplateController.php\",\"source_sha256\":\"1379d227c66f90a1e58acd7d0a3d00af36a7a8a3eaeee728cbb752231f6fcd61\",\"token_skeleton\":\"public function actionMergeOutdated ( ParameterBag $params ) { $this -> setSectionContext ( ) ; $template = $this -> assertTemplateForComparison ( $params -> template_id ) ; $parentTemplate = $template -> ParentTemplate ; if ( ! $parentTemplate -> last_edit_date || $parentTemplate -> last_edit_date < $template -> last_edit_date ) { return $this -> error ( \\\\XF :: phrase ( ) ) ; } $historyRepo = $this -> repository ( TemplateHistoryRepository :: class ) ; $previousVersion = $historyRepo -> getHistoryForMerge ( $template , $parentTemplate ) ; if ( ! $previousVersion ) { return $this -> error ( \\\\XF :: phrase ( ) ) ; } if ( $this -> isPost ( ) ) { $merged = $this -> filter ( , ) ; $final = implode ( , $merged ) ; $template -> template = $final ; $template -> last_edit_date = time ( ) ; if ( ! $template -> isChanged ( ) ) { $template -> updateVersionId ( ) ; } $template -> save ( ) ; return $this -> redirect ( $this -> buildLink ( ) ) ; } else { $diff = new Diff3 ( ) ; $diffs = $diff -> findDifferences ( $template -> template , $previousVersion -> template , $parentTemplate -> template ) ; $viewParams = [ => $template , => $parentTemplate , => $previousVersion , => $diffs , ] ; return $this -> view ( , , $viewParams ) ; } }\"},\"service_bindings\":[],\"history_receivers\":[\"historyRepo\"]},\"filesystem_hits\":[{\"file\":\"src/XF/Job/TemplateMerge.php\",\"file_sha256\":\"7cac80d14ba46c6889f99d0603eed60b387bdf527458a15e912bddc0015e3a93\",\"definition\":false,\"occurrences\":[{\"line\":89,\"sha256\":\"acf4133f395cfc430e8fd41a922367ee843ff80ad9653089d5525859d1ac4b96\"}]},{\"file\":\"src/XF/Admin/Controller/TemplateController.php\",\"file_sha256\":\"73b31a31b0498882cf599b3bb95d00ec42783d921d720dadd5342f7d6716f060\",\"definition\":false,\"occurrences\":[{\"line\":452,\"sha256\":\"acf4133f395cfc430e8fd41a922367ee843ff80ad9653089d5525859d1ac4b96\"}]},{\"file\":\"src/XF/Repository/TemplateHistoryRepository.php\",\"file_sha256\":\"5a3ee2f82eea6014df5a2db82ed37c49820c53abf375fde133884c93fef4a655\",\"definition\":true,\"occurrences\":[{\"line\":11,\"sha256\":\"62a29cb3534609192eff09eb69949a75b9e6f150b6a77f31e491c28ca9233f22\"}]}],\"definition_hits\":[{\"file\":\"src/XF/Repository/TemplateHistoryRepository.php\",\"file_sha256\":\"5a3ee2f82eea6014df5a2db82ed37c49820c53abf375fde133884c93fef4a655\",\"occurrences\":[{\"line\":11,\"sha256\":\"62a29cb3534609192eff09eb69949a75b9e6f150b6a77f31e491c28ca9233f22\"}]}],\"outdated\":[{\"template_id\":1317,\"type\":\"public\",\"title\":\"extra.less\",\"style_id\":2,\"addon_id\":\"\",\"version_id\":0,\"version_string\":\"\",\"last_edit_date\":1784195301,\"body\":{\"sha256\":\"3898034b75b561c774b41f6e1d8dce66a171fe30c7c210d543b41a8133e42fa2\",\"bytes\":2402,\"lines\":131},\"outdated_meta\":{\"template_id\":1317,\"parent_version_string\":\"2.0.0 Alpha\",\"parent_last_edit_date\":1728727128,\"outdated_by_version\":1,\"outdated_by_date\":0},\"native_service\":null}]},{\"site\":\"gamevipe.ru\",\"xf_error_rows\":1,\"board_active\":\"1\",\"outdated_count_repo\":1,\"action_merge_outdated\":{\"descriptor\":{\"exists\":true,\"class\":\"XF\\\\Admin\\\\Controller\\\\TemplateController\",\"public\":true,\"required\":1,\"total\":1,\"params\":[{\"name\":\"params\",\"optional\":false,\"type\":\"XF\\\\Mvc\\\\ParameterBag\"}],\"file\":\"src/XF/Admin/Controller/TemplateController.php\",\"source_sha256\":\"1379d227c66f90a1e58acd7d0a3d00af36a7a8a3eaeee728cbb752231f6fcd61\",\"token_skeleton\":\"public function actionMergeOutdated ( ParameterBag $params ) { $this -> setSectionContext ( ) ; $template = $this -> assertTemplateForComparison ( $params -> template_id ) ; $parentTemplate = $template -> ParentTemplate ; if ( ! $parentTemplate -> last_edit_date || $parentTemplate -> last_edit_date < $template -> last_edit_date ) { return $this -> error ( \\\\XF :: phrase ( ) ) ; } $historyRepo = $this -> repository ( TemplateHistoryRepository :: class ) ; $previousVersion = $historyRepo -> getHistoryForMerge ( $template , $parentTemplate ) ; if ( ! $previousVersion ) { return $this -> error ( \\\\XF :: phrase ( ) ) ; } if ( $this -> isPost ( ) ) { $merged = $this -> filter ( , ) ; $final = implode ( , $merged ) ; $template -> template = $final ; $template -> last_edit_date = time ( ) ; if ( ! $template -> isChanged ( ) ) { $template -> updateVersionId ( ) ; } $template -> save ( ) ; return $this -> redirect ( $this -> buildLink ( ) ) ; } else { $diff = new Diff3 ( ) ; $diffs = $diff -> findDifferences ( $template -> template , $previousVersion -> template , $parentTemplate -> template ) ; $viewParams = [ => $template , => $parentTemplate , => $previousVersion , => $diffs , ] ; return $this -> view ( , , $viewParams ) ; } }\"},\"service_bindings\":[],\"history_receivers\":[\"historyRepo\"]},\"filesystem_hits\":[{\"file\":\"src/XF/Job/TemplateMerge.php\",\"file_sha256\":\"7cac80d14ba46c6889f99d0603eed60b387bdf527458a15e912bddc0015e3a93\",\"definition\":false,\"occurrences\":[{\"line\":89,\"sha256\":\"acf4133f395cfc430e8fd41a922367ee843ff80ad9653089d5525859d1ac4b96\"}]},{\"file\":\"src/XF/Admin/Controller/TemplateController.php\",\"file_sha256\":\"73b31a31b0498882cf599b3bb95d00ec42783d921d720dadd5342f7d6716f060\",\"definition\":false,\"occurrences\":[{\"line\":452,\"sha256\":\"acf4133f395cfc430e8fd41a922367ee843ff80ad9653089d5525859d1ac4b96\"}]},{\"file\":\"src/XF/Repository/TemplateHistoryRepository.php\",\"file_sha256\":\"5a3ee2f82eea6014df5a2db82ed37c49820c53abf375fde133884c93fef4a655\",\"definition\":true,\"occurrences\":[{\"line\":11,\"sha256\":\"62a29cb3534609192eff09eb69949a75b9e6f150b6a77f31e491c28ca9233f22\"}]}],\"definition_hits\":[{\"file\":\"src/XF/Repository/TemplateHistoryRepository.php\",\"file_sha256\":\"5a3ee2f82eea6014df5a2db82ed37c49820c53abf375fde133884c93fef4a655\",\"occurrences\":[{\"line\":11,\"sha256\":\"62a29cb3534609192eff09eb69949a75b9e6f150b6a77f31e491c28ca9233f22\"}]}],\"outdated\":[{\"template_id\":1696,\"type\":\"public\",\"title\":\"extra.less\",\"style_id\":2,\"addon_id\":\"\",\"version_id\":0,\"version_string\":\"\",\"last_edit_date\":1784195301,\"body\":{\"sha256\":\"fde07ae7d5f65a3cdee23b7f90834229c95495fb69db44727345b550441646ab\",\"bytes\":2410,\"lines\":131},\"outdated_meta\":{\"template_id\":1696,\"parent_version_string\":\"2.0.0 Alpha\",\"parent_last_edit_date\":1720986507,\"outdated_by_version\":1,\"outdated_by_date\":0},\"native_service\":null}]},{\"site\":\"hkmods.ru\",\"xf_error_rows\":1,\"board_active\":\"1\",\"outdated_count_repo\":1,\"action_merge_outdated\":{\"descriptor\":{\"exists\":true,\"class\":\"XF\\\\Admin\\\\Controller\\\\TemplateController\",\"public\":true,\"required\":1,\"total\":1,\"params\":[{\"name\":\"params\",\"optional\":false,\"type\":\"XF\\\\Mvc\\\\ParameterBag\"}],\"file\":\"src/XF/Admin/Controller/TemplateController.php\",\"source_sha256\":\"1379d227c66f90a1e58acd7d0a3d00af36a7a8a3eaeee728cbb752231f6fcd61\",\"token_skeleton\":\"public function actionMergeOutdated ( ParameterBag $params ) { $this -> setSectionContext ( ) ; $template = $this -> assertTemplateForComparison ( $params -> template_id ) ; $parentTemplate = $template -> ParentTemplate ; if ( ! $parentTemplate -> last_edit_date || $parentTemplate -> last_edit_date < $template -> last_edit_date ) { return $this -> error ( \\\\XF :: phrase ( ) ) ; } $historyRepo = $this -> repository ( TemplateHistoryRepository :: class ) ; $previousVersion = $historyRepo -> getHistoryForMerge ( $template , $parentTemplate ) ; if ( ! $previousVersion ) { return $this -> error ( \\\\XF :: phrase ( ) ) ; } if ( $this -> isPost ( ) ) { $merged = $this -> filter ( , ) ; $final = implode ( , $merged ) ; $template -> template = $final ; $template -> last_edit_date = time ( ) ; if ( ! $template -> isChanged ( ) ) { $template -> updateVersionId ( ) ; } $template -> save ( ) ; return $this -> redirect ( $this -> buildLink ( ) ) ; } else { $diff = new Diff3 ( ) ; $diffs = $diff -> findDifferences ( $template -> template , $previousVersion -> template , $parentTemplate -> template ) ; $viewParams = [ => $template , => $parentTemplate , => $previousVersion , => $diffs , ] ; return $this -> view ( , , $viewParams ) ; } }\"},\"service_bindings\":[],\"history_receivers\":[\"historyRepo\"]},\"filesystem_hits\":[{\"file\":\"src/XF/Job/TemplateMerge.php\",\"file_sha256\":\"7cac80d14ba46c6889f99d0603eed60b387bdf527458a15e912bddc0015e3a93\",\"definition\":false,\"occurrences\":[{\"line\":89,\"sha256\":\"acf4133f395cfc430e8fd41a922367ee843ff80ad9653089d5525859d1ac4b96\"}]},{\"file\":\"src/XF/Admin/Controller/TemplateController.php\",\"file_sha256\":\"73b31a31b0498882cf599b3bb95d00ec42783d921d720dadd5342f7d6716f060\",\"definition\":false,\"occurrences\":[{\"line\":452,\"sha256\":\"acf4133f395cfc430e8fd41a922367ee843ff80ad9653089d5525859d1ac4b96\"}]},{\"file\":\"src/XF/Repository/TemplateHistoryRepository.php\",\"file_sha256\":\"5a3ee2f82eea6014df5a2db82ed37c49820c53abf375fde133884c93fef4a655\",\"definition\":true,\"occurrences\":[{\"line\":11,\"sha256\":\"62a29cb3534609192eff09eb69949a75b9e6f150b6a77f31e491c28ca9233f22\"}]}],\"definition_hits\":[{\"file\":\"src/XF/Repository/TemplateHistoryRepository.php\",\"file_sha256\":\"5a3ee2f82eea6014df5a2db82ed37c49820c53abf375fde133884c93fef4a655\",\"occurrences\":[{\"line\":11,\"sha256\":\"62a29cb3534609192eff09eb69949a75b9e6f150b6a77f31e491c28ca9233f22\"}]}],\"outdated\":[{\"template_id\":2021,\"type\":\"public\",\"title\":\"extra.less\",\"style_id\":2,\"addon_id\":\"\",\"version_id\":0,\"version_string\":\"\",\"last_edit_date\":1784195301,\"body\":{\"sha256\":\"2339326596eb8f77111df70fa4336809e67615942b4b7b1afb2777d8ee447bd3\",\"bytes\":2422,\"lines\":131},\"outdated_meta\":{\"template_id\":2021,\"parent_version_string\":\"2.0.0 Alpha\",\"parent_last_edit_date\":1691944582,\"outdated_by_version\":1,\"outdated_by_date\":0},\"native_service\":null}]},{\"site\":\"kingofwolk.ru\",\"xf_error_rows\":1,\"board_active\":\"1\",\"outdated_count_repo\":0,\"action_merge_outdated\":{\"descriptor\":{\"exists\":true,\"class\":\"XF\\\\Admin\\\\Controller\\\\TemplateController\",\"public\":true,\"required\":1,\"total\":1,\"params\":[{\"name\":\"params\",\"optional\":false,\"type\":\"XF\\\\Mvc\\\\ParameterBag\"}],\"file\":\"src/XF/Admin/Controller/TemplateController.php\",\"source_sha256\":\"1379d227c66f90a1e58acd7d0a3d00af36a7a8a3eaeee728cbb752231f6fcd61\",\"token_skeleton\":\"public function actionMergeOutdated ( ParameterBag $params ) { $this -> setSectionContext ( ) ; $template = $this -> assertTemplateForComparison ( $params -> template_id ) ; $parentTemplate = $template -> ParentTemplate ; if ( ! $parentTemplate -> last_edit_date || $parentTemplate -> last_edit_date < $template -> last_edit_date ) { return $this -> error ( \\\\XF :: phrase ( ) ) ; } $historyRepo = $this -> repository ( TemplateHistoryRepository :: class ) ; $previousVersion = $historyRepo -> getHistoryForMerge ( $template , $parentTemplate ) ; if ( ! $previousVersion ) { return $this -> error ( \\\\XF :: phrase ( ) ) ; } if ( $this -> isPost ( ) ) { $merged = $this -> filter ( , ) ; $final = implode ( , $merged ) ; $template -> template = $final ; $template -> last_edit_date = time ( ) ; if ( ! $template -> isChanged ( ) ) { $template -> updateVersionId ( ) ; } $template -> save ( ) ; return $this -> redirect ( $this -> buildLink ( ) ) ; } else { $diff = new Diff3 ( ) ; $diffs = $diff -> findDifferences ( $template -> template , $previousVersion -> template , $parentTemplate -> template ) ; $viewParams = [ => $template , => $parentTemplate , => $previousVersion , => $diffs , ] ; return $this -> view ( , , $viewParams ) ; } }\"},\"service_bindings\":[],\"history_receivers\":[\"historyRepo\"]},\"filesystem_hits\":[{\"file\":\"src/XF/Job/TemplateMerge.php\",\"file_sha256\":\"7cac80d14ba46c6889f99d0603eed60b387bdf527458a15e912bddc0015e3a93\",\"definition\":false,\"occurrences\":[{\"line\":89,\"sha256\":\"acf4133f395cfc430e8fd41a922367ee843ff80ad9653089d5525859d1ac4b96\"}]},{\"file\":\"src/XF/Admin/Controller/TemplateController.php\",\"file_sha256\":\"73b31a31b0498882cf599b3bb95d00ec42783d921d720dadd5342f7d6716f060\",\"definition\":false,\"occurrences\":[{\"line\":452,\"sha256\":\"acf4133f395cfc430e8fd41a922367ee843ff80ad9653089d5525859d1ac4b96\"}]},{\"file\":\"src/XF/Repository/TemplateHistoryRepository.php\",\"file_sha256\":\"5a3ee2f82eea6014df5a2db82ed37c49820c53abf375fde133884c93fef4a655\",\"definition\":true,\"occurrences\":[{\"line\":11,\"sha256\":\"62a29cb3534609192eff09eb69949a75b9e6f150b6a77f31e491c28ca9233f22\"}]}],\"definition_hits\":[{\"file\":\"src/XF/Repository/TemplateHistoryRepository.php\",\"file_sha256\":\"5a3ee2f82eea6014df5a2db82ed37c49820c53abf375fde133884c93fef4a655\",\"occurrences\":[{\"line\":11,\"sha256\":\"62a29cb3534609192eff09eb69949a75b9e6f150b6a77f31e491c28ca9233f22\"}]}],\"outdated\":[]},{\"site\":\"zakrutim.ru\",\"xf_error_rows\":1,\"board_active\":\"1\",\"outdated_count_repo\":1,\"action_merge_outdated\":{\"descriptor\":{\"exists\":true,\"class\":\"XF\\\\Admin\\\\Controller\\\\TemplateController\",\"public\":true,\"required\":1,\"total\":1,\"params\":[{\"name\":\"params\",\"optional\":false,\"type\":\"XF\\\\Mvc\\\\ParameterBag\"}],\"file\":\"src/XF/Admin/Controller/TemplateController.php\",\"source_sha256\":\"1379d227c66f90a1e58acd7d0a3d00af36a7a8a3eaeee728cbb752231f6fcd61\",\"token_skeleton\":\"public function actionMergeOutdated ( ParameterBag $params ) { $this -> setSectionContext ( ) ; $template = $this -> assertTemplateForComparison ( $params -> template_id ) ; $parentTemplate = $template -> ParentTemplate ; if ( ! $parentTemplate -> last_edit_date || $parentTemplate -> last_edit_date < $template -> last_edit_date ) { return $this -> error ( \\\\XF :: phrase ( ) ) ; } $historyRepo = $this -> repository ( TemplateHistoryRepository :: class ) ; $previousVersion = $historyRepo -> getHistoryForMerge ( $template , $parentTemplate ) ; if ( ! $previousVersion ) { return $this -> error ( \\\\XF :: phrase ( ) ) ; } if ( $this -> isPost ( ) ) { $merged = $this -> filter ( , ) ; $final = implode ( , $merged ) ; $template -> template = $final ; $template -> last_edit_date = time ( ) ; if ( ! $template -> isChanged ( ) ) { $template -> updateVersionId ( ) ; } $template -> save ( ) ; return $this -> redirect ( $this -> buildLink ( ) ) ; } else { $diff = new Diff3 ( ) ; $diffs = $diff -> findDifferences ( $template -> template , $previousVersion -> template , $parentTemplate -> template ) ; $viewParams = [ => $template , => $parentTemplate , => $previousVersion , => $diffs , ] ; return $this -> view ( , , $viewParams ) ; } }\"},\"service_bindings\":[],\"history_receivers\":[\"historyRepo\"]},\"filesystem_hits\":[{\"file\":\"src/XF/Job/TemplateMerge.php\",\"file_sha256\":\"7cac80d14ba46c6889f99d0603eed60b387bdf527458a15e912bddc0015e3a93\",\"definition\":false,\"occurrences\":[{\"line\":89,\"sha256\":\"acf4133f395cfc430e8fd41a922367ee843ff80ad9653089d5525859d1ac4b96\"}]},{\"file\":\"src/XF/Admin/Controller/TemplateController.php\",\"file_sha256\":\"73b31a31b0498882cf599b3bb95d00ec42783d921d720dadd5342f7d6716f060\",\"definition\":false,\"occurrences\":[{\"line\":452,\"sha256\":\"acf4133f395cfc430e8fd41a922367ee843ff80ad9653089d5525859d1ac4b96\"}]},{\"file\":\"src/XF/Repository/TemplateHistoryRepository.php\",\"file_sha256\":\"5a3ee2f82eea6014df5a2db82ed37c49820c53abf375fde133884c93fef4a655\",\"definition\":true,\"occurrences\":[{\"line\":11,\"sha256\":\"62a29cb3534609192eff09eb69949a75b9e6f150b6a77f31e491c28ca9233f22\"}]}],\"definition_hits\":[{\"file\":\"src/XF/Repository/TemplateHistoryRepository.php\",\"file_sha256\":\"5a3ee2f82eea6014df5a2db82ed37c49820c53abf375fde133884c93fef4a655\",\"occurrences\":[{\"line\":11,\"sha256\":\"62a29cb3534609192eff09eb69949a75b9e6f150b6a77f31e491c28ca9233f22\"}]}],\"outdated\":[{\"template_id\":1921,\"type\":\"public\",\"title\":\"extra.less\",\"style_id\":2,\"addon_id\":\"\",\"version_id\":0,\"version_string\":\"\",\"last_edit_date\":1784195301,\"body\":{\"sha256\":\"9662d1b57f5f6fcd2992fd9d150aeb887c242f792eb750cf6cb458d65b99a12d\",\"bytes\":2435,\"lines\":131},\"outdated_meta\":{\"template_id\":1921,\"parent_version_string\":\"2.0.0 Alpha\",\"parent_last_edit_date\":1692264832,\"outdated_by_version\":1,\"outdated_by_date\":0},\"native_service\":null}]},{\"site\":\"newfi.ru\",\"xf_error_rows\":1,\"board_active\":\"1\",\"outdated_count_repo\":0,\"action_merge_outdated\":{\"descriptor\":{\"exists\":true,\"class\":\"XF\\\\Admin\\\\Controller\\\\TemplateController\",\"public\":true,\"required\":1,\"total\":1,\"params\":[{\"name\":\"params\",\"optional\":false,\"type\":\"XF\\\\Mvc\\\\ParameterBag\"}],\"file\":\"src/XF/Admin/Controller/TemplateController.php\",\"source_sha256\":\"1379d227c66f90a1e58acd7d0a3d00af36a7a8a3eaeee728cbb752231f6fcd61\",\"token_skeleton\":\"public function actionMergeOutdated ( ParameterBag $params ) { $this -> setSectionContext ( ) ; $template = $this -> assertTemplateForComparison ( $params -> template_id ) ; $parentTemplate = $template -> ParentTemplate ; if ( ! $parentTemplate -> last_edit_date || $parentTemplate -> last_edit_date < $template -> last_edit_date ) { return $this -> error ( \\\\XF :: phrase ( ) ) ; } $historyRepo = $this -> repository ( TemplateHistoryRepository :: class ) ; $previousVersion = $historyRepo -> getHistoryForMerge ( $template , $parentTemplate ) ; if ( ! $previousVersion ) { return $this -> error ( \\\\XF :: phrase ( ) ) ; } if ( $this -> isPost ( ) ) { $merged = $this -> filter ( , ) ; $final = implode ( , $merged ) ; $template -> template = $final ; $template -> last_edit_date = time ( ) ; if ( ! $template -> isChanged ( ) ) { $template -> updateVersionId ( ) ; } $template -> save ( ) ; return $this -> redirect ( $this -> buildLink ( ) ) ; } else { $diff = new Diff3 ( ) ; $diffs = $diff -> findDifferences ( $template -> template , $previousVersion -> template , $parentTemplate -> template ) ; $viewParams = [ => $template , => $parentTemplate , => $previousVersion , => $diffs , ] ; return $this -> view ( , , $viewParams ) ; } }\"},\"service_bindings\":[],\"history_receivers\":[\"historyRepo\"]},\"filesystem_hits\":[{\"file\":\"src/XF/Job/TemplateMerge.php\",\"file_sha256\":\"7cac80d14ba46c6889f99d0603eed60b387bdf527458a15e912bddc0015e3a93\",\"definition\":false,\"occurrences\":[{\"line\":89,\"sha256\":\"acf4133f395cfc430e8fd41a922367ee843ff80ad9653089d5525859d1ac4b96\"}]},{\"file\":\"src/XF/Admin/Controller/TemplateController.php\",\"file_sha256\":\"73b31a31b0498882cf599b3bb95d00ec42783d921d720dadd5342f7d6716f060\",\"definition\":false,\"occurrences\":[{\"line\":452,\"sha256\":\"acf4133f395cfc430e8fd41a922367ee843ff80ad9653089d5525859d1ac4b96\"}]},{\"file\":\"src/XF/Repository/TemplateHistoryRepository.php\",\"file_sha256\":\"5a3ee2f82eea6014df5a2db82ed37c49820c53abf375fde133884c93fef4a655\",\"definition\":true,\"occurrences\":[{\"line\":11,\"sha256\":\"62a29cb3534609192eff09eb69949a75b9e6f150b6a77f31e491c28ca9233f22\"}]}],\"definition_hits\":[{\"file\":\"src/XF/Repository/TemplateHistoryRepository.php\",\"file_sha256\":\"5a3ee2f82eea6014df5a2db82ed37c49820c53abf375fde133884c93fef4a655\",\"occurrences\":[{\"line\":11,\"sha256\":\"62a29cb3534609192eff09eb69949a75b9e6f150b6a77f31e491c28ca9233f22\"}]}],\"outdated\":[]}],\"scope\":\"READ_ONLY_NO_XENFORO_MUTATION\"}\nTPL495T3R4_DECISION=HOLD_XF_ERROR_LOG_NOT_ZERO\nTPL495T3R4_HOLD=7\nHOMELAB_RESULT_CONTRACT={\"version\":1,\"command_id\":\"SUPPORT-260918-XENFORO-TEMPLATE-MERGE-SERVICE-RCA-495T3R4\",\"status\":\"FAIL\",\"changes_made\":false,\"rollback_started\":false,\"rollback_restored\":null}\n" +} diff --git a/runtime/history/SUPPORT-260918-XENFORO-TEMPLATE-MERGE-SERVICE-RCA-495T3R4.txt b/runtime/history/SUPPORT-260918-XENFORO-TEMPLATE-MERGE-SERVICE-RCA-495T3R4.txt new file mode 100644 index 00000000..5879d492 --- /dev/null +++ b/runtime/history/SUPPORT-260918-XENFORO-TEMPLATE-MERGE-SERVICE-RCA-495T3R4.txt @@ -0,0 +1,43 @@ +CHAT_OUTPUT_BEGIN +COMMAND_ID=SUPPORT-260918-XENFORO-TEMPLATE-MERGE-SERVICE-RCA-495T3R4 +STATUS=FAIL +RC=3 +HOST=pve01 +MODE=read-only +COMPONENT=xenforo-template-merge-service-rca +REFERENCE_REGISTER_CHECK=OK +REFERENCE_SHA256=5a3d8e5154c41cb582a4e0aca68090be1f0138918bf82131a948df326f9d8d66 +ERROR_REGISTER_CHECK=OK +ERROR_REGISTER_SHA256=3b09a553ec0f527ed3afeed4753f52a74ee3036045bbfb3c685e9f8af4ba7ba0 +COMMAND_SHA256=f66955361fd82d2307ead100b2a5ecc8ef99f53c90131cfb6997170c5140693f +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=3 +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=8e37e2561ea1769921a2d635d9d29e56238ab6889f6cc1953a6b5d87931e828d +SANITIZED_OUTPUT_SHA256=8e37e2561ea1769921a2d635d9d29e56238ab6889f6cc1953a6b5d87931e828d +OUTPUT_BEGIN +TPL495T3R4_WRAPPER_BEGIN=true +ERROR_REGISTER_CHECK=OK +REFERENCE_CHECK=OK +AUTHORITY_CHECK_SCOPE=READABILITY_ONLY_INCIDENTS_NOT_CLOSED +TPL495T3R4_BEGIN=true +MODE=READ_ONLY_MERGE_SERVICE_RCA +VM211_EXCLUDED=true +TPL495T3R4_SAFE_REPORT={"affected":["codevipe.ru","dsmods.ru","gamevipe.ru","hkmods.ru","zakrutim.ru"],"outdated_total":5,"xf_error_rows_total":7,"sites":[{"site":"codevipe.ru","xf_error_rows":1,"board_active":"1","outdated_count_repo":1,"action_merge_outdated":{"descriptor":{"exists":true,"class":"XF\\Admin\\Controller\\TemplateController","public":true,"required":1,"total":1,"params":[{"name":"params","optional":false,"type":"XF\\Mvc\\ParameterBag"}],"file":"src/XF/Admin/Controller/TemplateController.php","source_sha256":"1379d227c66f90a1e58acd7d0a3d00af36a7a8a3eaeee728cbb752231f6fcd61","token_skeleton":"public function actionMergeOutdated ( ParameterBag $params ) { $this -> setSectionContext ( ) ; $template = $this -> assertTemplateForComparison ( $params -> template_id ) ; $parentTemplate = $template -> ParentTemplate ; if ( ! $parentTemplate -> last_edit_date || $parentTemplate -> last_edit_date < $template -> last_edit_date ) { return $this -> error ( \\XF :: phrase ( ) ) ; } $historyRepo = $this -> repository ( TemplateHistoryRepository :: class ) ; $previousVersion = $historyRepo -> getHistoryForMerge ( $template , $parentTemplate ) ; if ( ! $previousVersion ) { return $this -> error ( \\XF :: phrase ( ) ) ; } if ( $this -> isPost ( ) ) { $merged = $this -> filter ( , ) ; $final = implode ( , $merged ) ; $template -> template = $final ; $template -> last_edit_date = time ( ) ; if ( ! $template -> isChanged ( ) ) { $template -> updateVersionId ( ) ; } $template -> save ( ) ; return $this -> redirect ( $this -> buildLink ( ) ) ; } else { $diff = new Diff3 ( ) ; $diffs = $diff -> findDifferences ( $template -> template , $previousVersion -> template , $parentTemplate -> template ) ; $viewParams = [ => $template , => $parentTemplate , => $previousVersion , => $diffs , ] ; return $this -> view ( , , $viewParams ) ; } }"},"service_bindings":[],"history_receivers":["historyRepo"]},"filesystem_hits":[{"file":"src/XF/Job/TemplateMerge.php","file_sha256":"7cac80d14ba46c6889f99d0603eed60b387bdf527458a15e912bddc0015e3a93","definition":false,"occurrences":[{"line":89,"sha256":"acf4133f395cfc430e8fd41a922367ee843ff80ad9653089d5525859d1ac4b96"}]},{"file":"src/XF/Admin/Controller/TemplateController.php","file_sha256":"73b31a31b0498882cf599b3bb95d00ec42783d921d720dadd5342f7d6716f060","definition":false,"occurrences":[{"line":452,"sha256":"acf4133f395cfc430e8fd41a922367ee843ff80ad9653089d5525859d1ac4b96"}]},{"file":"src/XF/Repository/TemplateHistoryRepository.php","file_sha256":"5a3ee2f82eea6014df5a2db82ed37c49820c53abf375fde133884c93fef4a655","definition":true,"occurrences":[{"line":11,"sha256":"62a29cb3534609192eff09eb69949a75b9e6f150b6a77f31e491c28ca9233f22"}]}],"definition_hits":[{"file":"src/XF/Repository/TemplateHistoryRepository.php","file_sha256":"5a3ee2f82eea6014df5a2db82ed37c49820c53abf375fde133884c93fef4a655","occurrences":[{"line":11,"sha256":"62a29cb3534609192eff09eb69949a75b9e6f150b6a77f31e491c28ca9233f22"}]}],"outdated":[{"template_id":1401,"type":"public","title":"extra.less","style_id":2,"addon_id":"","version_id":0,"version_string":"","last_edit_date":1784195301,"body":{"sha256":"ca051810957679432c36024c18f3adbf3a087c7a034cd46d72edfffbd4564b6c","bytes":2396,"lines":131},"outdated_meta":{"template_id":1401,"parent_version_string":"2.0.0 Alpha","parent_last_edit_date":1721849139,"outdated_by_version":1,"outdated_by_date":0},"native_service":null}]},{"site":"dsmods.ru","xf_error_rows":1,"board_active":"1","outdated_count_repo":1,"action_merge_outdated":{"descriptor":{"exists":true,"class":"XF\\Admin\\Controller\\TemplateController","public":true,"required":1,"total":1,"params":[{"name":"params","optional":false,"type":"XF\\Mvc\\ParameterBag"}],"file":"src/XF/Admin/Controller/TemplateController.php","source_sha256":"1379d227c66f90a1e58acd7d0a3d00af36a7a8a3eaeee728cbb752231f6fcd61","token_skeleton":"public function actionMergeOutdated ( ParameterBag $params ) { $this -> setSectionContext ( ) ; $template = $this -> assertTemplateForComparison ( $params -> template_id ) ; $parentTemplate = $template -> ParentTemplate ; if ( ! $parentTemplate -> last_edit_date || $parentTemplate -> last_edit_date < $template -> last_edit_date ) { return $this -> error ( \\XF :: phrase ( ) ) ; } $historyRepo = $this -> repository ( TemplateHistoryRepository :: class ) ; $previousVersion = $historyRepo -> getHistoryForMerge ( $template , $parentTemplate ) ; if ( ! $previousVersion ) { return $this -> error ( \\XF :: phrase ( ) ) ; } if ( $this -> isPost ( ) ) { $merged = $this -> filter ( , ) ; $final = implode ( , $merged ) ; $template -> template = $final ; $template -> last_edit_date = time ( ) ; if ( ! $template -> isChanged ( ) ) { $template -> updateVersionId ( ) ; } $template -> save ( ) ; return $this -> redirect ( $this -> buildLink ( ) ) ; } else { $diff = new Diff3 ( ) ; $diffs = $diff -> findDifferences ( $template -> template , $previousVersion -> template , $parentTemplate -> template ) ; $viewParams = [ => $template , => $parentTemplate , => $previousVersion , => $diffs , ] ; return $this -> view ( , , $viewParams ) ; } }"},"service_bindings":[],"history_receivers":["historyRepo"]},"filesystem_hits":[{"file":"src/XF/Job/TemplateMerge.php","file_sha256":"7cac80d14ba46c6889f99d0603eed60b387bdf527458a15e912bddc0015e3a93","definition":false,"occurrences":[{"line":89,"sha256":"acf4133f395cfc430e8fd41a922367ee843ff80ad9653089d5525859d1ac4b96"}]},{"file":"src/XF/Admin/Controller/TemplateController.php","file_sha256":"73b31a31b0498882cf599b3bb95d00ec42783d921d720dadd5342f7d6716f060","definition":false,"occurrences":[{"line":452,"sha256":"acf4133f395cfc430e8fd41a922367ee843ff80ad9653089d5525859d1ac4b96"}]},{"file":"src/XF/Repository/TemplateHistoryRepository.php","file_sha256":"5a3ee2f82eea6014df5a2db82ed37c49820c53abf375fde133884c93fef4a655","definition":true,"occurrences":[{"line":11,"sha256":"62a29cb3534609192eff09eb69949a75b9e6f150b6a77f31e491c28ca9233f22"}]}],"definition_hits":[{"file":"src/XF/Repository/TemplateHistoryRepository.php","file_sha256":"5a3ee2f82eea6014df5a2db82ed37c49820c53abf375fde133884c93fef4a655","occurrences":[{"line":11,"sha256":"62a29cb3534609192eff09eb69949a75b9e6f150b6a77f31e491c28ca9233f22"}]}],"outdated":[{"template_id":1317,"type":"public","title":"extra.less","style_id":2,"addon_id":"","version_id":0,"version_string":"","last_edit_date":1784195301,"body":{"sha256":"3898034b75b561c774b41f6e1d8dce66a171fe30c7c210d543b41a8133e42fa2","bytes":2402,"lines":131},"outdated_meta":{"template_id":1317,"parent_version_string":"2.0.0 Alpha","parent_last_edit_date":1728727128,"outdated_by_version":1,"outdated_by_date":0},"native_service":null}]},{"site":"gamevipe.ru","xf_error_rows":1,"board_active":"1","outdated_count_repo":1,"action_merge_outdated":{"descriptor":{"exists":true,"class":"XF\\Admin\\Controller\\TemplateController","public":true,"required":1,"total":1,"params":[{"name":"params","optional":false,"type":"XF\\Mvc\\ParameterBag"}],"file":"src/XF/Admin/Controller/TemplateController.php","source_sha256":"1379d227c66f90a1e58acd7d0a3d00af36a7a8a3eaeee728cbb752231f6fcd61","token_skeleton":"public function actionMergeOutdated ( ParameterBag $params ) { $this -> setSectionContext ( ) ; $template = $this -> assertTemplateForComparison ( $params -> template_id ) ; $parentTemplate = $template -> ParentTemplate ; if ( ! $parentTemplate -> last_edit_date || $parentTemplate -> last_edit_date < $template -> last_edit_date ) { return $this -> error ( \\XF :: phrase ( ) ) ; } $historyRepo = $this -> repository ( TemplateHistoryRepository :: class ) ; $previousVersion = $historyRepo -> getHistoryForMerge ( $template , $parentTemplate ) ; if ( ! $previousVersion ) { return $this -> error ( \\XF :: phrase ( ) ) ; } if ( $this -> isPost ( ) ) { $merged = $this -> filter ( , ) ; $final = implode ( , $merged ) ; $template -> template = $final ; $template -> last_edit_date = time ( ) ; if ( ! $template -> isChanged ( ) ) { $template -> updateVersionId ( ) ; } $template -> save ( ) ; return $this -> redirect ( $this -> buildLink ( ) ) ; } else { $diff = new Diff3 ( ) ; $diffs = $diff -> findDifferences ( $template -> template , $previousVersion -> template , $parentTemplate -> template ) ; $viewParams = [ => $template , => $parentTemplate , => $previousVersion , => $diffs , ] ; return $this -> view ( , , $viewParams ) ; } }"},"service_bindings":[],"history_receivers":["historyRepo"]},"filesystem_hits":[{"file":"src/XF/Job/TemplateMerge.php","file_sha256":"7cac80d14ba46c6889f99d0603eed60b387bdf527458a15e912bddc0015e3a93","definition":false,"occurrences":[{"line":89,"sha256":"acf4133f395cfc430e8fd41a922367ee843ff80ad9653089d5525859d1ac4b96"}]},{"file":"src/XF/Admin/Controller/TemplateController.php","file_sha256":"73b31a31b0498882cf599b3bb95d00ec42783d921d720dadd5342f7d6716f060","definition":false,"occurrences":[{"line":452,"sha256":"acf4133f395cfc430e8fd41a922367ee843ff80ad9653089d5525859d1ac4b96"}]},{"file":"src/XF/Repository/TemplateHistoryRepository.php","file_sha256":"5a3ee2f82eea6014df5a2db82ed37c49820c53abf375fde133884c93fef4a655","definition":true,"occurrences":[{"line":11,"sha256":"62a29cb3534609192eff09eb69949a75b9e6f150b6a77f31e491c28ca9233f22"}]}],"definition_hits":[{"file":"src/XF/Repository/TemplateHistoryRepository.php","file_sha256":"5a3ee2f82eea6014df5a2db82ed37c49820c53abf375fde133884c93fef4a655","occurrences":[{"line":11,"sha256":"62a29cb3534609192eff09eb69949a75b9e6f150b6a77f31e491c28ca9233f22"}]}],"outdated":[{"template_id":1696,"type":"public","title":"extra.less","style_id":2,"addon_id":"","version_id":0,"version_string":"","last_edit_date":1784195301,"body":{"sha256":"fde07ae7d5f65a3cdee23b7f90834229c95495fb69db44727345b550441646ab","bytes":2410,"lines":131},"outdated_meta":{"template_id":1696,"parent_version_string":"2.0.0 Alpha","parent_last_edit_date":1720986507,"outdated_by_version":1,"outdated_by_date":0},"native_service":null}]},{"site":"hkmods.ru","xf_error_rows":1,"board_active":"1","outdated_count_repo":1,"action_merge_outdated":{"descriptor":{"exists":true,"class":"XF\\Admin\\Controller\\TemplateController","public":true,"required":1,"total":1,"params":[{"name":"params","optional":false,"type":"XF\\Mvc\\ParameterBag"}],"file":"src/XF/Admin/Controller/TemplateController.php","source_sha256":"1379d227c66f90a1e58acd7d0a3d00af36a7a8a3eaeee728cbb752231f6fcd61","token_skeleton":"public function actionMergeOutdated ( ParameterBag $params ) { $this -> setSectionContext ( ) ; $template = $this -> assertTemplateForComparison ( $params -> template_id ) ; $parentTemplate = $template -> ParentTemplate ; if ( ! $parentTemplate -> last_edit_date || $parentTemplate -> last_edit_date < $template -> last_edit_date ) { return $this -> error ( \\XF :: phrase ( ) ) ; } $historyRepo = $this -> repository ( TemplateHistoryRepository :: class ) ; $previousVersion = $historyRepo -> getHistoryForMerge ( $template , $parentTemplate ) ; if ( ! $previousVersion ) { return $this -> error ( \\XF :: phrase ( ) ) ; } if ( $this -> isPost ( ) ) { $merged = $this -> filter ( , ) ; $final = implode ( , $merged ) ; $template -> template = $final ; $template -> last_edit_date = time ( ) ; if ( ! $template -> isChanged ( ) ) { $template -> updateVersionId ( ) ; } $template -> save ( ) ; return $this -> redirect ( $this -> buildLink ( ) ) ; } else { $diff = new Diff3 ( ) ; $diffs = $diff -> findDifferences ( $template -> template , $previousVersion -> template , $parentTemplate -> template ) ; $viewParams = [ => $template , => $parentTemplate , => $previousVersion , => $diffs , ] ; return $this -> view ( , , $viewParams ) ; } }"},"service_bindings":[],"history_receivers":["historyRepo"]},"filesystem_hits":[{"file":"src/XF/Job/TemplateMerge.php","file_sha256":"7cac80d14ba46c6889f99d0603eed60b387bdf527458a15e912bddc0015e3a93","definition":false,"occurrences":[{"line":89,"sha256":"acf4133f395cfc430e8fd41a922367ee843ff80ad9653089d5525859d1ac4b96"}]},{"file":"src/XF/Admin/Controller/TemplateController.php","file_sha256":"73b31a31b0498882cf599b3bb95d00ec42783d921d720dadd5342f7d6716f060","definition":false,"occurrences":[{"line":452,"sha256":"acf4133f395cfc430e8fd41a922367ee843ff80ad9653089d5525859d1ac4b96"}]},{"file":"src/XF/Repository/TemplateHistoryRepository.php","file_sha256":"5a3ee2f82eea6014df5a2db82ed37c49820c53abf375fde133884c93fef4a655","definition":true,"occurrences":[{"line":11,"sha256":"62a29cb3534609192eff09eb69949a75b9e6f150b6a77f31e491c28ca9233f22"}]}],"definition_hits":[{"file":"src/XF/Repository/TemplateHistoryRepository.php","file_sha256":"5a3ee2f82eea6014df5a2db82ed37c49820c53abf375fde133884c93fef4a655","occurrences":[{"line":11,"sha256":"62a29cb3534609192eff09eb69949a75b9e6f150b6a77f31e491c28ca9233f22"}]}],"outdated":[{"template_id":2021,"type":"public","title":"extra.less","style_id":2,"addon_id":"","version_id":0,"version_string":"","last_edit_date":1784195301,"body":{"sha256":"2339326596eb8f77111df70fa4336809e67615942b4b7b1afb2777d8ee447bd3","bytes":2422,"lines":131},"outdated_meta":{"template_id":2021,"parent_version_string":"2.0.0 Alpha","parent_last_edit_date":1691944582,"outdated_by_version":1,"outdated_by_date":0},"native_service":null}]},{"site":"kingofwolk.ru","xf_error_rows":1,"board_active":"1","outdated_count_repo":0,"action_merge_outdated":{"descriptor":{"exists":true,"class":"XF\\Admin\\Controller\\TemplateController","public":true,"required":1,"total":1,"params":[{"name":"params","optional":false,"type":"XF\\Mvc\\ParameterBag"}],"file":"src/XF/Admin/Controller/TemplateController.php","source_sha256":"1379d227c66f90a1e58acd7d0a3d00af36a7a8a3eaeee728cbb752231f6fcd61","token_skeleton":"public function actionMergeOutdated ( ParameterBag $params ) { $this -> setSectionContext ( ) ; $template = $this -> assertTemplateForComparison ( $params -> template_id ) ; $parentTemplate = $template -> ParentTemplate ; if ( ! $parentTemplate -> last_edit_date || $parentTemplate -> last_edit_date < $template -> last_edit_date ) { return $this -> error ( \\XF :: phrase ( ) ) ; } $historyRepo = $this -> repository ( TemplateHistoryRepository :: class ) ; $previousVersion = $historyRepo -> getHistoryForMerge ( $template , $parentTemplate ) ; if ( ! $previousVersion ) { return $this -> error ( \\XF :: phrase ( ) ) ; } if ( $this -> isPost ( ) ) { $merged = $this -> filter ( , ) ; $final = implode ( , $merged ) ; $template -> template = $final ; $template -> last_edit_date = time ( ) ; if ( ! $template -> isChanged ( ) ) { $template -> updateVersionId ( ) ; } $template -> save ( ) ; return $this -> redirect ( $this -> buildLink ( ) ) ; } else { $diff = new Diff3 ( ) ; $diffs = $diff -> findDifferences ( $template -> template , $previousVersion -> template , $parentTemplate -> template ) ; $viewParams = [ => $template , => $parentTemplate , => $previousVersion , => $diffs , ] ; return $this -> view ( , , $viewParams ) ; } }"},"service_bindings":[],"history_receivers":["historyRepo"]},"filesystem_hits":[{"file":"src/XF/Job/TemplateMerge.php","file_sha256":"7cac80d14ba46c6889f99d0603eed60b387bdf527458a15e912bddc0015e3a93","definition":false,"occurrences":[{"line":89,"sha256":"acf4133f395cfc430e8fd41a922367ee843ff80ad9653089d5525859d1ac4b96"}]},{"file":"src/XF/Admin/Controller/TemplateController.php","file_sha256":"73b31a31b0498882cf599b3bb95d00ec42783d921d720dadd5342f7d6716f060","definition":false,"occurrences":[{"line":452,"sha256":"acf4133f395cfc430e8fd41a922367ee843ff80ad9653089d5525859d1ac4b96"}]},{"file":"src/XF/Repository/TemplateHistoryRepository.php","file_sha256":"5a3ee2f82eea6014df5a2db82ed37c49820c53abf375fde133884c93fef4a655","definition":true,"occurrences":[{"line":11,"sha256":"62a29cb3534609192eff09eb69949a75b9e6f150b6a77f31e491c28ca9233f22"}]}],"definition_hits":[{"file":"src/XF/Repository/TemplateHistoryRepository.php","file_sha256":"5a3ee2f82eea6014df5a2db82ed37c49820c53abf375fde133884c93fef4a655","occurrences":[{"line":11,"sha256":"62a29cb3534609192eff09eb69949a75b9e6f150b6a77f31e491c28ca9233f22"}]}],"outdated":[]},{"site":"zakrutim.ru","xf_error_rows":1,"board_active":"1","outdated_count_repo":1,"action_merge_outdated":{"descriptor":{"exists":true,"class":"XF\\Admin\\Controller\\TemplateController","public":true,"required":1,"total":1,"params":[{"name":"params","optional":false,"type":"XF\\Mvc\\ParameterBag"}],"file":"src/XF/Admin/Controller/TemplateController.php","source_sha256":"1379d227c66f90a1e58acd7d0a3d00af36a7a8a3eaeee728cbb752231f6fcd61","token_skeleton":"public function actionMergeOutdated ( ParameterBag $params ) { $this -> setSectionContext ( ) ; $template = $this -> assertTemplateForComparison ( $params -> template_id ) ; $parentTemplate = $template -> ParentTemplate ; if ( ! $parentTemplate -> last_edit_date || $parentTemplate -> last_edit_date < $template -> last_edit_date ) { return $this -> error ( \\XF :: phrase ( ) ) ; } $historyRepo = $this -> repository ( TemplateHistoryRepository :: class ) ; $previousVersion = $historyRepo -> getHistoryForMerge ( $template , $parentTemplate ) ; if ( ! $previousVersion ) { return $this -> error ( \\XF :: phrase ( ) ) ; } if ( $this -> isPost ( ) ) { $merged = $this -> filter ( , ) ; $final = implode ( , $merged ) ; $template -> template = $final ; $template -> last_edit_date = time ( ) ; if ( ! $template -> isChanged ( ) ) { $template -> updateVersionId ( ) ; } $template -> save ( ) ; return $this -> redirect ( $this -> buildLink ( ) ) ; } else { $diff = new Diff3 ( ) ; $diffs = $diff -> findDifferences ( $template -> template , $previousVersion -> template , $parentTemplate -> template ) ; $viewParams = [ => $template , => $parentTemplate , => $previousVersion , => $diffs , ] ; return $this -> view ( , , $viewParams ) ; } }"},"service_bindings":[],"history_receivers":["historyRepo"]},"filesystem_hits":[{"file":"src/XF/Job/TemplateMerge.php","file_sha256":"7cac80d14ba46c6889f99d0603eed60b387bdf527458a15e912bddc0015e3a93","definition":false,"occurrences":[{"line":89,"sha256":"acf4133f395cfc430e8fd41a922367ee843ff80ad9653089d5525859d1ac4b96"}]},{"file":"src/XF/Admin/Controller/TemplateController.php","file_sha256":"73b31a31b0498882cf599b3bb95d00ec42783d921d720dadd5342f7d6716f060","definition":false,"occurrences":[{"line":452,"sha256":"acf4133f395cfc430e8fd41a922367ee843ff80ad9653089d5525859d1ac4b96"}]},{"file":"src/XF/Repository/TemplateHistoryRepository.php","file_sha256":"5a3ee2f82eea6014df5a2db82ed37c49820c53abf375fde133884c93fef4a655","definition":true,"occurrences":[{"line":11,"sha256":"62a29cb3534609192eff09eb69949a75b9e6f150b6a77f31e491c28ca9233f22"}]}],"definition_hits":[{"file":"src/XF/Repository/TemplateHistoryRepository.php","file_sha256":"5a3ee2f82eea6014df5a2db82ed37c49820c53abf375fde133884c93fef4a655","occurrences":[{"line":11,"sha256":"62a29cb3534609192eff09eb69949a75b9e6f150b6a77f31e491c28ca9233f22"}]}],"outdated":[{"template_id":1921,"type":"public","title":"extra.less","style_id":2,"addon_id":"","version_id":0,"version_string":"","last_edit_date":1784195301,"body":{"sha256":"9662d1b57f5f6fcd2992fd9d150aeb887c242f792eb750cf6cb458d65b99a12d","bytes":2435,"lines":131},"outdated_meta":{"template_id":1921,"parent_version_string":"2.0.0 Alpha","parent_last_edit_date":1692264832,"outdated_by_version":1,"outdated_by_date":0},"native_service":null}]},{"site":"newfi.ru","xf_error_rows":1,"board_active":"1","outdated_count_repo":0,"action_merge_outdated":{"descriptor":{"exists":true,"class":"XF\\Admin\\Controller\\TemplateController","public":true,"required":1,"total":1,"params":[{"name":"params","optional":false,"type":"XF\\Mvc\\ParameterBag"}],"file":"src/XF/Admin/Controller/TemplateController.php","source_sha256":"1379d227c66f90a1e58acd7d0a3d00af36a7a8a3eaeee728cbb752231f6fcd61","token_skeleton":"public function actionMergeOutdated ( ParameterBag $params ) { $this -> setSectionContext ( ) ; $template = $this -> assertTemplateForComparison ( $params -> template_id ) ; $parentTemplate = $template -> ParentTemplate ; if ( ! $parentTemplate -> last_edit_date || $parentTemplate -> last_edit_date < $template -> last_edit_date ) { return $this -> error ( \\XF :: phrase ( ) ) ; } $historyRepo = $this -> repository ( TemplateHistoryRepository :: class ) ; $previousVersion = $historyRepo -> getHistoryForMerge ( $template , $parentTemplate ) ; if ( ! $previousVersion ) { return $this -> error ( \\XF :: phrase ( ) ) ; } if ( $this -> isPost ( ) ) { $merged = $this -> filter ( , ) ; $final = implode ( , $merged ) ; $template -> template = $final ; $template -> last_edit_date = time ( ) ; if ( ! $template -> isChanged ( ) ) { $template -> updateVersionId ( ) ; } $template -> save ( ) ; return $this -> redirect ( $this -> buildLink ( ) ) ; } else { $diff = new Diff3 ( ) ; $diffs = $diff -> findDifferences ( $template -> template , $previousVersion -> template , $parentTemplate -> template ) ; $viewParams = [ => $template , => $parentTemplate , => $previousVersion , => $diffs , ] ; return $this -> view ( , , $viewParams ) ; } }"},"service_bindings":[],"history_receivers":["historyRepo"]},"filesystem_hits":[{"file":"src/XF/Job/TemplateMerge.php","file_sha256":"7cac80d14ba46c6889f99d0603eed60b387bdf527458a15e912bddc0015e3a93","definition":false,"occurrences":[{"line":89,"sha256":"acf4133f395cfc430e8fd41a922367ee843ff80ad9653089d5525859d1ac4b96"}]},{"file":"src/XF/Admin/Controller/TemplateController.php","file_sha256":"73b31a31b0498882cf599b3bb95d00ec42783d921d720dadd5342f7d6716f060","definition":false,"occurrences":[{"line":452,"sha256":"acf4133f395cfc430e8fd41a922367ee843ff80ad9653089d5525859d1ac4b96"}]},{"file":"src/XF/Repository/TemplateHistoryRepository.php","file_sha256":"5a3ee2f82eea6014df5a2db82ed37c49820c53abf375fde133884c93fef4a655","definition":true,"occurrences":[{"line":11,"sha256":"62a29cb3534609192eff09eb69949a75b9e6f150b6a77f31e491c28ca9233f22"}]}],"definition_hits":[{"file":"src/XF/Repository/TemplateHistoryRepository.php","file_sha256":"5a3ee2f82eea6014df5a2db82ed37c49820c53abf375fde133884c93fef4a655","occurrences":[{"line":11,"sha256":"62a29cb3534609192eff09eb69949a75b9e6f150b6a77f31e491c28ca9233f22"}]}],"outdated":[]}],"scope":"READ_ONLY_NO_XENFORO_MUTATION"} +TPL495T3R4_DECISION=HOLD_XF_ERROR_LOG_NOT_ZERO +TPL495T3R4_HOLD=7 +HOMELAB_RESULT_CONTRACT={"version":1,"command_id":"SUPPORT-260918-XENFORO-TEMPLATE-MERGE-SERVICE-RCA-495T3R4","status":"FAIL","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 781ee2fa..23f046c3 100644 --- a/runtime/latest.json +++ b/runtime/latest.json @@ -1 +1,38 @@ -{"schema_version":1,"channel":"homelab-runtime","command_id":"CONTEXT-AUTO-20260917T221701Z","status":"OK","rc":0,"host":"pve01","mode":"read-only","component":"cluster-context","started_at_utc":"2026-09-17T22:17:01Z","finished_at_utc":"2026-09-17T22:17:02Z","reference_register_checked":true,"reference_sha256":"5a3d8e5154c41cb582a4e0aca68090be1f0138918bf82131a948df326f9d8d66","error_register_checked":true,"error_register_sha256":"3b09a553ec0f527ed3afeed4753f52a74ee3036045bbfb3c685e9f8af4ba7ba0","changes_made":false,"sanitized":true,"secrets_included":false,"private_addresses_included":false,"output":"AUTOMATIC_CLUSTER_CONTEXT_REFRESH=OK"} +{ + "schema_version": 1, + "channel": "homelab-runtime", + "command_id": "SUPPORT-260918-XENFORO-TEMPLATE-MERGE-SERVICE-RCA-495T3R4", + "status": "FAIL", + "rc": 3, + "host": "pve01", + "mode": "read-only", + "component": "xenforo-template-merge-service-rca", + "started_at_utc": "2026-09-17T22:19:22Z", + "finished_at_utc": "2026-09-17T22:19:25Z", + "reference_register_checked": true, + "reference_sha256": "5a3d8e5154c41cb582a4e0aca68090be1f0138918bf82131a948df326f9d8d66", + "error_register_checked": true, + "error_register_sha256": "3b09a553ec0f527ed3afeed4753f52a74ee3036045bbfb3c685e9f8af4ba7ba0", + "command_sha256": "f66955361fd82d2307ead100b2a5ecc8ef99f53c90131cfb6997170c5140693f", + "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": 3, + "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": "8e37e2561ea1769921a2d635d9d29e56238ab6889f6cc1953a6b5d87931e828d", + "sanitized_output_sha256": "8e37e2561ea1769921a2d635d9d29e56238ab6889f6cc1953a6b5d87931e828d", + "output_truncated_in_json": false, + "full_sanitized_output_url": "https://git.gram1.ru/.well-known/homelab-runtime/latest.txt", + "output": "TPL495T3R4_WRAPPER_BEGIN=true\nERROR_REGISTER_CHECK=OK\nREFERENCE_CHECK=OK\nAUTHORITY_CHECK_SCOPE=READABILITY_ONLY_INCIDENTS_NOT_CLOSED\nTPL495T3R4_BEGIN=true\nMODE=READ_ONLY_MERGE_SERVICE_RCA\nVM211_EXCLUDED=true\nTPL495T3R4_SAFE_REPORT={\"affected\":[\"codevipe.ru\",\"dsmods.ru\",\"gamevipe.ru\",\"hkmods.ru\",\"zakrutim.ru\"],\"outdated_total\":5,\"xf_error_rows_total\":7,\"sites\":[{\"site\":\"codevipe.ru\",\"xf_error_rows\":1,\"board_active\":\"1\",\"outdated_count_repo\":1,\"action_merge_outdated\":{\"descriptor\":{\"exists\":true,\"class\":\"XF\\\\Admin\\\\Controller\\\\TemplateController\",\"public\":true,\"required\":1,\"total\":1,\"params\":[{\"name\":\"params\",\"optional\":false,\"type\":\"XF\\\\Mvc\\\\ParameterBag\"}],\"file\":\"src/XF/Admin/Controller/TemplateController.php\",\"source_sha256\":\"1379d227c66f90a1e58acd7d0a3d00af36a7a8a3eaeee728cbb752231f6fcd61\",\"token_skeleton\":\"public function actionMergeOutdated ( ParameterBag $params ) { $this -> setSectionContext ( ) ; $template = $this -> assertTemplateForComparison ( $params -> template_id ) ; $parentTemplate = $template -> ParentTemplate ; if ( ! $parentTemplate -> last_edit_date || $parentTemplate -> last_edit_date < $template -> last_edit_date ) { return $this -> error ( \\\\XF :: phrase ( ) ) ; } $historyRepo = $this -> repository ( TemplateHistoryRepository :: class ) ; $previousVersion = $historyRepo -> getHistoryForMerge ( $template , $parentTemplate ) ; if ( ! $previousVersion ) { return $this -> error ( \\\\XF :: phrase ( ) ) ; } if ( $this -> isPost ( ) ) { $merged = $this -> filter ( , ) ; $final = implode ( , $merged ) ; $template -> template = $final ; $template -> last_edit_date = time ( ) ; if ( ! $template -> isChanged ( ) ) { $template -> updateVersionId ( ) ; } $template -> save ( ) ; return $this -> redirect ( $this -> buildLink ( ) ) ; } else { $diff = new Diff3 ( ) ; $diffs = $diff -> findDifferences ( $template -> template , $previousVersion -> template , $parentTemplate -> template ) ; $viewParams = [ => $template , => $parentTemplate , => $previousVersion , => $diffs , ] ; return $this -> view ( , , $viewParams ) ; } }\"},\"service_bindings\":[],\"history_receivers\":[\"historyRepo\"]},\"filesystem_hits\":[{\"file\":\"src/XF/Job/TemplateMerge.php\",\"file_sha256\":\"7cac80d14ba46c6889f99d0603eed60b387bdf527458a15e912bddc0015e3a93\",\"definition\":false,\"occurrences\":[{\"line\":89,\"sha256\":\"acf4133f395cfc430e8fd41a922367ee843ff80ad9653089d5525859d1ac4b96\"}]},{\"file\":\"src/XF/Admin/Controller/TemplateController.php\",\"file_sha256\":\"73b31a31b0498882cf599b3bb95d00ec42783d921d720dadd5342f7d6716f060\",\"definition\":false,\"occurrences\":[{\"line\":452,\"sha256\":\"acf4133f395cfc430e8fd41a922367ee843ff80ad9653089d5525859d1ac4b96\"}]},{\"file\":\"src/XF/Repository/TemplateHistoryRepository.php\",\"file_sha256\":\"5a3ee2f82eea6014df5a2db82ed37c49820c53abf375fde133884c93fef4a655\",\"definition\":true,\"occurrences\":[{\"line\":11,\"sha256\":\"62a29cb3534609192eff09eb69949a75b9e6f150b6a77f31e491c28ca9233f22\"}]}],\"definition_hits\":[{\"file\":\"src/XF/Repository/TemplateHistoryRepository.php\",\"file_sha256\":\"5a3ee2f82eea6014df5a2db82ed37c49820c53abf375fde133884c93fef4a655\",\"occurrences\":[{\"line\":11,\"sha256\":\"62a29cb3534609192eff09eb69949a75b9e6f150b6a77f31e491c28ca9233f22\"}]}],\"outdated\":[{\"template_id\":1401,\"type\":\"public\",\"title\":\"extra.less\",\"style_id\":2,\"addon_id\":\"\",\"version_id\":0,\"version_string\":\"\",\"last_edit_date\":1784195301,\"body\":{\"sha256\":\"ca051810957679432c36024c18f3adbf3a087c7a034cd46d72edfffbd4564b6c\",\"bytes\":2396,\"lines\":131},\"outdated_meta\":{\"template_id\":1401,\"parent_version_string\":\"2.0.0 Alpha\",\"parent_last_edit_date\":1721849139,\"outdated_by_version\":1,\"outdated_by_date\":0},\"native_service\":null}]},{\"site\":\"dsmods.ru\",\"xf_error_rows\":1,\"board_active\":\"1\",\"outdated_count_repo\":1,\"action_merge_outdated\":{\"descriptor\":{\"exists\":true,\"class\":\"XF\\\\Admin\\\\Controller\\\\TemplateController\",\"public\":true,\"required\":1,\"total\":1,\"params\":[{\"name\":\"params\",\"optional\":false,\"type\":\"XF\\\\Mvc\\\\ParameterBag\"}],\"file\":\"src/XF/Admin/Controller/TemplateController.php\",\"source_sha256\":\"1379d227c66f90a1e58acd7d0a3d00af36a7a8a3eaeee728cbb752231f6fcd61\",\"token_skeleton\":\"public function actionMergeOutdated ( ParameterBag $params ) { $this -> setSectionContext ( ) ; $template = $this -> assertTemplateForComparison ( $params -> template_id ) ; $parentTemplate = $template -> ParentTemplate ; if ( ! $parentTemplate -> last_edit_date || $parentTemplate -> last_edit_date < $template -> last_edit_date ) { return $this -> error ( \\\\XF :: phrase ( ) ) ; } $historyRepo = $this -> repository ( TemplateHistoryRepository :: class ) ; $previousVersion = $historyRepo -> getHistoryForMerge ( $template , $parentTemplate ) ; if ( ! $previousVersion ) { return $this -> error ( \\\\XF :: phrase ( ) ) ; } if ( $this -> isPost ( ) ) { $merged = $this -> filter ( , ) ; $final = implode ( , $merged ) ; $template -> template = $final ; $template -> last_edit_date = time ( ) ; if ( ! $template -> isChanged ( ) ) { $template -> updateVersionId ( ) ; } $template -> save ( ) ; return $this -> redirect ( $this -> buildLink ( ) ) ; } else { $diff = new Diff3 ( ) ; $diffs = $diff -> findDifferences ( $template -> template , $previousVersion -> template , $parentTemplate -> template ) ; $viewParams = [ => $template , => $parentTemplate , => $previousVersion , => $diffs , ] ; return $this -> view ( , , $viewParams ) ; } }\"},\"service_bindings\":[],\"history_receivers\":[\"historyRepo\"]},\"filesystem_hits\":[{\"file\":\"src/XF/Job/TemplateMerge.php\",\"file_sha256\":\"7cac80d14ba46c6889f99d0603eed60b387bdf527458a15e912bddc0015e3a93\",\"definition\":false,\"occurrences\":[{\"line\":89,\"sha256\":\"acf4133f395cfc430e8fd41a922367ee843ff80ad9653089d5525859d1ac4b96\"}]},{\"file\":\"src/XF/Admin/Controller/TemplateController.php\",\"file_sha256\":\"73b31a31b0498882cf599b3bb95d00ec42783d921d720dadd5342f7d6716f060\",\"definition\":false,\"occurrences\":[{\"line\":452,\"sha256\":\"acf4133f395cfc430e8fd41a922367ee843ff80ad9653089d5525859d1ac4b96\"}]},{\"file\":\"src/XF/Repository/TemplateHistoryRepository.php\",\"file_sha256\":\"5a3ee2f82eea6014df5a2db82ed37c49820c53abf375fde133884c93fef4a655\",\"definition\":true,\"occurrences\":[{\"line\":11,\"sha256\":\"62a29cb3534609192eff09eb69949a75b9e6f150b6a77f31e491c28ca9233f22\"}]}],\"definition_hits\":[{\"file\":\"src/XF/Repository/TemplateHistoryRepository.php\",\"file_sha256\":\"5a3ee2f82eea6014df5a2db82ed37c49820c53abf375fde133884c93fef4a655\",\"occurrences\":[{\"line\":11,\"sha256\":\"62a29cb3534609192eff09eb69949a75b9e6f150b6a77f31e491c28ca9233f22\"}]}],\"outdated\":[{\"template_id\":1317,\"type\":\"public\",\"title\":\"extra.less\",\"style_id\":2,\"addon_id\":\"\",\"version_id\":0,\"version_string\":\"\",\"last_edit_date\":1784195301,\"body\":{\"sha256\":\"3898034b75b561c774b41f6e1d8dce66a171fe30c7c210d543b41a8133e42fa2\",\"bytes\":2402,\"lines\":131},\"outdated_meta\":{\"template_id\":1317,\"parent_version_string\":\"2.0.0 Alpha\",\"parent_last_edit_date\":1728727128,\"outdated_by_version\":1,\"outdated_by_date\":0},\"native_service\":null}]},{\"site\":\"gamevipe.ru\",\"xf_error_rows\":1,\"board_active\":\"1\",\"outdated_count_repo\":1,\"action_merge_outdated\":{\"descriptor\":{\"exists\":true,\"class\":\"XF\\\\Admin\\\\Controller\\\\TemplateController\",\"public\":true,\"required\":1,\"total\":1,\"params\":[{\"name\":\"params\",\"optional\":false,\"type\":\"XF\\\\Mvc\\\\ParameterBag\"}],\"file\":\"src/XF/Admin/Controller/TemplateController.php\",\"source_sha256\":\"1379d227c66f90a1e58acd7d0a3d00af36a7a8a3eaeee728cbb752231f6fcd61\",\"token_skeleton\":\"public function actionMergeOutdated ( ParameterBag $params ) { $this -> setSectionContext ( ) ; $template = $this -> assertTemplateForComparison ( $params -> template_id ) ; $parentTemplate = $template -> ParentTemplate ; if ( ! $parentTemplate -> last_edit_date || $parentTemplate -> last_edit_date < $template -> last_edit_date ) { return $this -> error ( \\\\XF :: phrase ( ) ) ; } $historyRepo = $this -> repository ( TemplateHistoryRepository :: class ) ; $previousVersion = $historyRepo -> getHistoryForMerge ( $template , $parentTemplate ) ; if ( ! $previousVersion ) { return $this -> error ( \\\\XF :: phrase ( ) ) ; } if ( $this -> isPost ( ) ) { $merged = $this -> filter ( , ) ; $final = implode ( , $merged ) ; $template -> template = $final ; $template -> last_edit_date = time ( ) ; if ( ! $template -> isChanged ( ) ) { $template -> updateVersionId ( ) ; } $template -> save ( ) ; return $this -> redirect ( $this -> buildLink ( ) ) ; } else { $diff = new Diff3 ( ) ; $diffs = $diff -> findDifferences ( $template -> template , $previousVersion -> template , $parentTemplate -> template ) ; $viewParams = [ => $template , => $parentTemplate , => $previousVersion , => $diffs , ] ; return $this -> view ( , , $viewParams ) ; } }\"},\"service_bindings\":[],\"history_receivers\":[\"historyRepo\"]},\"filesystem_hits\":[{\"file\":\"src/XF/Job/TemplateMerge.php\",\"file_sha256\":\"7cac80d14ba46c6889f99d0603eed60b387bdf527458a15e912bddc0015e3a93\",\"definition\":false,\"occurrences\":[{\"line\":89,\"sha256\":\"acf4133f395cfc430e8fd41a922367ee843ff80ad9653089d5525859d1ac4b96\"}]},{\"file\":\"src/XF/Admin/Controller/TemplateController.php\",\"file_sha256\":\"73b31a31b0498882cf599b3bb95d00ec42783d921d720dadd5342f7d6716f060\",\"definition\":false,\"occurrences\":[{\"line\":452,\"sha256\":\"acf4133f395cfc430e8fd41a922367ee843ff80ad9653089d5525859d1ac4b96\"}]},{\"file\":\"src/XF/Repository/TemplateHistoryRepository.php\",\"file_sha256\":\"5a3ee2f82eea6014df5a2db82ed37c49820c53abf375fde133884c93fef4a655\",\"definition\":true,\"occurrences\":[{\"line\":11,\"sha256\":\"62a29cb3534609192eff09eb69949a75b9e6f150b6a77f31e491c28ca9233f22\"}]}],\"definition_hits\":[{\"file\":\"src/XF/Repository/TemplateHistoryRepository.php\",\"file_sha256\":\"5a3ee2f82eea6014df5a2db82ed37c49820c53abf375fde133884c93fef4a655\",\"occurrences\":[{\"line\":11,\"sha256\":\"62a29cb3534609192eff09eb69949a75b9e6f150b6a77f31e491c28ca9233f22\"}]}],\"outdated\":[{\"template_id\":1696,\"type\":\"public\",\"title\":\"extra.less\",\"style_id\":2,\"addon_id\":\"\",\"version_id\":0,\"version_string\":\"\",\"last_edit_date\":1784195301,\"body\":{\"sha256\":\"fde07ae7d5f65a3cdee23b7f90834229c95495fb69db44727345b550441646ab\",\"bytes\":2410,\"lines\":131},\"outdated_meta\":{\"template_id\":1696,\"parent_version_string\":\"2.0.0 Alpha\",\"parent_last_edit_date\":1720986507,\"outdated_by_version\":1,\"outdated_by_date\":0},\"native_service\":null}]},{\"site\":\"hkmods.ru\",\"xf_error_rows\":1,\"board_active\":\"1\",\"outdated_count_repo\":1,\"action_merge_outdated\":{\"descriptor\":{\"exists\":true,\"class\":\"XF\\\\Admin\\\\Controller\\\\TemplateController\",\"public\":true,\"required\":1,\"total\":1,\"params\":[{\"name\":\"params\",\"optional\":false,\"type\":\"XF\\\\Mvc\\\\ParameterBag\"}],\"file\":\"src/XF/Admin/Controller/TemplateController.php\",\"source_sha256\":\"1379d227c66f90a1e58acd7d0a3d00af36a7a8a3eaeee728cbb752231f6fcd61\",\"token_skeleton\":\"public function actionMergeOutdated ( ParameterBag $params ) { $this -> setSectionContext ( ) ; $template = $this -> assertTemplateForComparison ( $params -> template_id ) ; $parentTemplate = $template -> ParentTemplate ; if ( ! $parentTemplate -> last_edit_date || $parentTemplate -> last_edit_date < $template -> last_edit_date ) { return $this -> error ( \\\\XF :: phrase ( ) ) ; } $historyRepo = $this -> repository ( TemplateHistoryRepository :: class ) ; $previousVersion = $historyRepo -> getHistoryForMerge ( $template , $parentTemplate ) ; if ( ! $previousVersion ) { return $this -> error ( \\\\XF :: phrase ( ) ) ; } if ( $this -> isPost ( ) ) { $merged = $this -> filter ( , ) ; $final = implode ( , $merged ) ; $template -> template = $final ; $template -> last_edit_date = time ( ) ; if ( ! $template -> isChanged ( ) ) { $template -> updateVersionId ( ) ; } $template -> save ( ) ; return $this -> redirect ( $this -> buildLink ( ) ) ; } else { $diff = new Diff3 ( ) ; $diffs = $diff -> findDifferences ( $template -> template , $previousVersion -> template , $parentTemplate -> template ) ; $viewParams = [ => $template , => $parentTemplate , => $previousVersion , => $diffs , ] ; return $this -> view ( , , $viewParams ) ; } }\"},\"service_bindings\":[],\"history_receivers\":[\"historyRepo\"]},\"filesystem_hits\":[{\"file\":\"src/XF/Job/TemplateMerge.php\",\"file_sha256\":\"7cac80d14ba46c6889f99d0603eed60b387bdf527458a15e912bddc0015e3a93\",\"definition\":false,\"occurrences\":[{\"line\":89,\"sha256\":\"acf4133f395cfc430e8fd41a922367ee843ff80ad9653089d5525859d1ac4b96\"}]},{\"file\":\"src/XF/Admin/Controller/TemplateController.php\",\"file_sha256\":\"73b31a31b0498882cf599b3bb95d00ec42783d921d720dadd5342f7d6716f060\",\"definition\":false,\"occurrences\":[{\"line\":452,\"sha256\":\"acf4133f395cfc430e8fd41a922367ee843ff80ad9653089d5525859d1ac4b96\"}]},{\"file\":\"src/XF/Repository/TemplateHistoryRepository.php\",\"file_sha256\":\"5a3ee2f82eea6014df5a2db82ed37c49820c53abf375fde133884c93fef4a655\",\"definition\":true,\"occurrences\":[{\"line\":11,\"sha256\":\"62a29cb3534609192eff09eb69949a75b9e6f150b6a77f31e491c28ca9233f22\"}]}],\"definition_hits\":[{\"file\":\"src/XF/Repository/TemplateHistoryRepository.php\",\"file_sha256\":\"5a3ee2f82eea6014df5a2db82ed37c49820c53abf375fde133884c93fef4a655\",\"occurrences\":[{\"line\":11,\"sha256\":\"62a29cb3534609192eff09eb69949a75b9e6f150b6a77f31e491c28ca9233f22\"}]}],\"outdated\":[{\"template_id\":2021,\"type\":\"public\",\"title\":\"extra.less\",\"style_id\":2,\"addon_id\":\"\",\"version_id\":0,\"version_string\":\"\",\"last_edit_date\":1784195301,\"body\":{\"sha256\":\"2339326596eb8f77111df70fa4336809e67615942b4b7b1afb2777d8ee447bd3\",\"bytes\":2422,\"lines\":131},\"outdated_meta\":{\"template_id\":2021,\"parent_version_string\":\"2.0.0 Alpha\",\"parent_last_edit_date\":1691944582,\"outdated_by_version\":1,\"outdated_by_date\":0},\"native_service\":null}]},{\"site\":\"kingofwolk.ru\",\"xf_error_rows\":1,\"board_active\":\"1\",\"outdated_count_repo\":0,\"action_merge_outdated\":{\"descriptor\":{\"exists\":true,\"class\":\"XF\\\\Admin\\\\Controller\\\\TemplateController\",\"public\":true,\"required\":1,\"total\":1,\"params\":[{\"name\":\"params\",\"optional\":false,\"type\":\"XF\\\\Mvc\\\\ParameterBag\"}],\"file\":\"src/XF/Admin/Controller/TemplateController.php\",\"source_sha256\":\"1379d227c66f90a1e58acd7d0a3d00af36a7a8a3eaeee728cbb752231f6fcd61\",\"token_skeleton\":\"public function actionMergeOutdated ( ParameterBag $params ) { $this -> setSectionContext ( ) ; $template = $this -> assertTemplateForComparison ( $params -> template_id ) ; $parentTemplate = $template -> ParentTemplate ; if ( ! $parentTemplate -> last_edit_date || $parentTemplate -> last_edit_date < $template -> last_edit_date ) { return $this -> error ( \\\\XF :: phrase ( ) ) ; } $historyRepo = $this -> repository ( TemplateHistoryRepository :: class ) ; $previousVersion = $historyRepo -> getHistoryForMerge ( $template , $parentTemplate ) ; if ( ! $previousVersion ) { return $this -> error ( \\\\XF :: phrase ( ) ) ; } if ( $this -> isPost ( ) ) { $merged = $this -> filter ( , ) ; $final = implode ( , $merged ) ; $template -> template = $final ; $template -> last_edit_date = time ( ) ; if ( ! $template -> isChanged ( ) ) { $template -> updateVersionId ( ) ; } $template -> save ( ) ; return $this -> redirect ( $this -> buildLink ( ) ) ; } else { $diff = new Diff3 ( ) ; $diffs = $diff -> findDifferences ( $template -> template , $previousVersion -> template , $parentTemplate -> template ) ; $viewParams = [ => $template , => $parentTemplate , => $previousVersion , => $diffs , ] ; return $this -> view ( , , $viewParams ) ; } }\"},\"service_bindings\":[],\"history_receivers\":[\"historyRepo\"]},\"filesystem_hits\":[{\"file\":\"src/XF/Job/TemplateMerge.php\",\"file_sha256\":\"7cac80d14ba46c6889f99d0603eed60b387bdf527458a15e912bddc0015e3a93\",\"definition\":false,\"occurrences\":[{\"line\":89,\"sha256\":\"acf4133f395cfc430e8fd41a922367ee843ff80ad9653089d5525859d1ac4b96\"}]},{\"file\":\"src/XF/Admin/Controller/TemplateController.php\",\"file_sha256\":\"73b31a31b0498882cf599b3bb95d00ec42783d921d720dadd5342f7d6716f060\",\"definition\":false,\"occurrences\":[{\"line\":452,\"sha256\":\"acf4133f395cfc430e8fd41a922367ee843ff80ad9653089d5525859d1ac4b96\"}]},{\"file\":\"src/XF/Repository/TemplateHistoryRepository.php\",\"file_sha256\":\"5a3ee2f82eea6014df5a2db82ed37c49820c53abf375fde133884c93fef4a655\",\"definition\":true,\"occurrences\":[{\"line\":11,\"sha256\":\"62a29cb3534609192eff09eb69949a75b9e6f150b6a77f31e491c28ca9233f22\"}]}],\"definition_hits\":[{\"file\":\"src/XF/Repository/TemplateHistoryRepository.php\",\"file_sha256\":\"5a3ee2f82eea6014df5a2db82ed37c49820c53abf375fde133884c93fef4a655\",\"occurrences\":[{\"line\":11,\"sha256\":\"62a29cb3534609192eff09eb69949a75b9e6f150b6a77f31e491c28ca9233f22\"}]}],\"outdated\":[]},{\"site\":\"zakrutim.ru\",\"xf_error_rows\":1,\"board_active\":\"1\",\"outdated_count_repo\":1,\"action_merge_outdated\":{\"descriptor\":{\"exists\":true,\"class\":\"XF\\\\Admin\\\\Controller\\\\TemplateController\",\"public\":true,\"required\":1,\"total\":1,\"params\":[{\"name\":\"params\",\"optional\":false,\"type\":\"XF\\\\Mvc\\\\ParameterBag\"}],\"file\":\"src/XF/Admin/Controller/TemplateController.php\",\"source_sha256\":\"1379d227c66f90a1e58acd7d0a3d00af36a7a8a3eaeee728cbb752231f6fcd61\",\"token_skeleton\":\"public function actionMergeOutdated ( ParameterBag $params ) { $this -> setSectionContext ( ) ; $template = $this -> assertTemplateForComparison ( $params -> template_id ) ; $parentTemplate = $template -> ParentTemplate ; if ( ! $parentTemplate -> last_edit_date || $parentTemplate -> last_edit_date < $template -> last_edit_date ) { return $this -> error ( \\\\XF :: phrase ( ) ) ; } $historyRepo = $this -> repository ( TemplateHistoryRepository :: class ) ; $previousVersion = $historyRepo -> getHistoryForMerge ( $template , $parentTemplate ) ; if ( ! $previousVersion ) { return $this -> error ( \\\\XF :: phrase ( ) ) ; } if ( $this -> isPost ( ) ) { $merged = $this -> filter ( , ) ; $final = implode ( , $merged ) ; $template -> template = $final ; $template -> last_edit_date = time ( ) ; if ( ! $template -> isChanged ( ) ) { $template -> updateVersionId ( ) ; } $template -> save ( ) ; return $this -> redirect ( $this -> buildLink ( ) ) ; } else { $diff = new Diff3 ( ) ; $diffs = $diff -> findDifferences ( $template -> template , $previousVersion -> template , $parentTemplate -> template ) ; $viewParams = [ => $template , => $parentTemplate , => $previousVersion , => $diffs , ] ; return $this -> view ( , , $viewParams ) ; } }\"},\"service_bindings\":[],\"history_receivers\":[\"historyRepo\"]},\"filesystem_hits\":[{\"file\":\"src/XF/Job/TemplateMerge.php\",\"file_sha256\":\"7cac80d14ba46c6889f99d0603eed60b387bdf527458a15e912bddc0015e3a93\",\"definition\":false,\"occurrences\":[{\"line\":89,\"sha256\":\"acf4133f395cfc430e8fd41a922367ee843ff80ad9653089d5525859d1ac4b96\"}]},{\"file\":\"src/XF/Admin/Controller/TemplateController.php\",\"file_sha256\":\"73b31a31b0498882cf599b3bb95d00ec42783d921d720dadd5342f7d6716f060\",\"definition\":false,\"occurrences\":[{\"line\":452,\"sha256\":\"acf4133f395cfc430e8fd41a922367ee843ff80ad9653089d5525859d1ac4b96\"}]},{\"file\":\"src/XF/Repository/TemplateHistoryRepository.php\",\"file_sha256\":\"5a3ee2f82eea6014df5a2db82ed37c49820c53abf375fde133884c93fef4a655\",\"definition\":true,\"occurrences\":[{\"line\":11,\"sha256\":\"62a29cb3534609192eff09eb69949a75b9e6f150b6a77f31e491c28ca9233f22\"}]}],\"definition_hits\":[{\"file\":\"src/XF/Repository/TemplateHistoryRepository.php\",\"file_sha256\":\"5a3ee2f82eea6014df5a2db82ed37c49820c53abf375fde133884c93fef4a655\",\"occurrences\":[{\"line\":11,\"sha256\":\"62a29cb3534609192eff09eb69949a75b9e6f150b6a77f31e491c28ca9233f22\"}]}],\"outdated\":[{\"template_id\":1921,\"type\":\"public\",\"title\":\"extra.less\",\"style_id\":2,\"addon_id\":\"\",\"version_id\":0,\"version_string\":\"\",\"last_edit_date\":1784195301,\"body\":{\"sha256\":\"9662d1b57f5f6fcd2992fd9d150aeb887c242f792eb750cf6cb458d65b99a12d\",\"bytes\":2435,\"lines\":131},\"outdated_meta\":{\"template_id\":1921,\"parent_version_string\":\"2.0.0 Alpha\",\"parent_last_edit_date\":1692264832,\"outdated_by_version\":1,\"outdated_by_date\":0},\"native_service\":null}]},{\"site\":\"newfi.ru\",\"xf_error_rows\":1,\"board_active\":\"1\",\"outdated_count_repo\":0,\"action_merge_outdated\":{\"descriptor\":{\"exists\":true,\"class\":\"XF\\\\Admin\\\\Controller\\\\TemplateController\",\"public\":true,\"required\":1,\"total\":1,\"params\":[{\"name\":\"params\",\"optional\":false,\"type\":\"XF\\\\Mvc\\\\ParameterBag\"}],\"file\":\"src/XF/Admin/Controller/TemplateController.php\",\"source_sha256\":\"1379d227c66f90a1e58acd7d0a3d00af36a7a8a3eaeee728cbb752231f6fcd61\",\"token_skeleton\":\"public function actionMergeOutdated ( ParameterBag $params ) { $this -> setSectionContext ( ) ; $template = $this -> assertTemplateForComparison ( $params -> template_id ) ; $parentTemplate = $template -> ParentTemplate ; if ( ! $parentTemplate -> last_edit_date || $parentTemplate -> last_edit_date < $template -> last_edit_date ) { return $this -> error ( \\\\XF :: phrase ( ) ) ; } $historyRepo = $this -> repository ( TemplateHistoryRepository :: class ) ; $previousVersion = $historyRepo -> getHistoryForMerge ( $template , $parentTemplate ) ; if ( ! $previousVersion ) { return $this -> error ( \\\\XF :: phrase ( ) ) ; } if ( $this -> isPost ( ) ) { $merged = $this -> filter ( , ) ; $final = implode ( , $merged ) ; $template -> template = $final ; $template -> last_edit_date = time ( ) ; if ( ! $template -> isChanged ( ) ) { $template -> updateVersionId ( ) ; } $template -> save ( ) ; return $this -> redirect ( $this -> buildLink ( ) ) ; } else { $diff = new Diff3 ( ) ; $diffs = $diff -> findDifferences ( $template -> template , $previousVersion -> template , $parentTemplate -> template ) ; $viewParams = [ => $template , => $parentTemplate , => $previousVersion , => $diffs , ] ; return $this -> view ( , , $viewParams ) ; } }\"},\"service_bindings\":[],\"history_receivers\":[\"historyRepo\"]},\"filesystem_hits\":[{\"file\":\"src/XF/Job/TemplateMerge.php\",\"file_sha256\":\"7cac80d14ba46c6889f99d0603eed60b387bdf527458a15e912bddc0015e3a93\",\"definition\":false,\"occurrences\":[{\"line\":89,\"sha256\":\"acf4133f395cfc430e8fd41a922367ee843ff80ad9653089d5525859d1ac4b96\"}]},{\"file\":\"src/XF/Admin/Controller/TemplateController.php\",\"file_sha256\":\"73b31a31b0498882cf599b3bb95d00ec42783d921d720dadd5342f7d6716f060\",\"definition\":false,\"occurrences\":[{\"line\":452,\"sha256\":\"acf4133f395cfc430e8fd41a922367ee843ff80ad9653089d5525859d1ac4b96\"}]},{\"file\":\"src/XF/Repository/TemplateHistoryRepository.php\",\"file_sha256\":\"5a3ee2f82eea6014df5a2db82ed37c49820c53abf375fde133884c93fef4a655\",\"definition\":true,\"occurrences\":[{\"line\":11,\"sha256\":\"62a29cb3534609192eff09eb69949a75b9e6f150b6a77f31e491c28ca9233f22\"}]}],\"definition_hits\":[{\"file\":\"src/XF/Repository/TemplateHistoryRepository.php\",\"file_sha256\":\"5a3ee2f82eea6014df5a2db82ed37c49820c53abf375fde133884c93fef4a655\",\"occurrences\":[{\"line\":11,\"sha256\":\"62a29cb3534609192eff09eb69949a75b9e6f150b6a77f31e491c28ca9233f22\"}]}],\"outdated\":[]}],\"scope\":\"READ_ONLY_NO_XENFORO_MUTATION\"}\nTPL495T3R4_DECISION=HOLD_XF_ERROR_LOG_NOT_ZERO\nTPL495T3R4_HOLD=7\nHOMELAB_RESULT_CONTRACT={\"version\":1,\"command_id\":\"SUPPORT-260918-XENFORO-TEMPLATE-MERGE-SERVICE-RCA-495T3R4\",\"status\":\"FAIL\",\"changes_made\":false,\"rollback_started\":false,\"rollback_restored\":null}\n" +} diff --git a/runtime/latest.txt b/runtime/latest.txt index 94fcba5d..5879d492 100644 --- a/runtime/latest.txt +++ b/runtime/latest.txt @@ -1,162 +1,43 @@ CHAT_OUTPUT_BEGIN -COMMAND_ID=CONTEXT-AUTO-[PRIVATE_IP]701Z -STATUS=OK -RC=0 +COMMAND_ID=SUPPORT-260918-XENFORO-TEMPLATE-MERGE-SERVICE-RCA-495T3R4 +STATUS=FAIL +RC=3 HOST=pve01 -COMPONENT=cluster-context -REFERENCE_SHA[PRIVATE_IP]e5154c41cb[PRIVATE_IP]aca68090be[PRIVATE_IP]bf[PRIVATE_IP]df[PRIVATE_IP] -ERROR_REGISTER_SHA[PRIVATE_IP]ec0f527ed3afeed[PRIVATE_IP]ee[PRIVATE_IP]bbfb[PRIVATE_IP]af4ba7ba0 +MODE=read-only +COMPONENT=xenforo-template-merge-service-rca +REFERENCE_REGISTER_CHECK=OK +REFERENCE_SHA256=5a3d8e5154c41cb582a4e0aca68090be1f0138918bf82131a948df326f9d8d66 +ERROR_REGISTER_CHECK=OK +ERROR_REGISTER_SHA256=3b09a553ec0f527ed3afeed4753f52a74ee3036045bbfb3c685e9f8af4ba7ba0 +COMMAND_SHA256=f66955361fd82d2307ead100b2a5ecc8ef99f53c90131cfb6997170c5140693f +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=3 +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=8e37e2561ea1769921a2d635d9d29e56238ab6889f6cc1953a6b5d87931e828d +SANITIZED_OUTPUT_SHA256=8e37e2561ea1769921a2d635d9d29e56238ab6889f6cc1953a6b5d87931e828d OUTPUT_BEGIN -GENERATED_AT_UTC=[PRIVATE_IP]T22:17:01Z -Cluster information -------------------- -Name: homelab -Config Version: 3 -Transport: knet -Secure auth: on +TPL495T3R4_WRAPPER_BEGIN=true +ERROR_REGISTER_CHECK=OK +REFERENCE_CHECK=OK +AUTHORITY_CHECK_SCOPE=READABILITY_ONLY_INCIDENTS_NOT_CLOSED +TPL495T3R4_BEGIN=true +MODE=READ_ONLY_MERGE_SERVICE_RCA +VM211_EXCLUDED=true +TPL495T3R4_SAFE_REPORT={"affected":["codevipe.ru","dsmods.ru","gamevipe.ru","hkmods.ru","zakrutim.ru"],"outdated_total":5,"xf_error_rows_total":7,"sites":[{"site":"codevipe.ru","xf_error_rows":1,"board_active":"1","outdated_count_repo":1,"action_merge_outdated":{"descriptor":{"exists":true,"class":"XF\\Admin\\Controller\\TemplateController","public":true,"required":1,"total":1,"params":[{"name":"params","optional":false,"type":"XF\\Mvc\\ParameterBag"}],"file":"src/XF/Admin/Controller/TemplateController.php","source_sha256":"1379d227c66f90a1e58acd7d0a3d00af36a7a8a3eaeee728cbb752231f6fcd61","token_skeleton":"public function actionMergeOutdated ( ParameterBag $params ) { $this -> setSectionContext ( ) ; $template = $this -> assertTemplateForComparison ( $params -> template_id ) ; $parentTemplate = $template -> ParentTemplate ; if ( ! $parentTemplate -> last_edit_date || $parentTemplate -> last_edit_date < $template -> last_edit_date ) { return $this -> error ( \\XF :: phrase ( ) ) ; } $historyRepo = $this -> repository ( TemplateHistoryRepository :: class ) ; $previousVersion = $historyRepo -> getHistoryForMerge ( $template , $parentTemplate ) ; if ( ! $previousVersion ) { return $this -> error ( \\XF :: phrase ( ) ) ; } if ( $this -> isPost ( ) ) { $merged = $this -> filter ( , ) ; $final = implode ( , $merged ) ; $template -> template = $final ; $template -> last_edit_date = time ( ) ; if ( ! $template -> isChanged ( ) ) { $template -> updateVersionId ( ) ; } $template -> save ( ) ; return $this -> redirect ( $this -> buildLink ( ) ) ; } else { $diff = new Diff3 ( ) ; $diffs = $diff -> findDifferences ( $template -> template , $previousVersion -> template , $parentTemplate -> template ) ; $viewParams = [ => $template , => $parentTemplate , => $previousVersion , => $diffs , ] ; return $this -> view ( , , $viewParams ) ; } }"},"service_bindings":[],"history_receivers":["historyRepo"]},"filesystem_hits":[{"file":"src/XF/Job/TemplateMerge.php","file_sha256":"7cac80d14ba46c6889f99d0603eed60b387bdf527458a15e912bddc0015e3a93","definition":false,"occurrences":[{"line":89,"sha256":"acf4133f395cfc430e8fd41a922367ee843ff80ad9653089d5525859d1ac4b96"}]},{"file":"src/XF/Admin/Controller/TemplateController.php","file_sha256":"73b31a31b0498882cf599b3bb95d00ec42783d921d720dadd5342f7d6716f060","definition":false,"occurrences":[{"line":452,"sha256":"acf4133f395cfc430e8fd41a922367ee843ff80ad9653089d5525859d1ac4b96"}]},{"file":"src/XF/Repository/TemplateHistoryRepository.php","file_sha256":"5a3ee2f82eea6014df5a2db82ed37c49820c53abf375fde133884c93fef4a655","definition":true,"occurrences":[{"line":11,"sha256":"62a29cb3534609192eff09eb69949a75b9e6f150b6a77f31e491c28ca9233f22"}]}],"definition_hits":[{"file":"src/XF/Repository/TemplateHistoryRepository.php","file_sha256":"5a3ee2f82eea6014df5a2db82ed37c49820c53abf375fde133884c93fef4a655","occurrences":[{"line":11,"sha256":"62a29cb3534609192eff09eb69949a75b9e6f150b6a77f31e491c28ca9233f22"}]}],"outdated":[{"template_id":1401,"type":"public","title":"extra.less","style_id":2,"addon_id":"","version_id":0,"version_string":"","last_edit_date":1784195301,"body":{"sha256":"ca051810957679432c36024c18f3adbf3a087c7a034cd46d72edfffbd4564b6c","bytes":2396,"lines":131},"outdated_meta":{"template_id":1401,"parent_version_string":"2.0.0 Alpha","parent_last_edit_date":1721849139,"outdated_by_version":1,"outdated_by_date":0},"native_service":null}]},{"site":"dsmods.ru","xf_error_rows":1,"board_active":"1","outdated_count_repo":1,"action_merge_outdated":{"descriptor":{"exists":true,"class":"XF\\Admin\\Controller\\TemplateController","public":true,"required":1,"total":1,"params":[{"name":"params","optional":false,"type":"XF\\Mvc\\ParameterBag"}],"file":"src/XF/Admin/Controller/TemplateController.php","source_sha256":"1379d227c66f90a1e58acd7d0a3d00af36a7a8a3eaeee728cbb752231f6fcd61","token_skeleton":"public function actionMergeOutdated ( ParameterBag $params ) { $this -> setSectionContext ( ) ; $template = $this -> assertTemplateForComparison ( $params -> template_id ) ; $parentTemplate = $template -> ParentTemplate ; if ( ! $parentTemplate -> last_edit_date || $parentTemplate -> last_edit_date < $template -> last_edit_date ) { return $this -> error ( \\XF :: phrase ( ) ) ; } $historyRepo = $this -> repository ( TemplateHistoryRepository :: class ) ; $previousVersion = $historyRepo -> getHistoryForMerge ( $template , $parentTemplate ) ; if ( ! $previousVersion ) { return $this -> error ( \\XF :: phrase ( ) ) ; } if ( $this -> isPost ( ) ) { $merged = $this -> filter ( , ) ; $final = implode ( , $merged ) ; $template -> template = $final ; $template -> last_edit_date = time ( ) ; if ( ! $template -> isChanged ( ) ) { $template -> updateVersionId ( ) ; } $template -> save ( ) ; return $this -> redirect ( $this -> buildLink ( ) ) ; } else { $diff = new Diff3 ( ) ; $diffs = $diff -> findDifferences ( $template -> template , $previousVersion -> template , $parentTemplate -> template ) ; $viewParams = [ => $template , => $parentTemplate , => $previousVersion , => $diffs , ] ; return $this -> view ( , , $viewParams ) ; } }"},"service_bindings":[],"history_receivers":["historyRepo"]},"filesystem_hits":[{"file":"src/XF/Job/TemplateMerge.php","file_sha256":"7cac80d14ba46c6889f99d0603eed60b387bdf527458a15e912bddc0015e3a93","definition":false,"occurrences":[{"line":89,"sha256":"acf4133f395cfc430e8fd41a922367ee843ff80ad9653089d5525859d1ac4b96"}]},{"file":"src/XF/Admin/Controller/TemplateController.php","file_sha256":"73b31a31b0498882cf599b3bb95d00ec42783d921d720dadd5342f7d6716f060","definition":false,"occurrences":[{"line":452,"sha256":"acf4133f395cfc430e8fd41a922367ee843ff80ad9653089d5525859d1ac4b96"}]},{"file":"src/XF/Repository/TemplateHistoryRepository.php","file_sha256":"5a3ee2f82eea6014df5a2db82ed37c49820c53abf375fde133884c93fef4a655","definition":true,"occurrences":[{"line":11,"sha256":"62a29cb3534609192eff09eb69949a75b9e6f150b6a77f31e491c28ca9233f22"}]}],"definition_hits":[{"file":"src/XF/Repository/TemplateHistoryRepository.php","file_sha256":"5a3ee2f82eea6014df5a2db82ed37c49820c53abf375fde133884c93fef4a655","occurrences":[{"line":11,"sha256":"62a29cb3534609192eff09eb69949a75b9e6f150b6a77f31e491c28ca9233f22"}]}],"outdated":[{"template_id":1317,"type":"public","title":"extra.less","style_id":2,"addon_id":"","version_id":0,"version_string":"","last_edit_date":1784195301,"body":{"sha256":"3898034b75b561c774b41f6e1d8dce66a171fe30c7c210d543b41a8133e42fa2","bytes":2402,"lines":131},"outdated_meta":{"template_id":1317,"parent_version_string":"2.0.0 Alpha","parent_last_edit_date":1728727128,"outdated_by_version":1,"outdated_by_date":0},"native_service":null}]},{"site":"gamevipe.ru","xf_error_rows":1,"board_active":"1","outdated_count_repo":1,"action_merge_outdated":{"descriptor":{"exists":true,"class":"XF\\Admin\\Controller\\TemplateController","public":true,"required":1,"total":1,"params":[{"name":"params","optional":false,"type":"XF\\Mvc\\ParameterBag"}],"file":"src/XF/Admin/Controller/TemplateController.php","source_sha256":"1379d227c66f90a1e58acd7d0a3d00af36a7a8a3eaeee728cbb752231f6fcd61","token_skeleton":"public function actionMergeOutdated ( ParameterBag $params ) { $this -> setSectionContext ( ) ; $template = $this -> assertTemplateForComparison ( $params -> template_id ) ; $parentTemplate = $template -> ParentTemplate ; if ( ! $parentTemplate -> last_edit_date || $parentTemplate -> last_edit_date < $template -> last_edit_date ) { return $this -> error ( \\XF :: phrase ( ) ) ; } $historyRepo = $this -> repository ( TemplateHistoryRepository :: class ) ; $previousVersion = $historyRepo -> getHistoryForMerge ( $template , $parentTemplate ) ; if ( ! $previousVersion ) { return $this -> error ( \\XF :: phrase ( ) ) ; } if ( $this -> isPost ( ) ) { $merged = $this -> filter ( , ) ; $final = implode ( , $merged ) ; $template -> template = $final ; $template -> last_edit_date = time ( ) ; if ( ! $template -> isChanged ( ) ) { $template -> updateVersionId ( ) ; } $template -> save ( ) ; return $this -> redirect ( $this -> buildLink ( ) ) ; } else { $diff = new Diff3 ( ) ; $diffs = $diff -> findDifferences ( $template -> template , $previousVersion -> template , $parentTemplate -> template ) ; $viewParams = [ => $template , => $parentTemplate , => $previousVersion , => $diffs , ] ; return $this -> view ( , , $viewParams ) ; } }"},"service_bindings":[],"history_receivers":["historyRepo"]},"filesystem_hits":[{"file":"src/XF/Job/TemplateMerge.php","file_sha256":"7cac80d14ba46c6889f99d0603eed60b387bdf527458a15e912bddc0015e3a93","definition":false,"occurrences":[{"line":89,"sha256":"acf4133f395cfc430e8fd41a922367ee843ff80ad9653089d5525859d1ac4b96"}]},{"file":"src/XF/Admin/Controller/TemplateController.php","file_sha256":"73b31a31b0498882cf599b3bb95d00ec42783d921d720dadd5342f7d6716f060","definition":false,"occurrences":[{"line":452,"sha256":"acf4133f395cfc430e8fd41a922367ee843ff80ad9653089d5525859d1ac4b96"}]},{"file":"src/XF/Repository/TemplateHistoryRepository.php","file_sha256":"5a3ee2f82eea6014df5a2db82ed37c49820c53abf375fde133884c93fef4a655","definition":true,"occurrences":[{"line":11,"sha256":"62a29cb3534609192eff09eb69949a75b9e6f150b6a77f31e491c28ca9233f22"}]}],"definition_hits":[{"file":"src/XF/Repository/TemplateHistoryRepository.php","file_sha256":"5a3ee2f82eea6014df5a2db82ed37c49820c53abf375fde133884c93fef4a655","occurrences":[{"line":11,"sha256":"62a29cb3534609192eff09eb69949a75b9e6f150b6a77f31e491c28ca9233f22"}]}],"outdated":[{"template_id":1696,"type":"public","title":"extra.less","style_id":2,"addon_id":"","version_id":0,"version_string":"","last_edit_date":1784195301,"body":{"sha256":"fde07ae7d5f65a3cdee23b7f90834229c95495fb69db44727345b550441646ab","bytes":2410,"lines":131},"outdated_meta":{"template_id":1696,"parent_version_string":"2.0.0 Alpha","parent_last_edit_date":1720986507,"outdated_by_version":1,"outdated_by_date":0},"native_service":null}]},{"site":"hkmods.ru","xf_error_rows":1,"board_active":"1","outdated_count_repo":1,"action_merge_outdated":{"descriptor":{"exists":true,"class":"XF\\Admin\\Controller\\TemplateController","public":true,"required":1,"total":1,"params":[{"name":"params","optional":false,"type":"XF\\Mvc\\ParameterBag"}],"file":"src/XF/Admin/Controller/TemplateController.php","source_sha256":"1379d227c66f90a1e58acd7d0a3d00af36a7a8a3eaeee728cbb752231f6fcd61","token_skeleton":"public function actionMergeOutdated ( ParameterBag $params ) { $this -> setSectionContext ( ) ; $template = $this -> assertTemplateForComparison ( $params -> template_id ) ; $parentTemplate = $template -> ParentTemplate ; if ( ! $parentTemplate -> last_edit_date || $parentTemplate -> last_edit_date < $template -> last_edit_date ) { return $this -> error ( \\XF :: phrase ( ) ) ; } $historyRepo = $this -> repository ( TemplateHistoryRepository :: class ) ; $previousVersion = $historyRepo -> getHistoryForMerge ( $template , $parentTemplate ) ; if ( ! $previousVersion ) { return $this -> error ( \\XF :: phrase ( ) ) ; } if ( $this -> isPost ( ) ) { $merged = $this -> filter ( , ) ; $final = implode ( , $merged ) ; $template -> template = $final ; $template -> last_edit_date = time ( ) ; if ( ! $template -> isChanged ( ) ) { $template -> updateVersionId ( ) ; } $template -> save ( ) ; return $this -> redirect ( $this -> buildLink ( ) ) ; } else { $diff = new Diff3 ( ) ; $diffs = $diff -> findDifferences ( $template -> template , $previousVersion -> template , $parentTemplate -> template ) ; $viewParams = [ => $template , => $parentTemplate , => $previousVersion , => $diffs , ] ; return $this -> view ( , , $viewParams ) ; } }"},"service_bindings":[],"history_receivers":["historyRepo"]},"filesystem_hits":[{"file":"src/XF/Job/TemplateMerge.php","file_sha256":"7cac80d14ba46c6889f99d0603eed60b387bdf527458a15e912bddc0015e3a93","definition":false,"occurrences":[{"line":89,"sha256":"acf4133f395cfc430e8fd41a922367ee843ff80ad9653089d5525859d1ac4b96"}]},{"file":"src/XF/Admin/Controller/TemplateController.php","file_sha256":"73b31a31b0498882cf599b3bb95d00ec42783d921d720dadd5342f7d6716f060","definition":false,"occurrences":[{"line":452,"sha256":"acf4133f395cfc430e8fd41a922367ee843ff80ad9653089d5525859d1ac4b96"}]},{"file":"src/XF/Repository/TemplateHistoryRepository.php","file_sha256":"5a3ee2f82eea6014df5a2db82ed37c49820c53abf375fde133884c93fef4a655","definition":true,"occurrences":[{"line":11,"sha256":"62a29cb3534609192eff09eb69949a75b9e6f150b6a77f31e491c28ca9233f22"}]}],"definition_hits":[{"file":"src/XF/Repository/TemplateHistoryRepository.php","file_sha256":"5a3ee2f82eea6014df5a2db82ed37c49820c53abf375fde133884c93fef4a655","occurrences":[{"line":11,"sha256":"62a29cb3534609192eff09eb69949a75b9e6f150b6a77f31e491c28ca9233f22"}]}],"outdated":[{"template_id":2021,"type":"public","title":"extra.less","style_id":2,"addon_id":"","version_id":0,"version_string":"","last_edit_date":1784195301,"body":{"sha256":"2339326596eb8f77111df70fa4336809e67615942b4b7b1afb2777d8ee447bd3","bytes":2422,"lines":131},"outdated_meta":{"template_id":2021,"parent_version_string":"2.0.0 Alpha","parent_last_edit_date":1691944582,"outdated_by_version":1,"outdated_by_date":0},"native_service":null}]},{"site":"kingofwolk.ru","xf_error_rows":1,"board_active":"1","outdated_count_repo":0,"action_merge_outdated":{"descriptor":{"exists":true,"class":"XF\\Admin\\Controller\\TemplateController","public":true,"required":1,"total":1,"params":[{"name":"params","optional":false,"type":"XF\\Mvc\\ParameterBag"}],"file":"src/XF/Admin/Controller/TemplateController.php","source_sha256":"1379d227c66f90a1e58acd7d0a3d00af36a7a8a3eaeee728cbb752231f6fcd61","token_skeleton":"public function actionMergeOutdated ( ParameterBag $params ) { $this -> setSectionContext ( ) ; $template = $this -> assertTemplateForComparison ( $params -> template_id ) ; $parentTemplate = $template -> ParentTemplate ; if ( ! $parentTemplate -> last_edit_date || $parentTemplate -> last_edit_date < $template -> last_edit_date ) { return $this -> error ( \\XF :: phrase ( ) ) ; } $historyRepo = $this -> repository ( TemplateHistoryRepository :: class ) ; $previousVersion = $historyRepo -> getHistoryForMerge ( $template , $parentTemplate ) ; if ( ! $previousVersion ) { return $this -> error ( \\XF :: phrase ( ) ) ; } if ( $this -> isPost ( ) ) { $merged = $this -> filter ( , ) ; $final = implode ( , $merged ) ; $template -> template = $final ; $template -> last_edit_date = time ( ) ; if ( ! $template -> isChanged ( ) ) { $template -> updateVersionId ( ) ; } $template -> save ( ) ; return $this -> redirect ( $this -> buildLink ( ) ) ; } else { $diff = new Diff3 ( ) ; $diffs = $diff -> findDifferences ( $template -> template , $previousVersion -> template , $parentTemplate -> template ) ; $viewParams = [ => $template , => $parentTemplate , => $previousVersion , => $diffs , ] ; return $this -> view ( , , $viewParams ) ; } }"},"service_bindings":[],"history_receivers":["historyRepo"]},"filesystem_hits":[{"file":"src/XF/Job/TemplateMerge.php","file_sha256":"7cac80d14ba46c6889f99d0603eed60b387bdf527458a15e912bddc0015e3a93","definition":false,"occurrences":[{"line":89,"sha256":"acf4133f395cfc430e8fd41a922367ee843ff80ad9653089d5525859d1ac4b96"}]},{"file":"src/XF/Admin/Controller/TemplateController.php","file_sha256":"73b31a31b0498882cf599b3bb95d00ec42783d921d720dadd5342f7d6716f060","definition":false,"occurrences":[{"line":452,"sha256":"acf4133f395cfc430e8fd41a922367ee843ff80ad9653089d5525859d1ac4b96"}]},{"file":"src/XF/Repository/TemplateHistoryRepository.php","file_sha256":"5a3ee2f82eea6014df5a2db82ed37c49820c53abf375fde133884c93fef4a655","definition":true,"occurrences":[{"line":11,"sha256":"62a29cb3534609192eff09eb69949a75b9e6f150b6a77f31e491c28ca9233f22"}]}],"definition_hits":[{"file":"src/XF/Repository/TemplateHistoryRepository.php","file_sha256":"5a3ee2f82eea6014df5a2db82ed37c49820c53abf375fde133884c93fef4a655","occurrences":[{"line":11,"sha256":"62a29cb3534609192eff09eb69949a75b9e6f150b6a77f31e491c28ca9233f22"}]}],"outdated":[]},{"site":"zakrutim.ru","xf_error_rows":1,"board_active":"1","outdated_count_repo":1,"action_merge_outdated":{"descriptor":{"exists":true,"class":"XF\\Admin\\Controller\\TemplateController","public":true,"required":1,"total":1,"params":[{"name":"params","optional":false,"type":"XF\\Mvc\\ParameterBag"}],"file":"src/XF/Admin/Controller/TemplateController.php","source_sha256":"1379d227c66f90a1e58acd7d0a3d00af36a7a8a3eaeee728cbb752231f6fcd61","token_skeleton":"public function actionMergeOutdated ( ParameterBag $params ) { $this -> setSectionContext ( ) ; $template = $this -> assertTemplateForComparison ( $params -> template_id ) ; $parentTemplate = $template -> ParentTemplate ; if ( ! $parentTemplate -> last_edit_date || $parentTemplate -> last_edit_date < $template -> last_edit_date ) { return $this -> error ( \\XF :: phrase ( ) ) ; } $historyRepo = $this -> repository ( TemplateHistoryRepository :: class ) ; $previousVersion = $historyRepo -> getHistoryForMerge ( $template , $parentTemplate ) ; if ( ! $previousVersion ) { return $this -> error ( \\XF :: phrase ( ) ) ; } if ( $this -> isPost ( ) ) { $merged = $this -> filter ( , ) ; $final = implode ( , $merged ) ; $template -> template = $final ; $template -> last_edit_date = time ( ) ; if ( ! $template -> isChanged ( ) ) { $template -> updateVersionId ( ) ; } $template -> save ( ) ; return $this -> redirect ( $this -> buildLink ( ) ) ; } else { $diff = new Diff3 ( ) ; $diffs = $diff -> findDifferences ( $template -> template , $previousVersion -> template , $parentTemplate -> template ) ; $viewParams = [ => $template , => $parentTemplate , => $previousVersion , => $diffs , ] ; return $this -> view ( , , $viewParams ) ; } }"},"service_bindings":[],"history_receivers":["historyRepo"]},"filesystem_hits":[{"file":"src/XF/Job/TemplateMerge.php","file_sha256":"7cac80d14ba46c6889f99d0603eed60b387bdf527458a15e912bddc0015e3a93","definition":false,"occurrences":[{"line":89,"sha256":"acf4133f395cfc430e8fd41a922367ee843ff80ad9653089d5525859d1ac4b96"}]},{"file":"src/XF/Admin/Controller/TemplateController.php","file_sha256":"73b31a31b0498882cf599b3bb95d00ec42783d921d720dadd5342f7d6716f060","definition":false,"occurrences":[{"line":452,"sha256":"acf4133f395cfc430e8fd41a922367ee843ff80ad9653089d5525859d1ac4b96"}]},{"file":"src/XF/Repository/TemplateHistoryRepository.php","file_sha256":"5a3ee2f82eea6014df5a2db82ed37c49820c53abf375fde133884c93fef4a655","definition":true,"occurrences":[{"line":11,"sha256":"62a29cb3534609192eff09eb69949a75b9e6f150b6a77f31e491c28ca9233f22"}]}],"definition_hits":[{"file":"src/XF/Repository/TemplateHistoryRepository.php","file_sha256":"5a3ee2f82eea6014df5a2db82ed37c49820c53abf375fde133884c93fef4a655","occurrences":[{"line":11,"sha256":"62a29cb3534609192eff09eb69949a75b9e6f150b6a77f31e491c28ca9233f22"}]}],"outdated":[{"template_id":1921,"type":"public","title":"extra.less","style_id":2,"addon_id":"","version_id":0,"version_string":"","last_edit_date":1784195301,"body":{"sha256":"9662d1b57f5f6fcd2992fd9d150aeb887c242f792eb750cf6cb458d65b99a12d","bytes":2435,"lines":131},"outdated_meta":{"template_id":1921,"parent_version_string":"2.0.0 Alpha","parent_last_edit_date":1692264832,"outdated_by_version":1,"outdated_by_date":0},"native_service":null}]},{"site":"newfi.ru","xf_error_rows":1,"board_active":"1","outdated_count_repo":0,"action_merge_outdated":{"descriptor":{"exists":true,"class":"XF\\Admin\\Controller\\TemplateController","public":true,"required":1,"total":1,"params":[{"name":"params","optional":false,"type":"XF\\Mvc\\ParameterBag"}],"file":"src/XF/Admin/Controller/TemplateController.php","source_sha256":"1379d227c66f90a1e58acd7d0a3d00af36a7a8a3eaeee728cbb752231f6fcd61","token_skeleton":"public function actionMergeOutdated ( ParameterBag $params ) { $this -> setSectionContext ( ) ; $template = $this -> assertTemplateForComparison ( $params -> template_id ) ; $parentTemplate = $template -> ParentTemplate ; if ( ! $parentTemplate -> last_edit_date || $parentTemplate -> last_edit_date < $template -> last_edit_date ) { return $this -> error ( \\XF :: phrase ( ) ) ; } $historyRepo = $this -> repository ( TemplateHistoryRepository :: class ) ; $previousVersion = $historyRepo -> getHistoryForMerge ( $template , $parentTemplate ) ; if ( ! $previousVersion ) { return $this -> error ( \\XF :: phrase ( ) ) ; } if ( $this -> isPost ( ) ) { $merged = $this -> filter ( , ) ; $final = implode ( , $merged ) ; $template -> template = $final ; $template -> last_edit_date = time ( ) ; if ( ! $template -> isChanged ( ) ) { $template -> updateVersionId ( ) ; } $template -> save ( ) ; return $this -> redirect ( $this -> buildLink ( ) ) ; } else { $diff = new Diff3 ( ) ; $diffs = $diff -> findDifferences ( $template -> template , $previousVersion -> template , $parentTemplate -> template ) ; $viewParams = [ => $template , => $parentTemplate , => $previousVersion , => $diffs , ] ; return $this -> view ( , , $viewParams ) ; } }"},"service_bindings":[],"history_receivers":["historyRepo"]},"filesystem_hits":[{"file":"src/XF/Job/TemplateMerge.php","file_sha256":"7cac80d14ba46c6889f99d0603eed60b387bdf527458a15e912bddc0015e3a93","definition":false,"occurrences":[{"line":89,"sha256":"acf4133f395cfc430e8fd41a922367ee843ff80ad9653089d5525859d1ac4b96"}]},{"file":"src/XF/Admin/Controller/TemplateController.php","file_sha256":"73b31a31b0498882cf599b3bb95d00ec42783d921d720dadd5342f7d6716f060","definition":false,"occurrences":[{"line":452,"sha256":"acf4133f395cfc430e8fd41a922367ee843ff80ad9653089d5525859d1ac4b96"}]},{"file":"src/XF/Repository/TemplateHistoryRepository.php","file_sha256":"5a3ee2f82eea6014df5a2db82ed37c49820c53abf375fde133884c93fef4a655","definition":true,"occurrences":[{"line":11,"sha256":"62a29cb3534609192eff09eb69949a75b9e6f150b6a77f31e491c28ca9233f22"}]}],"definition_hits":[{"file":"src/XF/Repository/TemplateHistoryRepository.php","file_sha256":"5a3ee2f82eea6014df5a2db82ed37c49820c53abf375fde133884c93fef4a655","occurrences":[{"line":11,"sha256":"62a29cb3534609192eff09eb69949a75b9e6f150b6a77f31e491c28ca9233f22"}]}],"outdated":[]}],"scope":"READ_ONLY_NO_XENFORO_MUTATION"} +TPL495T3R4_DECISION=HOLD_XF_ERROR_LOG_NOT_ZERO +TPL495T3R4_HOLD=7 +HOMELAB_RESULT_CONTRACT={"version":1,"command_id":"SUPPORT-260918-XENFORO-TEMPLATE-MERGE-SERVICE-RCA-495T3R4","status":"FAIL","changes_made":false,"rollback_started":false,"rollback_restored":null} -Quorum information ------------------- -Date: Fri Sep [PRIVATE_IP] 2026 -Quorum provider: corosync_votequorum -Nodes: 3 -Node ID: [PRIVATE_IP] -Ring ID: 1.130 -Quorate: Yes - -Votequorum information ----------------------- -Expected votes: 3 -Highest expected: 3 -Total votes: 3 -Quorum: 2 -Flags: Quorate - -Membership information ----------------------- - Nodeid Votes Name -[PRIVATE_IP] [PRIVATE_IP].11 (local) -[PRIVATE_IP] [PRIVATE_IP].13 -[PRIVATE_IP] [PRIVATE_IP].12 - -Membership information ----------------------- - Nodeid Votes Name - 1 1 pve01 (local) - 2 1 pve03 - 3 1 pve02 -[{"cpu":[PRIVATE_IP]32185,"disk":[PRIVATE_IP],"diskread":[PRIVATE_IP],"diskwrite":[PRIVATE_IP],"id":"lxc/110","maxcpu":1,"maxdisk":[PRIVATE_IP],"maxmem":[PRIVATE_IP],"mem":[PRIVATE_IP],"memhost":0,"name":"dns1","netin":[PRIVATE_IP],"netout":[PRIVATE_IP],"node":"pve01","status":"running","template":0,"type":"lxc","uptime":[PRIVATE_IP],"vmid":110},{"cpu":[PRIVATE_IP]068e-05,"disk":[PRIVATE_IP],"diskread":[PRIVATE_IP],"diskwrite":[PRIVATE_IP],"id":"lxc/111","maxcpu":1,"maxdisk":[PRIVATE_IP],"maxmem":[PRIVATE_IP],"mem":[PRIVATE_IP],"memhost":0,"name":"dns2","netin":[PRIVATE_IP],"netout":[PRIVATE_IP],"node":"pve02","status":"running","template":0,"type":"lxc","uptime":[PRIVATE_IP],"vmid":111},{"cpu":[PRIVATE_IP]038e-05,"disk":[PRIVATE_IP],"diskread":[PRIVATE_IP],"diskwrite":[PRIVATE_IP],"id":"lxc/112","maxcpu":1,"maxdisk":[PRIVATE_IP],"maxmem":[PRIVATE_IP],"mem":[PRIVATE_IP],"memhost":0,"name":"unbound1","netin":[PRIVATE_IP],"netout":[PRIVATE_IP],"node":"pve01","status":"running","template":0,"type":"lxc","uptime":[PRIVATE_IP],"vmid":112},{"cpu":0,"disk":[PRIVATE_IP],"diskread":[PRIVATE_IP],"diskwrite":[PRIVATE_IP],"id":"lxc/113","maxcpu":1,"maxdisk":[PRIVATE_IP],"maxmem":[PRIVATE_IP],"mem":[PRIVATE_IP],"memhost":0,"name":"unbound2","netin":[PRIVATE_IP],"netout":[PRIVATE_IP],"node":"pve02","status":"running","template":0,"type":"lxc","uptime":[PRIVATE_IP],"vmid":113},{"cpu":[PRIVATE_IP]53062,"disk":0,"diskread":[PRIVATE_IP],"diskwrite":[PRIVATE_IP],"id":"qemu/130","maxcpu":4,"maxdisk":[PRIVATE_IP],"maxmem":[PRIVATE_IP],"mem":[PRIVATE_IP],"memhost":[PRIVATE_IP],"name":"edge-vm","netin":[PRIVATE_IP],"netout":[PRIVATE_IP],"node":"pve03","status":"running","template":0,"type":"qemu","uptime":[PRIVATE_IP],"vmid":130},{"cpu":[PRIVATE_IP]571976,"disk":0,"diskread":[PRIVATE_IP],"diskwrite":[PRIVATE_IP],"id":"qemu/150","maxcpu":4,"maxdisk":[PRIVATE_IP],"maxmem":[PRIVATE_IP],"mem":[PRIVATE_IP],"memhost":[PRIVATE_IP],"name":"snikket","netin":[PRIVATE_IP],"netout":[PRIVATE_IP],"node":"pve01","status":"running","template":0,"type":"qemu","uptime":[PRIVATE_IP],"vmid":150},{"cpu":[PRIVATE_IP]546302,"disk":0,"diskread":[PRIVATE_IP],"diskwrite":[PRIVATE_IP],"id":"qemu/160","maxcpu":4,"maxdisk":[PRIVATE_IP],"maxmem":[PRIVATE_IP],"mem":[PRIVATE_IP],"memhost":[PRIVATE_IP],"name":"forum-prod","netin":[PRIVATE_IP],"netout":[PRIVATE_IP],"node":"pve02","status":"running","template":0,"type":"qemu","uptime":[PRIVATE_IP],"vmid":160},{"cpu":[PRIVATE_IP]98536,"disk":0,"diskread":[PRIVATE_IP],"diskwrite":[PRIVATE_IP],"id":"qemu/170","maxcpu":4,"maxdisk":[PRIVATE_IP],"maxmem":[PRIVATE_IP],"mem":[PRIVATE_IP],"memhost":[PRIVATE_IP],"name":"core-apps","netin":[PRIVATE_IP],"netout":[PRIVATE_IP],"node":"pve01","status":"running","template":0,"type":"qemu","uptime":[PRIVATE_IP],"vmid":170},{"cpu":[PRIVATE_IP]58313,"disk":0,"diskread":[PRIVATE_IP],"diskwrite":[PRIVATE_IP],"id":"qemu/171","maxcpu":4,"maxdisk":[PRIVATE_IP],"maxmem":[PRIVATE_IP],"mem":[PRIVATE_IP],"memhost":[PRIVATE_IP],"name":"monitoring","netin":[PRIVATE_IP],"netout":[PRIVATE_IP],"node":"pve01","status":"running","template":0,"type":"qemu","uptime":[PRIVATE_IP],"vmid":171},{"cpu":[PRIVATE_IP]264303,"disk":0,"diskread":[PRIVATE_IP],"diskwrite":[PRIVATE_IP],"id":"qemu/190","maxcpu":4,"maxdisk":[PRIVATE_IP],"maxmem":[PRIVATE_IP],"mem":[PRIVATE_IP],"memhost":[PRIVATE_IP],"name":"homelab-ops-worker","netin":[PRIVATE_IP],"netout":[PRIVATE_IP],"node":"pve03","status":"running","template":0,"type":"qemu","uptime":[PRIVATE_IP],"vmid":190},{"cpu":[PRIVATE_IP]125479,"disk":0,"diskread":[PRIVATE_IP],"diskwrite":[PRIVATE_IP],"id":"qemu/210","maxcpu":2,"maxdisk":[PRIVATE_IP],"maxmem":[PRIVATE_IP],"mem":[PRIVATE_IP],"memhost":[PRIVATE_IP],"name":"newfi-prod","netin":[PRIVATE_IP],"netout":[PRIVATE_IP],"node":"pve01","status":"running","template":0,"type":"qemu","uptime":947960,"vmid":210},{"cpu":[PRIVATE_IP]830379,"disk":0,"diskread":[PRIVATE_IP],"diskwrite":[PRIVATE_IP],"id":"qemu/211","maxcpu":2,"maxdisk":[PRIVATE_IP],"maxmem":[PRIVATE_IP],"mem":[PRIVATE_IP],"memhost":[PRIVATE_IP],"name":"newfi-staging","netin":[PRIVATE_IP],"netout":[PRIVATE_IP],"node":"pve03","status":"running","template":0,"type":"qemu","uptime":[PRIVATE_IP],"vmid":211},{"cpu":0,"disk":0,"diskread":0,"diskwrite":0,"id":"qemu/9130","maxcpu":4,"maxdisk":[PRIVATE_IP],"maxmem":[PRIVATE_IP],"mem":0,"memhost":0,"name":"edge-cold-standby","netin":0,"netout":0,"node":"pve02","status":"stopped","template":0,"type":"qemu","uptime":0,"vmid":9130},{"cgroup-mode":2,"cpu":[PRIVATE_IP]51871,"disk":[PRIVATE_IP],"id":"node/pve01","level":"","maxcpu":24,"maxdisk":[PRIVATE_IP],"maxmem":[PRIVATE_IP],"mem":[PRIVATE_IP],"node":"pve01","status":"online","type":"node","uptime":[PRIVATE_IP]},{"cgroup-mode":2,"cpu":[PRIVATE_IP]9622,"disk":[PRIVATE_IP],"id":"node/pve03","level":"","maxcpu":8,"maxdisk":[PRIVATE_IP],"maxmem":[PRIVATE_IP],"mem":[PRIVATE_IP],"node":"pve03","status":"online","type":"node","uptime":[PRIVATE_IP]},{"cgroup-mode":2,"cpu":[PRIVATE_IP]9231,"disk":[PRIVATE_IP],"id":"node/pve02","level":"","maxcpu":4,"maxdisk":[PRIVATE_IP],"maxmem":[PRIVATE_IP],"mem":[PRIVATE_IP],"node":"pve02","status":"online","type":"node","uptime":[PRIVATE_IP]},{"content":"import,vztmpl,backup,iso","disk":[PRIVATE_IP],"id":"storage/pve01/local","maxdisk":[PRIVATE_IP],"node":"pve01","plugintype":"dir","shared":0,"status":"available","storage":"local","type":"storage"},{"content":"import,vztmpl,backup,iso","disk":[PRIVATE_IP],"id":"storage/pve03/local","maxdisk":[PRIVATE_IP],"node":"pve03","plugintype":"dir","shared":0,"status":"available","storage":"local","type":"storage"},{"content":"import,vztmpl,backup,iso","disk":[PRIVATE_IP],"id":"storage/pve02/local","maxdisk":[PRIVATE_IP],"node":"pve02","plugintype":"dir","shared":0,"status":"available","storage":"local","type":"storage"},{"content":"rootdir,images","disk":[PRIVATE_IP],"id":"storage/pve01/local-lvm","maxdisk":[PRIVATE_IP],"node":"pve01","plugintype":"lvmthin","shared":0,"status":"available","storage":"local-lvm","type":"storage"},{"content":"rootdir,images","disk":[PRIVATE_IP],"id":"storage/pve03/local-lvm","maxdisk":[PRIVATE_IP],"node":"pve03","plugintype":"lvmthin","shared":0,"status":"available","storage":"local-lvm","type":"storage"},{"content":"rootdir,images","disk":[PRIVATE_IP],"id":"storage/pve02/local-lvm","maxdisk":[PRIVATE_IP],"node":"pve02","plugintype":"lvmthin","shared":0,"status":"available","storage":"local-lvm","type":"storage"},{"id":"network/pve01/zone/localnetwork","network":"localnetwork","network-type":"zone","node":"pve01","status":"ok","type":"network"},{"id":"network/pve03/zone/localnetwork","network":"localnetwork","network-type":"zone","node":"pve03","status":"ok","type":"network"},{"id":"network/pve02/zone/localnetwork","network":"localnetwork","network-type":"zone","node":"pve02","status":"ok","type":"network"}] -Name Type Status Total (KiB) Used (KiB) Available (KiB) % -local dir active [PRIVATE_IP] [PRIVATE_IP] [PRIVATE_IP] 21.16% -local-lvm lvmthin active [PRIVATE_IP] [PRIVATE_IP] [PRIVATE_IP] 12.96% - UNIT LOAD ACTIVE SUB DESCRIPTION -● homelab-app-cloud-quorum-queue.service loaded failed failed Homelab canonical application cloud quorum backup queue -● homelab-backup-retention-gc.service loaded failed failed Homelab owner-aware cloud retention GC -● homelab-vm-cloud-quorum-queue.service loaded failed failed Homelab canonical VM/CT cloud quorum backup queue - -Legend: LOAD → Reflects whether the unit definition was properly loaded. - ACTIVE → The high-level unit activation state, i.e. generalization of SUB. - SUB → The low-level unit activation state, values depend on unit type. - -3 loaded units listed. -NEXT LEFT LAST PASSED UNIT ACTIVATES -Fri [PRIVATE_IP] 01:17:12 MSK 10s Fri [PRIVATE_IP] 01:12:12 MSK 4min 49s ago homelab-smartctl-textfile.timer homelab-smartctl-textfile.service -Fri [PRIVATE_IP] 01:17:12 MSK 10s Fri [PRIVATE_IP] 01:12:12 MSK 4min 49s ago netbird-peers-health.timer netbird-peers-health.service -Fri [PRIVATE_IP] 01:17:13 MSK 10s Fri [PRIVATE_IP] 01:16:12 MSK 50s ago homelab-router-watchdog.timer homelab-router-watchdog.service -Fri [PRIVATE_IP] 01:17:57 MSK 55s Fri [PRIVATE_IP] 01:16:57 MSK 4s ago homelab-private-vpn-hosts-health.timer homelab-private-vpn-hosts-health.service -Fri [PRIVATE_IP] 01:18:15 MSK 1min 13s Fri [PRIVATE_IP] 01:12:57 MSK 4min 4s ago homelab-health-metrics.timer homelab-health-metrics.service -Fri [PRIVATE_IP] 01:21:38 MSK 4min 36s Fri [PRIVATE_IP] 01:11:38 MSK 5min ago skladchik-reports-monitor-supervisor.timer skladchik-reports-monitor-supervisor.service -Fri [PRIVATE_IP] 01:21:42 MSK 4min 39s Fri [PRIVATE_IP] 01:06:42 MSK 10min ago homelab-pve03-staging-capacity-health.timer homelab-pve03-staging-capacity-health.service -Fri [PRIVATE_IP] 01:24:47 MSK 7min Fri [PRIVATE_IP] 00:51:01 MSK 26min ago homelab-reference-refresh.timer homelab-reference-refresh.service -Fri [PRIVATE_IP] 01:29:16 MSK 12min Fri [PRIVATE_IP] 01:14:16 MSK 2min 46s ago prometheus-node-exporter-apt.timer prometheus-node-exporter-apt.service -Fri [PRIVATE_IP] 01:30:00 MSK 12min Fri [PRIVATE_IP] 01:15:00 MSK 2min 2s ago homelab-incident-journal.timer homelab-incident-journal.service -Fri [PRIVATE_IP] 01:30:57 MSK 13min Fri [PRIVATE_IP] 01:15:43 MSK 1min 18s ago homelab-forum-snuffleupagus-health.timer homelab-forum-snuffleupagus-health.service -Fri [PRIVATE_IP] 01:31:16 MSK 14min Fri [PRIVATE_IP] 01:15:43 MSK 1min 18s ago homelab-duty-admin-v2.timer homelab-duty-admin-v2.service -Fri [PRIVATE_IP] 01:31:25 MSK 14min Fri [PRIVATE_IP] 01:15:00 MSK 2min 2s ago homelab-external-probe-vps-health.timer homelab-external-probe-vps-health.service -Fri [PRIVATE_IP] 01:31:32 MSK 14min Fri [PRIVATE_IP] 01:16:32 MSK 30s ago homelab-disk-space-health.timer homelab-disk-space-health.service -Fri [PRIVATE_IP] 01:31:57 MSK 14min Fri [PRIVATE_IP] 01:16:57 MSK 4s ago prometheus-node-exporter-nvme.timer prometheus-node-exporter-nvme.service -Fri [PRIVATE_IP] 01:33:02 MSK 16min Fri [PRIVATE_IP] 01:00:16 MSK 16min ago homelab-mkdocs-auto-refresh.timer homelab-mkdocs-auto-refresh.service -Fri [PRIVATE_IP] 01:36:50 MSK 19min Fri [PRIVATE_IP] 01:05:07 MSK 11min ago homelab-backup-audit.timer homelab-backup-audit.service -Fri [PRIVATE_IP] 03:11:45 MSK 1h 54min Thu [PRIVATE_IP] 11:21:10 MSK 13h ago apt-daily.timer apt-daily.service -Fri [PRIVATE_IP] 03:22:15 MSK 2h 5min Thu [PRIVATE_IP] 03:21:32 MSK 21h ago homelab-backup-retention-gc.timer homelab-backup-retention-gc.service -Fri [PRIVATE_IP] 04:11:15 MSK 2h 54min Thu [PRIVATE_IP] 01:17:32 MSK 23h ago pve-daily-update.timer pve-daily-update.service -Fri [PRIVATE_IP] 04:35:57 MSK 3h 18min Thu [PRIVATE_IP] 22:35:57 MSK 2h 41min ago homelab-vps-identity-audit.timer homelab-vps-identity-audit.service -Fri [PRIVATE_IP] 05:11:24 MSK 3h 54min Thu [PRIVATE_IP] 23:09:16 MSK 2h 7min ago homelab-evidence-root.timer homelab-evidence-root.service -Fri [PRIVATE_IP] 06:03:32 MSK 4h 46min Thu [PRIVATE_IP] 06:08:57 MSK 19h ago apt-daily-upgrade.timer apt-daily-upgrade.service -Fri [PRIVATE_IP] 06:32:16 MSK 5h 15min Fri [PRIVATE_IP] 00:23:58 MSK 53min ago homelab-mailru-trash-gc.timer homelab-mailru-trash-gc.service -Fri [PRIVATE_IP] 07:17:58 MSK 6h Thu [PRIVATE_IP] 07:14:42 MSK 18h ago homelab-drift-check.timer homelab-drift-check.service -Fri [PRIVATE_IP] 07:39:21 MSK 6h Thu [PRIVATE_IP] 07:31:16 MSK 17h ago homelab-service-registry-check.timer homelab-service-registry-check.service -Fri [PRIVATE_IP] 07:45:11 MSK 6h Thu [PRIVATE_IP] 07:46:41 MSK 17h ago homelab-dependency-map-check.timer homelab-dependency-map-check.service -Fri [PRIVATE_IP] 07:48:49 MSK 6h Thu [PRIVATE_IP] 07:39:57 MSK 17h ago homelab-alerting-health.timer homelab-alerting-health.service -Fri [PRIVATE_IP] 07:57:58 MSK 6h Thu [PRIVATE_IP] 07:54:11 MSK 17h ago homelab-runbook-generate.timer homelab-runbook-generate.service -Fri [PRIVATE_IP] 07:59:21 MSK 6h Thu [PRIVATE_IP] 07:58:41 MSK 17h ago homelab-duty-admin-report.timer homelab-duty-admin-report.service -Fri [PRIVATE_IP] 08:00:39 MSK 6h Thu [PRIVATE_IP] 07:48:16 MSK 17h ago homelab-desired-state-sync.timer homelab-desired-state-sync.service -Fri [PRIVATE_IP] 08:07:02 MSK 6h Thu [PRIVATE_IP] 08:23:57 MSK 16h ago homelab-kuma-monitor-policy.timer homelab-kuma-monitor-policy.service -Fri [PRIVATE_IP] 08:15:37 MSK 6h Thu [PRIVATE_IP] 08:08:57 MSK 17h ago homelab-overall-health.timer homelab-overall-health.service -Fri [PRIVATE_IP] 08:25:47 MSK 7h Thu [PRIVATE_IP] 08:38:57 MSK 16h ago homelab-capacity-risk.timer homelab-capacity-risk.service -Fri [PRIVATE_IP] 08:29:52 MSK 7h Thu [PRIVATE_IP] 08:16:41 MSK 17h ago homelab-final-readiness-gate.timer homelab-final-readiness-gate.service -Fri [PRIVATE_IP] 08:37:56 MSK 7h Thu [PRIVATE_IP] 08:35:00 MSK 16h ago homelab-secret-exposure-guard.timer homelab-secret-exposure-guard.service -Fri [PRIVATE_IP] 08:48:19 MSK 7h Thu [PRIVATE_IP] 08:44:42 MSK 16h ago homelab-cluster-passport.timer homelab-cluster-passport.service -Fri [PRIVATE_IP] 09:00:09 MSK 7h Thu [PRIVATE_IP] 08:46:15 MSK 16h ago homelab-golden-state-index.timer homelab-golden-state-index.service -Fri [PRIVATE_IP] 09:35:16 MSK 8h Thu [PRIVATE_IP] 05:52:43 MSK 19h ago man-db.timer man-db.service -Fri [PRIVATE_IP] 10:15:00 MSK 8h Thu [PRIVATE_IP] 10:15:11 MSK 15h ago skladchik-reports-monitor-monthly-selftest-watch.timer skladchik-reports-monitor-monthly-selftest-watch.service -Fri [PRIVATE_IP] 16:47:57 MSK 15h Thu [PRIVATE_IP] 16:47:57 MSK 8h ago systemd-tmpfiles-clean.timer systemd-tmpfiles-clean.service -Sat [PRIVATE_IP] 00:00:00 MSK 22h Fri [PRIVATE_IP] 00:00:00 MSK 1h 17min ago dpkg-db-backup.timer dpkg-db-backup.service -Sat [PRIVATE_IP] 00:01:48 MSK 22h Fri [PRIVATE_IP] 00:07:16 MSK 1h 9min ago homelab-evidence-catalog.timer homelab-evidence-catalog.service -Sat [PRIVATE_IP] 00:02:46 MSK 22h Fri [PRIVATE_IP] 00:10:53 MSK 1h 6min ago homelab-quality-gate.timer homelab-quality-gate.service -Sat [PRIVATE_IP] 00:13:58 MSK 22h Fri [PRIVATE_IP] 00:12:32 MSK 1h 4min ago homelab-docker-health.timer homelab-docker-health.service -Sat [PRIVATE_IP] 00:18:29 MSK 23h Fri [PRIVATE_IP] 00:15:12 MSK 1h 1min ago homelab-storage-capacity.timer homelab-storage-capacity.service -Sat [PRIVATE_IP] 00:34:18 MSK 23h Fri [PRIVATE_IP] 00:35:52 MSK 41min ago logrotate.timer logrotate.service -Sun [PRIVATE_IP] 03:10:03 MSK 2 days Sun [PRIVATE_IP] 03:10:22 MSK 4 days ago e2scrub_all.timer e2scrub_all.service -Sun [PRIVATE_IP] 03:10:58 MSK 2 days Sun [PRIVATE_IP] 03:10:39 MSK 4 days ago xfs_scrub_all.timer xfs_scrub_all.service -Sun [PRIVATE_IP] 07:40:18 MSK 2 days Sun [PRIVATE_IP] 07:35:56 MSK 4 days ago homelab-rotating-boot-drill.timer homelab-rotating-boot-drill.service -Mon [PRIVATE_IP] 00:04:42 MSK 2 days Mon [PRIVATE_IP] 00:10:39 MSK 4 days ago homelab-secret-sanity.timer homelab-secret-sanity.service -Mon [PRIVATE_IP] 00:09:14 MSK 2 days Mon [PRIVATE_IP] 00:30:56 MSK 4 days ago fstrim.timer fstrim.service -- - Thu [PRIVATE_IP] 22:37:48 MSK 2h 39min ago homelab-backup-v2.timer homelab-backup-v2.service -- - - - prometheus-node-exporter-ipmitool-sensor.timer prometheus-node-exporter-ipmitool-sensor.service -- - - - prometheus-node-exporter-mellanox-hca-temp.timer prometheus-node-exporter-mellanox-hca-temp.service -- - - - prometheus-node-exporter-smartmon.timer prometheus-node-exporter-smartmon.service - -56 timers listed. -RUNTIME_MANIFEST_ID=df[PRIVATE_IP]ac9b5abd[PRIVATE_IP]b[PRIVATE_IP]d89496fb2bde[PRIVATE_IP] -EXPERIMENT_ID=5462ee[PRIVATE_IP]ebe[PRIVATE_IP]feb2ad[PRIVATE_IP]1ad87bbac0b8108 -COLLECTION_START_AT=[PRIVATE_IP]T[PRIVATE_IP]:00 -FIRST_COMPLETE_D1_CLOSE=[PRIVATE_IP]T[PRIVATE_IP]:00 -PRODUCTION_LAUNCH_ALLOWED=False -EXECUTION_AUTHORITY=False -RISK_AUTHORITY=False -STAGE_A_HEALTH=AWAITING_PRIMARY_FINALITY -FORENSIC_PREVIOUS_EPOCH_PRESERVED=YES - -## NEWFI_TASK6_AUTH_CHECKPOINT_V[PRIVATE_IP] -- Scope: historical accepted AUTH test, not a current SMTP connection test. -- Newfi approved SMTP account/sender: aleisaev@yandex.ru. -- Endpoint used by accepted test: smtp.yandex.ru:465 with certificate verification; single PLAIN initial response accepted with code 235. -- Evidence: incident ledger ### NEWFI_TASK6_YANDEX_AUTH_V2_OBSERVATION and ### NEWFI_TASK6_AUTH_PROOF_CLOSE_V1. -- No password file written, no application configuration changed, no mail sent by the accepted AUTH test. -- Persistent transport installation and application delivery are not proven by this checkpoint. Task6 is not complete. -- AUTH challenge and missing-file incidents closed; launch/session incident remains OPEN with original cause unproven. -- This update does not change VM211, VM160, routing, board state or Git. -- Other incidents and infrastructure health were not assessed. - - -## NEWFI_PRIVATE_STRUCTURE92_WRONG_MARKER_SCOPE_[PRIVATE_IP] CLOSURE -- Status: CLOSED -- RCA: NEWFI92 inspected the pve01 NEWFI90 attempt marker, which had not been finalized because the outer shell exited immediately after the guest returned RC3 following its successful rollback. The guest marker contained the true final rollback state. -- Correction: NEWFI93 required both the guest FINISHED/ROLLED_BACK record and a fresh exact demo-state readback before reconciling the outer NEWFI90 marker. NEWFI92 itself never reserved an attempt or mutated state. - - -## NEWFI_PRIVATE_NEWFI95_NESTED_TRIPLE_QUOTE_PARSE_[PRIVATE_IP] -- Status: OPEN -- Command: NEWFI95 -- Symptom: after the content-structure precheck passed, the pve03 Python wrapper failed to parse at the PHP line beginning with $root. No Portal discovery or application mutation was reached. -- RCA: an outer raw triple-single-quoted guest Python payload contained an inner raw triple-single-quoted PHP payload. The inner delimiter terminated the outer Python string, causing PHP source to be parsed as Python. -- Safety: NEWFI95 was read-only, created no attempt marker, and did not reach the intended nested guest execution. Do not replay NEWFI95. - - -## NEWFI_PRIVATE_NEWFI95_NESTED_TRIPLE_QUOTE_PARSE_[PRIVATE_IP] CLOSURE -- Status: CLOSED -- RCA: an inner triple-single-quoted PHP literal terminated the outer triple-single-quoted Python guest payload in NEWFI95. The wrapper therefore failed parsing before the intended Portal discovery executed. -- Correction: NEWFI96 removed the nested Python payload layer entirely and passed one Python program directly to VM211 through qm guest exec stdin. The read-only Portal contract completed with QGA exit 0 and the implementation worktree remained unchanged. OUTPUT_END CHAT_OUTPUT_END