1
0
Files
homelab-public-context/runtime/latest.json
T
2026-09-18 23:20:23 +00:00

39 lines
39 KiB
JSON

{
"schema_version": 1,
"channel": "homelab-runtime",
"command_id": "NEWFI-260919-NEWFDOM-CONTENT207-RECOVERY120",
"status": "OK",
"rc": 0,
"host": "pve01",
"mode": "read-only",
"component": "newfi-newfdom-content207-staging-rollback-failure-recovery-census-readonly",
"started_at_utc": "2026-09-18T23:20:18Z",
"finished_at_utc": "2026-09-18T23:20:22Z",
"reference_register_checked": true,
"reference_sha256": "5a3d8e5154c41cb582a4e0aca68090be1f0138918bf82131a948df326f9d8d66",
"error_register_checked": true,
"error_register_sha256": "3b09a553ec0f527ed3afeed4753f52a74ee3036045bbfb3c685e9f8af4ba7ba0",
"command_sha256": "1481308157d1f4b1868343e580f592d9b89e793e3a87a5948a76b655a3efb1b6",
"duplicate_failed_command_blocked": false,
"block_reason": null,
"execution_started": true,
"change_declared": false,
"result_contract_valid": true,
"result_contract_status": null,
"result_contract_error": null,
"command_rc": 0,
"changes_made": false,
"rollback_started": false,
"rollback_restored": null,
"mutation_outcome": "NO_MUTATION",
"sanitized": true,
"secrets_included": false,
"private_addresses_included": false,
"raw_evidence_retained_locally": true,
"raw_evidence_sha256": "87f9e3bb86417d0ffdefa25c5e9f0a506db5f36ed20d7b5fc7c38795ac47201b",
"sanitized_output_sha256": "87f9e3bb86417d0ffdefa25c5e9f0a506db5f36ed20d7b5fc7c38795ac47201b",
"output_truncated_in_json": false,
"full_sanitized_output_url": "https://git.gram1.ru/.well-known/homelab-runtime/latest.txt",
"output": "NEWFI120_BEGIN\nCOMMAND_ID=NEWFI-260919-NEWFDOM-CONTENT207-RECOVERY120\nNEWFI120_GIT={\"branch\":\"implementation/newfi-closed-mvp-20260906\",\"clean\":true,\"expected_head\":\"bcd970b0fa5d0f140aad4a3246773f44409ffe46\",\"head\":\"bcd970b0fa5d0f140aad4a3246773f44409ffe46\",\"remotes\":[{\"head\":\"bcd970b0fa5d0f140aad4a3246773f44409ffe46\",\"remote\":\"origin\"}]}\nNEWFI120_STAGING={\"backup\":{\"article_count\":13,\"article_shas\":{\"Как включиться в сообщество ньюфаундлендов: клубы, встречи и волонтёрство\":\"5e4dbb03ea5c43d525385d860f04245bf9b0025b29166edf16c7a56f99bc0bff\",\"Как выбрать щенка ньюфаундленда: заводчик, документы и решение без спешки\":\"67d36b2b5f5cab248eb4197b35ef129e65c91f3e4f7249ac8a07573f8ccbf80a\",\"Кормление ньюфаундленда: базовые принципы без мифов\":\"c408c88a03a3ff86f8a04e6783864033cd880d96efa1bd9844be430a60803626\",\"Ньюфаундленд у воды: безопасное плавание и начало водной работы\":\"4c4d4bf1c4a6dfb957aed61291da9e9de0deb90bc4e2270fa31865bc306c858d\",\"Ньюфаундленд: что важно знать о породе\":\"72be6b3055218854fd03ce9cb68906a1123141a78022518e32f494dc456baf77\",\"Обучение ньюфаундленда: базовые навыки для большой спокойной собаки\":\"91feda0cb70e3dfa898051798e9df2eedd586283f116ede024ce7588f60f01e5\",\"Ответственное разведение ньюфаундлендов: здоровье, документы и обязательства заводчика\":\"a401a2709585ebfbe628aa0a3d7ee6d4f090c6d3ef2999584223b3ebe0f5daec\",\"Первая выставка с ньюфаундлендом: стандарт, подготовка и хендлинг\":\"786376228e0b4169725271706df6da871412c0eac3bc45ca2e50f390f44cbfe4\",\"Первые дни щенка ньюфаундленда дома: спокойный и безопасный старт\":\"0f118b8b70d9b58fd31c53f580151099f767f233f3fcfaa64c6042bd358fd5d8\",\"Первый год ньюфаундленда: рост, нагрузка и контроль кондиции\":\"579a67772be4c9d8fa75e992db4bb2abb72acb4cf79be4313f05b9552e8460ab\",\"Поездка с ньюфаундлендом: автомобиль, самолёт и документы без сюрпризов\":\"578a877a7705e53b8dc119a3b8f25a2c0b0496a41b5e391a43852e73fd13b554\",\"Тревожные признаки у ньюфаундленда: когда обращаться к ветеринару\":\"97eb612f1cf27b26d65535030bafea491793384821c5dee17006f8db72f5ac98\",\"Шерсть и груминг ньюфаундленда: базовый уход без крайностей\":\"c2b9ec14eebacb5fcc2d72e27ddbcdc33b6f1237fe9dd695d47feb945a820db2\"},\"exists\":true,\"less_sha\":\"afd3c1cdffa489bd730fd5abb9281abd9755f01907e486fe9c88c9d12dd3e045\",\"portal_b64_sha\":\"5e4eae47a54970611a5f08875b2423d69e9bb57d53b3fc888d15d33a52b595ed\",\"portal_sha\":\"5e4eae47a54970611a5f08875b2423d69e9bb57d53b3fc888d15d33a52b595ed\",\"runtime_exists\":true,\"runtime_keys\":[\"articles\",\"portal_b64\"],\"runtime_sha\":\"19d35b4e178955ecec8d217fe250f4d832737efafb1c0d0efeacd91f61795831\",\"templates_exists\":true,\"xml_sha\":\"a15da1480f674df015cf8443dc4d4cb540334e26cc8fcfc06e4eb34aaa455921\"},\"ci_sha\":\"b025d0658da8716a5cf5bbf85e63bb7885ac24715353da58a8bac9c5b7adeef0\",\"classification\":{\"backup_old_bodies_13of13\":true,\"backup_old_source\":true,\"bodies_old_13of13\":true,\"ci_patched\":true,\"content207_marker_count\":0,\"runtime_less_old\":true,\"runtime_portal_old\":true,\"source_old\":true},\"marker_titles\":[],\"ok\":true,\"old_body_matches\":{\"Как включиться в сообщество ньюфаундлендов: клубы, встречи и волонтёрство\":true,\"Как выбрать щенка ньюфаундленда: заводчик, документы и решение без спешки\":true,\"Кормление ньюфаундленда: базовые принципы без мифов\":true,\"Ньюфаундленд у воды: безопасное плавание и начало водной работы\":true,\"Ньюфаундленд: что важно знать о породе\":true,\"Обучение ньюфаундленда: базовые навыки для большой спокойной собаки\":true,\"Ответственное разведение ньюфаундлендов: здоровье, документы и обязательства заводчика\":true,\"Первая выставка с ньюфаундлендом: стандарт, подготовка и хендлинг\":true,\"Первые дни щенка ньюфаундленда дома: спокойный и безопасный старт\":true,\"Первый год ньюфаундленда: рост, нагрузка и контроль кондиции\":true,\"Поездка с ньюфаундлендом: автомобиль, самолёт и документы без сюрпризов\":true,\"Тревожные признаки у ньюфаундленда: когда обращаться к ветеринару\":true,\"Шерсть и груминг ньюфаундленда: базовый уход без крайностей\":true},\"role\":\"staging\",\"runtime\":{\"bodies\":{\"Как включиться в сообщество ньюфаундлендов: клубы, встречи и волонтёрство\":{\"bytes\":9206,\"content207\":false,\"sha\":\"5e4dbb03ea5c43d525385d860f04245bf9b0025b29166edf16c7a56f99bc0bff\"},\"Как выбрать щенка ньюфаундленда: заводчик, документы и решение без спешки\":{\"bytes\":6413,\"content207\":false,\"sha\":\"67d36b2b5f5cab248eb4197b35ef129e65c91f3e4f7249ac8a07573f8ccbf80a\"},\"Кормление ньюфаундленда: базовые принципы без мифов\":{\"bytes\":6860,\"content207\":false,\"sha\":\"c408c88a03a3ff86f8a04e6783864033cd880d96efa1bd9844be430a60803626\"},\"Ньюфаундленд у воды: безопасное плавание и начало водной работы\":{\"bytes\":6088,\"content207\":false,\"sha\":\"4c4d4bf1c4a6dfb957aed61291da9e9de0deb90bc4e2270fa31865bc306c858d\"},\"Ньюфаундленд: что важно знать о породе\":{\"bytes\":6764,\"content207\":false,\"sha\":\"72be6b3055218854fd03ce9cb68906a1123141a78022518e32f494dc456baf77\"},\"Обучение ньюфаундленда: базовые навыки для большой спокойной собаки\":{\"bytes\":6492,\"content207\":false,\"sha\":\"91feda0cb70e3dfa898051798e9df2eedd586283f116ede024ce7588f60f01e5\"},\"Ответственное разведение ньюфаундлендов: здоровье, документы и обязательства заводчика\":{\"bytes\":7246,\"content207\":false,\"sha\":\"a401a2709585ebfbe628aa0a3d7ee6d4f090c6d3ef2999584223b3ebe0f5daec\"},\"Первая выставка с ньюфаундлендом: стандарт, подготовка и хендлинг\":{\"bytes\":6270,\"content207\":false,\"sha\":\"786376228e0b4169725271706df6da871412c0eac3bc45ca2e50f390f44cbfe4\"},\"Первые дни щенка ньюфаундленда дома: спокойный и безопасный старт\":{\"bytes\":6356,\"content207\":false,\"sha\":\"0f118b8b70d9b58fd31c53f580151099f767f233f3fcfaa64c6042bd358fd5d8\"},\"Первый год ньюфаундленда: рост, нагрузка и контроль кондиции\":{\"bytes\":6764,\"content207\":false,\"sha\":\"579a67772be4c9d8fa75e992db4bb2abb72acb4cf79be4313f05b9552e8460ab\"},\"Поездка с ньюфаундлендом: автомобиль, самолёт и документы без сюрпризов\":{\"bytes\":7218,\"content207\":false,\"sha\":\"578a877a7705e53b8dc119a3b8f25a2c0b0496a41b5e391a43852e73fd13b554\"},\"Тревожные признаки у ньюфаундленда: когда обращаться к ветеринару\":{\"bytes\":6673,\"content207\":false,\"sha\":\"97eb612f1cf27b26d65535030bafea491793384821c5dee17006f8db72f5ac98\"},\"Шерсть и груминг ньюфаундленда: базовый уход без крайностей\":{\"bytes\":5925,\"content207\":false,\"sha\":\"c2b9ec14eebacb5fcc2d72e27ddbcdc33b6f1237fe9dd695d47feb945a820db2\"}},\"counts\":{\"drafts\":0,\"resources\":13,\"tag_content\":39,\"tags\":33,\"updates\":13,\"versions\":13},\"errors\":[{\"error_id\":33,\"exception_type\":\"XF\\\\CssRenderException\",\"filename\":\"src/XF/CssRenderException.php\",\"line\":89,\"message\":\"Error rendering template public:variations.less: ParseError: Unexpected input in public:variations.less on line 849, column 34 (on or near line 849)\"},{\"error_id\":34,\"exception_type\":\"XF\\\\CssRenderException\",\"filename\":\"src/XF/CssRenderException.php\",\"line\":89,\"message\":\"Error rendering template public:core.less: ParseError: Unexpected input in public:core.less on line 849, column 34 (on or near line 849)\"},{\"error_id\":35,\"exception_type\":\"XF\\\\CssRenderException\",\"filename\":\"src/XF/CssRenderException.php\",\"line\":89,\"message\":\"Error rendering template public:app.less: ParseError: Unexpected input in public:app.less on line 849, column 34 (on or near line 849)\"},{\"error_id\":36,\"exception_type\":\"XF\\\\CssRenderException\",\"filename\":\"src/XF/CssRenderException.php\",\"line\":89,\"message\":\"Error rendering template public:extra.less: ParseError: Unexpected input in public:extra.less on line 849, column 34 (on or near line 849)\"},{\"error_id\":37,\"exception_type\":\"XF\\\\CssRenderException\",\"filename\":\"src/XF/CssRenderException.php\",\"line\":89,\"message\":\"Error rendering template public:variations.less: ParseError: Unexpected input in public:variations.less on line 849, column 34 (on or near line 849)\"},{\"error_id\":38,\"exception_type\":\"XF\\\\CssRenderException\",\"filename\":\"src/XF/CssRenderException.php\",\"line\":89,\"message\":\"Error rendering template public:core.less: ParseError: Unexpected input in public:core.less on line 849, column 34 (on or near line 849)\"},{\"error_id\":39,\"exception_type\":\"XF\\\\CssRenderException\",\"filename\":\"src/XF/CssRenderException.php\",\"line\":89,\"message\":\"Error rendering template public:app.less: ParseError: Unexpected input in public:app.less on line 849, column 34 (on or near line 849)\"},{\"error_id\":40,\"exception_type\":\"XF\\\\CssRenderException\",\"filename\":\"src/XF/CssRenderException.php\",\"line\":89,\"message\":\"Error rendering template public:extra.less: ParseError: Unexpected input in public:extra.less on line 849, column 34 (on or near line 849)\"},{\"error_id\":41,\"exception_type\":\"XF\\\\PrintableException\",\"filename\":\"src/XF/Mvc/Entity/Entity.php\",\"line\":1276,\"message\":\"Строка 111: Ошибка синтаксиса - Название шаблона: public:newfi_portal\"},{\"error_id\":42,\"exception_type\":\"LogicException\",\"filename\":\"src/XF/Mvc/Entity/Entity.php\",\"line\":645,\"message\":\"Attempted to set 'type' while a save was pending without forceSet\"},{\"error_id\":43,\"exception_type\":\"ErrorException\",\"filename\":\"src/XF/Mvc/Entity/Entity.php\",\"line\":1276,\"message\":\"Fatal Error: Uncaught XF\\\\PrintableException: Строка 111: Ошибка синтаксиса - Название шаблона: public:newfi_portal in /var/www/forums/newfi/public/src/XF/Mvc/Entity/Entity.php:1276 Stack trace: #0 Command line code(31): XF\\\\Mvc\\\\Entity\\\\Entity->save(true, false) #1 {main} thrown\"},{\"error_id\":44,\"exception_type\":\"ErrorException\",\"filename\":\"src/XF/Db/AbstractStatement.php\",\"line\":225,\"message\":\"Fatal Error: Uncaught XF\\\\Db\\\\InvalidQueryException: MySQL statement prepare error [1064]: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '\\\\'Gram/Support\\\\'' at line 1 in /var/www/forums/newfi/public/src/XF/Db/AbstractStatement.php:225 Stack trace: #0 /var/www/forums/newfi/public/src/XF/Db/Mysqli/Statement.php(207): XF\\\\Db\\\\AbstractStatement->getException('...', 1064, '...') #1 /var/www/forums/newfi/public/src/XF/Db/Mysqli/Statement.php(43): XF\\\\Db\\\\Mysqli\\\\Statement->getException('...', 1064, '...') #2 /var/www/forums/newfi/public/src/XF/Db/Mysqli/Statement.php(61): XF\\\\Db\\\\Mysqli\\\\Statement->prepare() #3 /var/www/forums/newfi/public/src/XF/Db/AbstractAdapter.php(96): XF\\\\Db\\\\Mysqli\\\\Statement->execute() #4 /var/www/forums/newfi/public/src/XF/Db/AbstractAdapter.php(152): XF\\\\Db\\\\AbstractAdapter->query('...', Array) #5 Command line code(1): XF\\\\Db\\\\AbstractAdapter->fetchOne('...') #6 {main} thrown\"},{\"error_id\":45,\"exception_type\":\"XF\\\\PrintableException\",\"filename\":\"src/XF/Mvc/Entity/Entity.php\",\"line\":1276,\"message\":\"Пожалуйста, введите корректный префикс роутинга.\"},{\"error_id\":46,\"exception_type\":\"ErrorException\",\"filename\":\"Command line code\",\"line\":5,\"message\":\"Fatal Error: Uncaught ReflectionException: Method XF\\\\AddOn\\\\AbstractSetup::applyGlobalPermissionByGroup() does not exist in Command line code:5 Stack trace: #0 Command line code(5): ReflectionMethod->__construct('...', '...') #1 {main} thrown\"},{\"error_id\":47,\"exception_type\":\"XF\\\\Db\\\\InvalidQueryException\",\"filename\":\"src/XF/Db/AbstractStatement.php\",\"line\":225,\"message\":\"MySQL statement prepare error [1064]: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'enabled FROM xf_template_modification WHERE addon_id = ? ORDER BY modificatio...' at line 1\"},{\"error_id\":48,\"exception_type\":\"XF\\\\Db\\\\InvalidQueryException\",\"filename\":\"src/XF/Db/AbstractStatement.php\",\"line\":225,\"message\":\"MySQL statement prepare error [1064]: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'enabled FROM xf_template_modification WHERE addon_id = ? ORDER BY modificatio...' at line 1\"},{\"error_id\":49,\"exception_type\":\"XF\\\\Db\\\\Exception\",\"filename\":\"src/XF/Db/AbstractStatement.php\",\"line\":225,\"message\":\"MySQL statement prepare error [1054]: Unknown column 'sub_name_format' in 'SELECT'\"},{\"error_id\":50,\"exception_type\":\"XF\\\\Db\\\\Exception\",\"filename\":\"src/XF/Db/AbstractStatement.php\",\"line\":225,\"message\":\"MySQL statement prepare error [1054]: Unknown column 'display_in_list' in 'SELECT'\"},{\"error_id\":51,\"exception_type\":\"ErrorException\",\"filename\":\"Command line code\",\"line\":32,\"message\":\"Fatal Error: Uncaught ErrorException: [E_WARNING] Trying to access array offset on false in Command line code:32 Stack trace: #0 Command line code(32): XF::handlePhpError(2, '...', '...', 32) #1 {main} thrown\"},{\"error_id\":52,\"exception_type\":\"ErrorException\",\"filename\":\"Command line code\",\"line\":16,\"message\":\"Fatal Error: Uncaught ErrorException: [E_WARNING] Trying to access array offset on false in Command line code:16 Stack trace: #0 Command line code(16): XF::handlePhpError(2, '...', '...', 16) #1 {main} thrown\"},{\"error_id\":53,\"exception_type\":\"ErrorException\",\"filename\":\"src/XF/Db/AbstractStatement.php\",\"line\":225,\"message\":\"Fatal Error: Uncaught XF\\\\Db\\\\Exception: MySQL statement prepare error [1054]: Unknown column 'display_in_list' in 'SELECT' in /var/www/forums/newfi/public/src/XF/Db/AbstractStatement.php:225 Stack trace: #0 /var/www/forums/newfi/public/src/XF/Db/Mysqli/Statement.php(207): XF\\\\Db\\\\AbstractStatement->getException('...', 1054, '...') #1 /var/www/forums/newfi/public/src/XF/Db/Mysqli/Statement.php(43): XF\\\\Db\\\\Mysqli\\\\Statement->getException('...', 1054, '...') #2 /var/www/forums/newfi/public/src/XF/Db/Mysqli/Statement.php(61): XF\\\\Db\\\\Mysqli\\\\Statement->prepare() #3 /var/www/forums/newfi/public/src/XF/Db/AbstractAdapter.php(96): XF\\\\Db\\\\Mysqli\\\\Statement->execute() #4 /var/www/forums/newfi/public/src/XF/Db/AbstractAdapter.php(157): XF\\\\Db\\\\AbstractAdapter->query('...', Array) #5 Command line code(11): XF\\\\Db\\\\AbstractAdapter->fetchAll('...') #6 {main} thrown\"},{\"error_id\":54,\"exception_type\":\"ErrorException\",\"filename\":\"src/XF/Service/ValidateAndSavableTrait.php\",\"line\":36,\"message\":\"Fatal Error: Uncaught LogicException: Cannot save with validation errors. Use validate() to ensure there are no errors. (First error: Пожалуйста, укажите корректную версию.) in /var/www/forums/newfi/public/src/XF/Service/ValidateAndSavableTrait.php:36 Stack trace: #0 Command line code(4): XFRM\\\\Service\\\\ResourceItem\\\\Create->save() #1 /var/www/forums/newfi/public/src/XF.php(950): {closure}() #2 Command line code(4): XF::asVisitor(Object(XFRM\\\\XF\\\\Entity\\\\User), Object(Closure)) #3 {main} thrown\"},{\"error_id\":55,\"exception_type\":\"ErrorException\",\"filename\":\"src/XF/Db/AbstractStatement.php\",\"line\":225,\"message\":\"Fatal Error: Uncaught XF\\\\Db\\\\Exception: MySQL statement prepare error [1054]: Unknown column 'r.category_id' in 'SELECT' in /var/www/forums/newfi/public/src/XF/Db/AbstractStatement.php:225 Stack trace: #0 /var/www/forums/newfi/public/src/XF/Db/Mysqli/Statement.php(207): XF\\\\Db\\\\AbstractStatement->getException('...', 1054, '...') #1 /var/www/forums/newfi/public/src/XF/Db/Mysqli/Statement.php(43): XF\\\\Db\\\\Mysqli\\\\Statement->getException('...', 1054, '...') #2 /var/www/forums/newfi/public/src/XF/Db/Mysqli/Statement.php(61): XF\\\\Db\\\\Mysqli\\\\Statement->prepare() #3 /var/www/forums/newfi/public/src/XF/Db/AbstractAdapter.php(96): XF\\\\Db\\\\Mysqli\\\\Statement->execute() #4 /var/www/forums/newfi/public/src/XF/Db/AbstractAdapter.php(157): XF\\\\Db\\\\AbstractAdapter->query('...', Array) #5 Command line code(3): XF\\\\Db\\\\AbstractAdapter->fetchAll('...') #6 {main} thrown\"}],\"jobs\":[],\"less_sha\":\"afd3c1cdffa489bd730fd5abb9281abd9755f01907e486fe9c88c9d12dd3e045\",\"portal_sha\":\"5e4eae47a54970611a5f08875b2423d69e9bb57d53b3fc888d15d33a52b595ed\"},\"source\":{\"less_sha\":\"afd3c1cdffa489bd730fd5abb9281abd9755f01907e486fe9c88c9d12dd3e045\",\"portal_sha\":\"5e4eae47a54970611a5f08875b2423d69e9bb57d53b3fc888d15d33a52b595ed\",\"xml_sha\":\"a15da1480f674df015cf8443dc4d4cb540334e26cc8fcfc06e4eb34aaa455921\"}}\nNEWFI120_PRODUCTION={\"backup\":{\"article_count\":13,\"article_shas\":{\"Как включиться в сообщество ньюфаундлендов: клубы, встречи и волонтёрство\":\"5e4dbb03ea5c43d525385d860f04245bf9b0025b29166edf16c7a56f99bc0bff\",\"Как выбрать щенка ньюфаундленда: заводчик, документы и решение без спешки\":\"67d36b2b5f5cab248eb4197b35ef129e65c91f3e4f7249ac8a07573f8ccbf80a\",\"Кормление ньюфаундленда: базовые принципы без мифов\":\"c408c88a03a3ff86f8a04e6783864033cd880d96efa1bd9844be430a60803626\",\"Ньюфаундленд у воды: безопасное плавание и начало водной работы\":\"4c4d4bf1c4a6dfb957aed61291da9e9de0deb90bc4e2270fa31865bc306c858d\",\"Ньюфаундленд: что важно знать о породе\":\"72be6b3055218854fd03ce9cb68906a1123141a78022518e32f494dc456baf77\",\"Обучение ньюфаундленда: базовые навыки для большой спокойной собаки\":\"91feda0cb70e3dfa898051798e9df2eedd586283f116ede024ce7588f60f01e5\",\"Ответственное разведение ньюфаундлендов: здоровье, документы и обязательства заводчика\":\"a401a2709585ebfbe628aa0a3d7ee6d4f090c6d3ef2999584223b3ebe0f5daec\",\"Первая выставка с ньюфаундлендом: стандарт, подготовка и хендлинг\":\"786376228e0b4169725271706df6da871412c0eac3bc45ca2e50f390f44cbfe4\",\"Первые дни щенка ньюфаундленда дома: спокойный и безопасный старт\":\"0f118b8b70d9b58fd31c53f580151099f767f233f3fcfaa64c6042bd358fd5d8\",\"Первый год ньюфаундленда: рост, нагрузка и контроль кондиции\":\"579a67772be4c9d8fa75e992db4bb2abb72acb4cf79be4313f05b9552e8460ab\",\"Поездка с ньюфаундлендом: автомобиль, самолёт и документы без сюрпризов\":\"578a877a7705e53b8dc119a3b8f25a2c0b0496a41b5e391a43852e73fd13b554\",\"Тревожные признаки у ньюфаундленда: когда обращаться к ветеринару\":\"97eb612f1cf27b26d65535030bafea491793384821c5dee17006f8db72f5ac98\",\"Шерсть и груминг ньюфаундленда: базовый уход без крайностей\":\"c2b9ec14eebacb5fcc2d72e27ddbcdc33b6f1237fe9dd695d47feb945a820db2\"},\"exists\":true,\"less_sha\":\"afd3c1cdffa489bd730fd5abb9281abd9755f01907e486fe9c88c9d12dd3e045\",\"portal_b64_sha\":\"5e4eae47a54970611a5f08875b2423d69e9bb57d53b3fc888d15d33a52b595ed\",\"portal_sha\":\"5e4eae47a54970611a5f08875b2423d69e9bb57d53b3fc888d15d33a52b595ed\",\"runtime_exists\":true,\"runtime_keys\":[\"articles\",\"portal_b64\"],\"runtime_sha\":\"19d35b4e178955ecec8d217fe250f4d832737efafb1c0d0efeacd91f61795831\",\"templates_exists\":true,\"xml_sha\":\"a15da1480f674df015cf8443dc4d4cb540334e26cc8fcfc06e4eb34aaa455921\"},\"ci_sha\":\"b025d0658da8716a5cf5bbf85e63bb7885ac24715353da58a8bac9c5b7adeef0\",\"classification\":{\"backup_old_bodies_13of13\":true,\"backup_old_source\":true,\"bodies_old_13of13\":true,\"ci_patched\":true,\"content207_marker_count\":0,\"runtime_less_old\":true,\"runtime_portal_old\":true,\"source_old\":true},\"marker_titles\":[],\"ok\":true,\"old_body_matches\":{\"Как включиться в сообщество ньюфаундлендов: клубы, встречи и волонтёрство\":true,\"Как выбрать щенка ньюфаундленда: заводчик, документы и решение без спешки\":true,\"Кормление ньюфаундленда: базовые принципы без мифов\":true,\"Ньюфаундленд у воды: безопасное плавание и начало водной работы\":true,\"Ньюфаундленд: что важно знать о породе\":true,\"Обучение ньюфаундленда: базовые навыки для большой спокойной собаки\":true,\"Ответственное разведение ньюфаундлендов: здоровье, документы и обязательства заводчика\":true,\"Первая выставка с ньюфаундлендом: стандарт, подготовка и хендлинг\":true,\"Первые дни щенка ньюфаундленда дома: спокойный и безопасный старт\":true,\"Первый год ньюфаундленда: рост, нагрузка и контроль кондиции\":true,\"Поездка с ньюфаундлендом: автомобиль, самолёт и документы без сюрпризов\":true,\"Тревожные признаки у ньюфаундленда: когда обращаться к ветеринару\":true,\"Шерсть и груминг ньюфаундленда: базовый уход без крайностей\":true},\"role\":\"production\",\"runtime\":{\"bodies\":{\"Как включиться в сообщество ньюфаундлендов: клубы, встречи и волонтёрство\":{\"bytes\":9206,\"content207\":false,\"sha\":\"5e4dbb03ea5c43d525385d860f04245bf9b0025b29166edf16c7a56f99bc0bff\"},\"Как выбрать щенка ньюфаундленда: заводчик, документы и решение без спешки\":{\"bytes\":6413,\"content207\":false,\"sha\":\"67d36b2b5f5cab248eb4197b35ef129e65c91f3e4f7249ac8a07573f8ccbf80a\"},\"Кормление ньюфаундленда: базовые принципы без мифов\":{\"bytes\":6860,\"content207\":false,\"sha\":\"c408c88a03a3ff86f8a04e6783864033cd880d96efa1bd9844be430a60803626\"},\"Ньюфаундленд у воды: безопасное плавание и начало водной работы\":{\"bytes\":6088,\"content207\":false,\"sha\":\"4c4d4bf1c4a6dfb957aed61291da9e9de0deb90bc4e2270fa31865bc306c858d\"},\"Ньюфаундленд: что важно знать о породе\":{\"bytes\":6764,\"content207\":false,\"sha\":\"72be6b3055218854fd03ce9cb68906a1123141a78022518e32f494dc456baf77\"},\"Обучение ньюфаундленда: базовые навыки для большой спокойной собаки\":{\"bytes\":6492,\"content207\":false,\"sha\":\"91feda0cb70e3dfa898051798e9df2eedd586283f116ede024ce7588f60f01e5\"},\"Ответственное разведение ньюфаундлендов: здоровье, документы и обязательства заводчика\":{\"bytes\":7246,\"content207\":false,\"sha\":\"a401a2709585ebfbe628aa0a3d7ee6d4f090c6d3ef2999584223b3ebe0f5daec\"},\"Первая выставка с ньюфаундлендом: стандарт, подготовка и хендлинг\":{\"bytes\":6270,\"content207\":false,\"sha\":\"786376228e0b4169725271706df6da871412c0eac3bc45ca2e50f390f44cbfe4\"},\"Первые дни щенка ньюфаундленда дома: спокойный и безопасный старт\":{\"bytes\":6356,\"content207\":false,\"sha\":\"0f118b8b70d9b58fd31c53f580151099f767f233f3fcfaa64c6042bd358fd5d8\"},\"Первый год ньюфаундленда: рост, нагрузка и контроль кондиции\":{\"bytes\":6764,\"content207\":false,\"sha\":\"579a67772be4c9d8fa75e992db4bb2abb72acb4cf79be4313f05b9552e8460ab\"},\"Поездка с ньюфаундлендом: автомобиль, самолёт и документы без сюрпризов\":{\"bytes\":7218,\"content207\":false,\"sha\":\"578a877a7705e53b8dc119a3b8f25a2c0b0496a41b5e391a43852e73fd13b554\"},\"Тревожные признаки у ньюфаундленда: когда обращаться к ветеринару\":{\"bytes\":6673,\"content207\":false,\"sha\":\"97eb612f1cf27b26d65535030bafea491793384821c5dee17006f8db72f5ac98\"},\"Шерсть и груминг ньюфаундленда: базовый уход без крайностей\":{\"bytes\":5925,\"content207\":false,\"sha\":\"c2b9ec14eebacb5fcc2d72e27ddbcdc33b6f1237fe9dd695d47feb945a820db2\"}},\"counts\":{\"drafts\":0,\"resources\":13,\"tag_content\":39,\"tags\":33,\"updates\":13,\"versions\":13},\"errors\":[{\"error_id\":1,\"exception_type\":\"TypeError\",\"filename\":\"src/XF/Job/ContentIndexNow.php\",\"line\":51,\"message\":\"XF\\\\Job\\\\ContentIndexNow: method_exists(): Argument #1 ($object_or_class) must be of type object|string, null given\"},{\"error_id\":2,\"exception_type\":\"TypeError\",\"filename\":\"src/XF/Job/ContentIndexNow.php\",\"line\":51,\"message\":\"XF\\\\Job\\\\ContentIndexNow: method_exists(): Argument #1 ($object_or_class) must be of type object|string, null given\"},{\"error_id\":3,\"exception_type\":\"TypeError\",\"filename\":\"src/XF/Job/ContentIndexNow.php\",\"line\":51,\"message\":\"XF\\\\Job\\\\ContentIndexNow: method_exists(): Argument #1 ($object_or_class) must be of type object|string, null given\"},{\"error_id\":4,\"exception_type\":\"TypeError\",\"filename\":\"src/XF/Job/ContentIndexNow.php\",\"line\":51,\"message\":\"XF\\\\Job\\\\ContentIndexNow: method_exists(): Argument #1 ($object_or_class) must be of type object|string, null given\"},{\"error_id\":5,\"exception_type\":\"TypeError\",\"filename\":\"src/XF/Job/ContentIndexNow.php\",\"line\":51,\"message\":\"XF\\\\Job\\\\ContentIndexNow: method_exists(): Argument #1 ($object_or_class) must be of type object|string, null given\"},{\"error_id\":6,\"exception_type\":\"TypeError\",\"filename\":\"src/XF/Job/ContentIndexNow.php\",\"line\":51,\"message\":\"XF\\\\Job\\\\ContentIndexNow: method_exists(): Argument #1 ($object_or_class) must be of type object|string, null given\"},{\"error_id\":7,\"exception_type\":\"TypeError\",\"filename\":\"src/XF/Job/ContentIndexNow.php\",\"line\":51,\"message\":\"XF\\\\Job\\\\ContentIndexNow: method_exists(): Argument #1 ($object_or_class) must be of type object|string, null given\"},{\"error_id\":8,\"exception_type\":\"TypeError\",\"filename\":\"src/XF/Job/ContentIndexNow.php\",\"line\":51,\"message\":\"XF\\\\Job\\\\ContentIndexNow: method_exists(): Argument #1 ($object_or_class) must be of type object|string, null given\"},{\"error_id\":9,\"exception_type\":\"TypeError\",\"filename\":\"src/XF/Job/ContentIndexNow.php\",\"line\":51,\"message\":\"XF\\\\Job\\\\ContentIndexNow: method_exists(): Argument #1 ($object_or_class) must be of type object|string, null given\"},{\"error_id\":10,\"exception_type\":\"TypeError\",\"filename\":\"src/XF/Job/ContentIndexNow.php\",\"line\":51,\"message\":\"XF\\\\Job\\\\ContentIndexNow: method_exists(): Argument #1 ($object_or_class) must be of type object|string, null given\"},{\"error_id\":11,\"exception_type\":\"TypeError\",\"filename\":\"src/XF/Job/ContentIndexNow.php\",\"line\":51,\"message\":\"XF\\\\Job\\\\ContentIndexNow: method_exists(): Argument #1 ($object_or_class) must be of type object|string, null given\"},{\"error_id\":12,\"exception_type\":\"TypeError\",\"filename\":\"src/XF/Job/ContentIndexNow.php\",\"line\":51,\"message\":\"XF\\\\Job\\\\ContentIndexNow: method_exists(): Argument #1 ($object_or_class) must be of type object|string, null given\"},{\"error_id\":13,\"exception_type\":\"TypeError\",\"filename\":\"src/XF/Job/ContentIndexNow.php\",\"line\":51,\"message\":\"XF\\\\Job\\\\ContentIndexNow: method_exists(): Argument #1 ($object_or_class) must be of type object|string, null given\"},{\"error_id\":14,\"exception_type\":\"TypeError\",\"filename\":\"src/XF/Job/ContentIndexNow.php\",\"line\":51,\"message\":\"XF\\\\Job\\\\ContentIndexNow: method_exists(): Argument #1 ($object_or_class) must be of type object|string, null given\"},{\"error_id\":15,\"exception_type\":\"TypeError\",\"filename\":\"src/XF/Job/ContentIndexNow.php\",\"line\":51,\"message\":\"XF\\\\Job\\\\ContentIndexNow: method_exists(): Argument #1 ($object_or_class) must be of type object|string, null given\"},{\"error_id\":16,\"exception_type\":\"TypeError\",\"filename\":\"src/XF/Job/ContentIndexNow.php\",\"line\":51,\"message\":\"XF\\\\Job\\\\ContentIndexNow: method_exists(): Argument #1 ($object_or_class) must be of type object|string, null given\"},{\"error_id\":17,\"exception_type\":\"TypeError\",\"filename\":\"src/XF/Job/ContentIndexNow.php\",\"line\":51,\"message\":\"XF\\\\Job\\\\ContentIndexNow: method_exists(): Argument #1 ($object_or_class) must be of type object|string, null given\"},{\"error_id\":18,\"exception_type\":\"TypeError\",\"filename\":\"src/XF/Job/ContentIndexNow.php\",\"line\":51,\"message\":\"XF\\\\Job\\\\ContentIndexNow: method_exists(): Argument #1 ($object_or_class) must be of type object|string, null given\"},{\"error_id\":19,\"exception_type\":\"TypeError\",\"filename\":\"src/XF/Job/ContentIndexNow.php\",\"line\":51,\"message\":\"XF\\\\Job\\\\ContentIndexNow: method_exists(): Argument #1 ($object_or_class) must be of type object|string, null given\"},{\"error_id\":20,\"exception_type\":\"TypeError\",\"filename\":\"src/XF/Job/ContentIndexNow.php\",\"line\":51,\"message\":\"XF\\\\Job\\\\ContentIndexNow: method_exists(): Argument #1 ($object_or_class) must be of type object|string, null given\"},{\"error_id\":21,\"exception_type\":\"TypeError\",\"filename\":\"src/XF/Job/ContentIndexNow.php\",\"line\":51,\"message\":\"XF\\\\Job\\\\ContentIndexNow: method_exists(): Argument #1 ($object_or_class) must be of type object|string, null given\"},{\"error_id\":22,\"exception_type\":\"TypeError\",\"filename\":\"src/XF/Job/ContentIndexNow.php\",\"line\":51,\"message\":\"XF\\\\Job\\\\ContentIndexNow: method_exists(): Argument #1 ($object_or_class) must be of type object|string, null given\"},{\"error_id\":23,\"exception_type\":\"TypeError\",\"filename\":\"src/XF/Job/ContentIndexNow.php\",\"line\":51,\"message\":\"XF\\\\Job\\\\ContentIndexNow: method_exists(): Argument #1 ($object_or_class) must be of type object|string, null given\"},{\"error_id\":24,\"exception_type\":\"TypeError\",\"filename\":\"src/XF/Job/ContentIndexNow.php\",\"line\":51,\"message\":\"XF\\\\Job\\\\ContentIndexNow: method_exists(): Argument #1 ($object_or_class) must be of type object|string, null given\"},{\"error_id\":25,\"exception_type\":\"TypeError\",\"filename\":\"src/XF/Job/ContentIndexNow.php\",\"line\":51,\"message\":\"XF\\\\Job\\\\ContentIndexNow: method_exists(): Argument #1 ($object_or_class) must be of type object|string, null given\"},{\"error_id\":26,\"exception_type\":\"TypeError\",\"filename\":\"src/XF/Job/ContentIndexNow.php\",\"line\":51,\"message\":\"XF\\\\Job\\\\ContentIndexNow: method_exists(): Argument #1 ($object_or_class) must be of type object|string, null given\"},{\"error_id\":27,\"exception_type\":\"TypeError\",\"filename\":\"src/XF/Job/ContentIndexNow.php\",\"line\":51,\"message\":\"XF\\\\Job\\\\ContentIndexNow: method_exists(): Argument #1 ($object_or_class) must be of type object|string, null given\"},{\"error_id\":28,\"exception_type\":\"TypeError\",\"filename\":\"src/XF/Job/ContentIndexNow.php\",\"line\":51,\"message\":\"XF\\\\Job\\\\ContentIndexNow: method_exists(): Argument #1 ($object_or_class) must be of type object|string, null given\"},{\"error_id\":29,\"exception_type\":\"TypeError\",\"filename\":\"src/XF/Job/ContentIndexNow.php\",\"line\":51,\"message\":\"XF\\\\Job\\\\ContentIndexNow: method_exists(): Argument #1 ($object_or_class) must be of type object|string, null given\"},{\"error_id\":30,\"exception_type\":\"TypeError\",\"filename\":\"src/XF/Job/ContentIndexNow.php\",\"line\":51,\"message\":\"XF\\\\Job\\\\ContentIndexNow: method_exists(): Argument #1 ($object_or_class) must be of type object|string, null given\"},{\"error_id\":31,\"exception_type\":\"TypeError\",\"filename\":\"src/XF/Job/ContentIndexNow.php\",\"line\":51,\"message\":\"XF\\\\Job\\\\ContentIndexNow: method_exists(): Argument #1 ($object_or_class) must be of type object|string, null given\"},{\"error_id\":32,\"exception_type\":\"TypeError\",\"filename\":\"src/XF/Job/ContentIndexNow.php\",\"line\":51,\"message\":\"XF\\\\Job\\\\ContentIndexNow: method_exists(): Argument #1 ($object_or_class) must be of type object|string, null given\"},{\"error_id\":33,\"exception_type\":\"TypeError\",\"filename\":\"src/XF/Job/ContentIndexNow.php\",\"line\":51,\"message\":\"XF\\\\Job\\\\ContentIndexNow: method_exists(): Argument #1 ($object_or_class) must be of type object|string, null given\"},{\"error_id\":34,\"exception_type\":\"TypeError\",\"filename\":\"src/XF/Job/ContentIndexNow.php\",\"line\":51,\"message\":\"XF\\\\Job\\\\ContentIndexNow: method_exists(): Argument #1 ($object_or_class) must be of type object|string, null given\"},{\"error_id\":35,\"exception_type\":\"TypeError\",\"filename\":\"src/XF/Job/ContentIndexNow.php\",\"line\":51,\"message\":\"XF\\\\Job\\\\ContentIndexNow: method_exists(): Argument #1 ($object_or_class) must be of type object|string, null given\"},{\"error_id\":36,\"exception_type\":\"TypeError\",\"filename\":\"src/XF/Job/ContentIndexNow.php\",\"line\":51,\"message\":\"XF\\\\Job\\\\ContentIndexNow: method_exists(): Argument #1 ($object_or_class) must be of type object|string, null given\"},{\"error_id\":37,\"exception_type\":\"TypeError\",\"filename\":\"src/XF/Job/ContentIndexNow.php\",\"line\":51,\"message\":\"XF\\\\Job\\\\ContentIndexNow: method_exists(): Argument #1 ($object_or_class) must be of type object|string, null given\"},{\"error_id\":38,\"exception_type\":\"TypeError\",\"filename\":\"src/XF/Job/ContentIndexNow.php\",\"line\":51,\"message\":\"XF\\\\Job\\\\ContentIndexNow: method_exists(): Argument #1 ($object_or_class) must be of type object|string, null given\"},{\"error_id\":39,\"exception_type\":\"TypeError\",\"filename\":\"src/XF/Job/ContentIndexNow.php\",\"line\":51,\"message\":\"XF\\\\Job\\\\ContentIndexNow: method_exists(): Argument #1 ($object_or_class) must be of type object|string, null given\"},{\"error_id\":40,\"exception_type\":\"TypeError\",\"filename\":\"src/XF/Job/ContentIndexNow.php\",\"line\":51,\"message\":\"XF\\\\Job\\\\ContentIndexNow: method_exists(): Argument #1 ($object_or_class) must be of type object|string, null given\"}],\"jobs\":[],\"less_sha\":\"afd3c1cdffa489bd730fd5abb9281abd9755f01907e486fe9c88c9d12dd3e045\",\"portal_sha\":\"5e4eae47a54970611a5f08875b2423d69e9bb57d53b3fc888d15d33a52b595ed\"},\"source\":{\"less_sha\":\"afd3c1cdffa489bd730fd5abb9281abd9755f01907e486fe9c88c9d12dd3e045\",\"portal_sha\":\"5e4eae47a54970611a5f08875b2423d69e9bb57d53b3fc888d15d33a52b595ed\",\"xml_sha\":\"a15da1480f674df015cf8443dc4d4cb540334e26cc8fcfc06e4eb34aaa455921\"}}\nNEWFI120_SAFE_REPORT={\"changes_made\":false,\"decision\":\"PASS_CONTENT207_ROLLBACK_FAILURE_CENSUS_CAPTURED\",\"git\":{\"branch\":\"implementation/newfi-closed-mvp-20260906\",\"clean\":true,\"head\":\"bcd970b0fa5d0f140aad4a3246773f44409ffe46\",\"remotes\":[{\"head\":\"bcd970b0fa5d0f140aad4a3246773f44409ffe46\",\"remote\":\"origin\"}]},\"production_classification\":{\"backup_old_bodies_13of13\":true,\"backup_old_source\":true,\"bodies_old_13of13\":true,\"ci_patched\":true,\"content207_marker_count\":0,\"runtime_less_old\":true,\"runtime_portal_old\":true,\"source_old\":true},\"staging_classification\":{\"backup_old_bodies_13of13\":true,\"backup_old_source\":true,\"bodies_old_13of13\":true,\"ci_patched\":true,\"content207_marker_count\":0,\"runtime_less_old\":true,\"runtime_portal_old\":true,\"source_old\":true}}\nNEWFI120_DECISION=PASS_CONTENT207_ROLLBACK_FAILURE_CENSUS_CAPTURED\nNEWFI120_NEXT_GATE=TARGETED_RECOVERY_THEN_CONTENT207_RESUME\n"
}