diff --git a/runtime/history/NEWFI-260907-B-PORTAL200-RECOVERY1.json b/runtime/history/NEWFI-260907-B-PORTAL200-RECOVERY1.json index 72a07c66..9a25763d 100644 --- a/runtime/history/NEWFI-260907-B-PORTAL200-RECOVERY1.json +++ b/runtime/history/NEWFI-260907-B-PORTAL200-RECOVERY1.json @@ -2,18 +2,18 @@ "schema_version": 1, "channel": "homelab-runtime", "command_id": "NEWFI-260907-B-PORTAL200-RECOVERY1", - "status": "OK", - "rc": 0, + "status": "FAIL", + "rc": 3, "host": "pve01", "mode": "read-only", - "component": "newfi-portal200-post-apply3-recovery", - "started_at_utc": "2026-09-07T18:41:34Z", - "finished_at_utc": "2026-09-07T18:41:52Z", + "component": "newfi-portal200-post-apply3-recovery-audit", + "started_at_utc": "2026-09-07T18:48:16Z", + "finished_at_utc": "2026-09-07T18:48:22Z", "reference_register_checked": true, "reference_sha256": "5a3d8e5154c41cb582a4e0aca68090be1f0138918bf82131a948df326f9d8d66", "error_register_checked": true, "error_register_sha256": "3b09a553ec0f527ed3afeed4753f52a74ee3036045bbfb3c685e9f8af4ba7ba0", - "command_sha256": "d8eafd855d3bb7704ed58082193c471dc66b330930971af4ecb75ba88e78dee7", + "command_sha256": "baba32af6f6119fa191c84847ed38c87976d751ea963bed6bc3fb8b8ca540818", "duplicate_failed_command_blocked": false, "block_reason": null, "execution_started": true, @@ -21,7 +21,7 @@ "result_contract_valid": true, "result_contract_status": null, "result_contract_error": null, - "command_rc": 0, + "command_rc": 3, "changes_made": false, "rollback_started": false, "rollback_restored": null, @@ -30,9 +30,9 @@ "secrets_included": false, "private_addresses_included": false, "raw_evidence_retained_locally": true, - "raw_evidence_sha256": "4374c49510ffe36bec1cd54e5668650886725d6b65f4634aa7e39c404224074a", - "sanitized_output_sha256": "4374c49510ffe36bec1cd54e5668650886725d6b65f4634aa7e39c404224074a", + "raw_evidence_sha256": "a8f5c783d249feb8116fa28c64c9dd8d374c438f5f5f15f207deeda288427d74", + "sanitized_output_sha256": "a8f5c783d249feb8116fa28c64c9dd8d374c438f5f5f15f207deeda288427d74", "output_truncated_in_json": false, "full_sanitized_output_url": "https://git.gram1.ru/.well-known/homelab-runtime/latest.txt", - "output": "RECOVERY_AUDIT_BEGIN=true\nCOMMAND_ID=NEWFI-260907-B-PORTAL200-RECOVERY1\nMUTATION_SCOPE=NONE_READ_ONLY\nMUTATIONS_PERFORMED=NO\nERROR_REGISTER_CHECK=OK\nERROR_REGISTER_SHA256=3b09a553ec0f527ed3afeed4753f52a74ee3036045bbfb3c685e9f8af4ba7ba0\nREFERENCE_CHECK=OK\nREFERENCE_SHA256=5a3d8e5154c41cb582a4e0aca68090be1f0138918bf82131a948df326f9d8d66\nERROR_REGISTER_CHECK=OK\nREFERENCE_CHECK=OK\nAUTHORITY_CHECK_SCOPE=READABILITY_ONLY_INCIDENTS_NOT_CLOSED\nRUNNER_SHA256=b248a4c32c9cc64e5747e7dce6c7fc0a23f5124a77c71ce72e27a81aceae9d2d\nRUNNER_CONTRACT_EXCERPT=[\"9:from pathlib import Path\",\"11:raw_path, command_id, mode, command_rc = sys.argv[1:]\",\"12:command_rc = int(command_rc)\",\"14:result = {\",\"15:\\\"valid\\\": True,\",\"16:\\\"status\\\": \\\"NOT_APPLICABLE\\\",\",\"17:\\\"changes_made\\\": \\\"false\\\",\",\"18:\\\"rollback_started\\\": \\\"false\\\",\",\"19:\\\"rollback_restored\\\": \\\"null\\\",\",\"20:\\\"mutation_outcome\\\": \\\"NO_MUTATION\\\",\",\"21:\\\"error\\\": \\\"NONE\\\",\",\"25:result = {\",\"26:\\\"valid\\\": False,\",\"27:\\\"status\\\": \\\"UNKNOWN\\\",\",\"28:\\\"changes_made\\\": \\\"unknown\\\",\",\"29:\\\"rollback_started\\\": \\\"unknown\\\",\",\"30:\\\"rollback_restored\\\": \\\"null\\\",\",\"31:\\\"mutation_outcome\\\": \\\"UNKNOWN\\\",\",\"32:\\\"error\\\": \\\"MISSING_CONTRACT\\\",\",\"33:}\",\"34:marker = \\\"HOMELAB_RESULT_CONTRACT=\\\"\",\"35:lines = Path(raw_path).read_bytes().decode(\",\"36:\\\"utf-8\\\",\",\"47:if not isinstance(document, dict):\",\"48:raise ValueError(\\\"contract root is not object\\\")\",\"49:if document.get(\\\"version\\\") != 1:\",\"50:raise ValueError(\\\"unsupported version\\\")\",\"51:if document.get(\\\"command_id\\\") != command_id:\",\"52:raise ValueError(\\\"command_id mismatch\\\")\",\"53:status = document.get(\\\"status\\\")\",\"54:if status not in {\\\"OK\\\", \\\"BLOCKED\\\", \\\"FAIL\\\"}:\",\"55:raise ValueError(\\\"invalid status\\\")\",\"56:changes = document.get(\\\"changes_made\\\")\",\"57:rollback_started = document.get(\\\"rollback_started\\\")\",\"58:rollback_restored = document.get(\\\"rollback_restored\\\")\",\"59:if not isinstance(changes, bool):\",\"60:raise ValueError(\\\"changes_made must be boolean\\\")\",\"61:if not isinstance(rollback_started, bool):\",\"62:raise ValueError(\\\"rollback_started must be boolean\\\")\",\"63:if rollback_restored is not None and not isinstance(\",\"64:rollback_restored,\",\"65:bool,\",\"66:):\",\"67:raise ValueError(\",\"68:\\\"rollback_restored must be boolean or null\\\"\",\"69:)\",\"70:if rollback_restored is True and rollback_started is not True:\",\"71:raise ValueError(\",\"72:\\\"rollback_restored without rollback_started\\\"\",\"73:)\",\"74:if rollback_started is True and changes is not True:\",\"75:raise ValueError(\",\"76:\\\"rollback_started without changes\\\"\",\"77:)\",\"78:if status == \\\"BLOCKED\\\" and (\",\"79:changes\",\"80:or rollback_started\",\"81:or command_rc != 2\",\"82:):\",\"84:\\\"BLOCKED contract inconsistent with rc/mutation\\\"\",\"85:)\",\"86:if status == \\\"OK\\\" and command_rc != 0:\",\"87:raise ValueError(\\\"OK contract inconsistent with rc\\\")\",\"88:if status == \\\"FAIL\\\" and command_rc == 0:\",\"89:raise ValueError(\\\"FAIL contract inconsistent with rc\\\")\",\"91:if not changes:\",\"92:outcome = \\\"NO_MUTATION\\\"\",\"93:elif not rollback_started:\",\"94:outcome = \\\"MUTATED\\\"\",\"95:elif rollback_restored is True:\",\"96:outcome = \\\"ROLLED_BACK\\\"\",\"97:elif rollback_restored is False:\",\"98:outcome = \\\"ROLLBACK_FAILED\\\"\",\"99:else:\",\"102:result = {\",\"103:\\\"valid\\\": True,\",\"104:\\\"status\\\": status,\",\"105:\\\"changes_made\\\": str(changes).lower(),\",\"106:\\\"rollback_started\\\": str(\",\"107:rollback_started\",\"108:).lower(),\",\"109:\\\"rollback_restored\\\": (\",\"110:\\\"null\\\"\",\"111:if rollback_restored is None\",\"112:else str(rollback_restored).lower()\",\"113:),\",\"114:\\\"mutation_outcome\\\": outcome,\",\"117:except Exception as exc:\",\"118:result[\\\"error\\\"] = (\",\"119:\\\"INVALID_CONTRACT:\\\" + type(exc).__name__\",\"120:)\",\"121:elif len(payloads) > 1:\",\"124:print(\\\"\\\\t\\\".join([\",\"125:str(result[\\\"valid\\\"]).lower(),\",\"126:result[\\\"status\\\"],\",\"127:result[\\\"changes_made\\\"],\",\"128:result[\\\"rollback_started\\\"],\",\"129:result[\\\"rollback_restored\\\"],\",\"130:result[\\\"mutation_outcome\\\"],\",\"131:result[\\\"error\\\"],\",\"141:printf '%s\\\\n' \\\\\",\"142:'HOMELAB_RESULT_CONTRACT={\\\"version\\\":1,\\\"command_id\\\":\\\"T1\\\",\\\"status\\\":\\\"BLOCKED\\\",\\\"changes_made\\\":false,\\\"rollback_started\\\":false,\\\"rollback_restored\\\":null}' \\\\\",\"143:>\\\"$tmp\\\"\",\"144:[ \\\"$(read_mutation_contract \\\"$tmp\\\" T1 change 2)\\\" = \\\\\",\"147:printf '%s\\\\n' \\\\\",\"148:'HOMELAB_RESULT_CONTRACT={\\\"version\\\":1,\\\"command_id\\\":\\\"T2\\\",\\\"status\\\":\\\"OK\\\",\\\"changes_made\\\":true,\\\"rollback_started\\\":false,\\\"rollback_restored\\\":null}' \\\\\",\"149:>\\\"$tmp\\\"\",\"150:[ \\\"$(read_mutation_contract \\\"$tmp\\\" T2 change 0)\\\" = \\\\\",\"153:printf '%s\\\\n' \\\\\",\"154:'HOMELAB_RESULT_CONTRACT={\\\"version\\\":1,\\\"command_id\\\":\\\"T3\\\",\\\"status\\\":\\\"FAIL\\\",\\\"changes_made\\\":true,\\\"rollback_started\\\":true,\\\"rollback_restored\\\":true}' \\\\\",\"155:>\\\"$tmp\\\"\",\"156:[ \\\"$(read_mutation_contract \\\"$tmp\\\" T3 change 1)\\\" = \\\\\",\"167:printf '%s\\\\n' \\\\\"]\nRUNNER_DUPLICATE_EXCERPT=[\"246:flock \\\\\",\"287:flock -w 60 9 || {\",\"646:\\\"duplicate_failed_command_blocked\\\": repeat_blocked == \\\"true\\\",\",\"704:echo \\\"DUPLICATE_FAILED_COMMAND_BLOCKED=$REPEAT_BLOCKED\\\"\",\"816:echo \\\"DUPLICATE_FAILED_COMMAND_BLOCKED=$REPEAT_BLOCKED\\\"\"]\nRUNNER_CONTRACT_EXCERPT_SHA256=d63009f27c5447f810615041cc82bed8a85a5a125502257f85df4a3e7fbf0ffc\nAPPLY3_FETCH=OK\nAPPLY3_HISTORY_SHA256=f3ea3fcebd7b182e64db6e963a34f1b90baca0d08477e25e27bf88c48b33611c\nAPPLY3_COMMAND_ID_EXACT=true\nAPPLY3_RELEVANT_MARKERS=[\"COMMAND_ID=NEWFI-260907-PORTAL200-APPLY3\",\"COMPONENT=newfi-portal200-deploy\",\"ROLLBACK_STARTED=unknown\",\"ROLLBACK_RESTORED=null\",\"COMMAND_ID=NEWFI-260907-PORTAL200-APPLY3\",\"PORTAL200_REMAINING_FULL_PRODUCT_COMMANDS_BEFORE=22\",\"PORTAL200_FLOW=candidate->staging-apply->rollback-proof->staging-reapply->git-push->production\",\"PORTAL200_CANDIDATE_IDENTITY=PASS\",\"PORTAL200_ORCHESTRATION_FIXES={\\\"css_href_regex_fixed\\\":true,\\\"failure_status\\\":\\\"FAIL\\\",\\\"prod_http_via_pve01_public_route\\\":true,\\\"staging_503_without_css_links\\\":true}\",\"PORTAL200_GIT_PRESTATE={\\\"branch\\\":\\\"implementation/newfi-closed-mvp-20260906\\\",\\\"clean\\\":true,\\\"head\\\":\\\"06bab5acd124e768f70305b3d7eca2f595871890\\\",\\\"remote\\\":\\\"06bab5acd124e768f70305b3d7eca2f595871890\\\"}\",\"PORTAL200_CLUSTER=PASS\",\"PORTAL200_RUNTIME_HELPER_LINT=PASS\",\"PORTAL200_ERROR_BASELINE={\\\"prod\\\":0,\\\"staging\\\":40}\",\"PORTAL200_HTTP={\\\"bytes\\\":23800,\\\"css_count\\\":2,\\\"css_marker\\\":false,\\\"css_status\\\":[200,200],\\\"forced_css_marker\\\":null,\\\"forced_css_status\\\":null,\\\"html_marker\\\":false,\\\"old_copy\\\":false,\\\"state\\\":\\\"old\\\",\\\"status\\\":503,\\\"target\\\":\\\"staging\\\"}\",\"PORTAL200_RUNTIME={\\\"html_bytes\\\":1116,\\\"html_marker\\\":false,\\\"old_copy\\\":true,\\\"state\\\":\\\"old\\\",\\\"target\\\":\\\"prod\\\"}\",\"PORTAL200_HTTP={\\\"bytes\\\":25939,\\\"css_count\\\":2,\\\"css_marker\\\":false,\\\"css_status\\\":[200,200],\\\"forced_css_marker\\\":null,\\\"forced_css_status\\\":null,\\\"html_marker\\\":false,\\\"old_copy\\\":true,\\\"state\\\":\\\"old\\\",\\\"status\\\":200,\\\"target\\\":\\\"prod\\\"}\",\"PORTAL200_PREFLIGHT=PASS\",\"PORTAL200_FAILURE=IMPORT_FAILED\",\"PORTAL200_HTTP={\\\"bytes\\\":23800,\\\"css_count\\\":2,\\\"css_marker\\\":false,\\\"css_status\\\":[200,200],\\\"forced_css_marker\\\":null,\\\"forced_css_status\\\":null,\\\"html_marker\\\":false,\\\"old_copy\\\":false,\\\"state\\\":\\\"old\\\",\\\"status\\\":503,\\\"target\\\":\\\"staging\\\"}\",\"PORTAL200_FAILURE_STAGING_ROLLBACK=PASS\",\"HOMELAB_RESULT_CONTRACT={\\\"changes_made\\\":false,\\\"command_id\\\":\\\"NEWFI-260907-PORTAL200-APPLY3\\\",\\\"rollback_restored\\\":true,\\\"rollback_started\\\":true,\\\"status\\\":\\\"FAIL\\\",\\\"version\\\":1}\",\"PORTAL200_ROADMAP_REMAINS=22\"]\nNEWFI_GIT_CANDIDATES=[{\"branch\":\"main\",\"dirty_count\":0,\"head\":\"6360c4c919c4c5b3cb2430dd55fe63b6ad595a28\",\"portal_hits\":[],\"remote_head\":\"6360c4c919c4c5b3cb2430dd55fe63b6ad595a28\",\"repo\":\"/root/newfi-portal\",\"score\":3},{\"branch\":\"foundation/newfi-foundation-20260904\",\"dirty_count\":0,\"head\":\"38688a88c3850e43e310e755faa0c6178e203e26\",\"portal_hits\":[],\"remote_head\":\"e4f7b4318e2b0c1aa799edf91f39992c4b3ba378\",\"repo\":\"/root/newfi-portal/.worktrees/foundation-newfi-foundation-20260904\",\"score\":8},{\"branch\":\"implementation/newfi-closed-mvp-20260906\",\"dirty_count\":0,\"head\":\"06bab5acd124e768f70305b3d7eca2f595871890\",\"portal_hits\":[],\"remote_head\":\"06bab5acd124e768f70305b3d7eca2f595871890\",\"repo\":\"/root/newfi-portal/.worktrees/implementation-newfi-closed-mvp-20260906\",\"score\":13}]\nGIT_SELECTED_REPO=/root/newfi-portal/.worktrees/implementation-newfi-closed-mvp-20260906\nGIT_BRANCH=implementation/newfi-closed-mvp-20260906\nGIT_LOCAL_HEAD=06bab5acd124e768f70305b3d7eca2f595871890\nGIT_REMOTE_HEAD=06bab5acd124e768f70305b3d7eca2f595871890\nGIT_DIRTY_COUNT=0\nNEWFI_VM_CANDIDATES=[{\"name\":\"newfi-prod\",\"status\":\"running\",\"vmid\":210}]\nPRODUCTION_XF_ROOT_CANDIDATES=[\"/var/www/forums/newfi/public\"]\nPRODUCTION_XF_ROOT=/var/www/forums/newfi/public\nPRODUCTION_DOCROOT=/var/www/forums/newfi/public\nPRODUCTION_XF_VERSION_DECL=XenForo 2.3.12\nPRODUCTION_PHP_VERSION=8.3.33\nPRODUCTION_SERVICES=nginx=active\\nmariadb=active\\nmysql=active\\nphp8.3-fpm.service=active\nPRODUCTION_ADDON_LIST= -------------- -------------------------- --------------- -------- \\n Add-on ID Title Version Active \\n -------------- -------------------------- --------------- -------- \\n Newfi/Dogs Newfi Dogs 1.0.0 Alpha 1 Yes \\n Newfi/Events Newfi Events 1.0.0 Alpha 1 Yes \\n Newfi/Portal Newfi Portal 1.0.0 Alpha 1 Yes \\n XFMG XenForo Media Gallery 2.3.11 Yes \\n XFRM XenForo Resource Manager 2.3.11 Yes \\n -------------- -------------------------- --------------- -------- \\n\\n Total: 5 add-ons (5 active, 0 inactive)\nPRODUCTION_ADDON_METADATA=[{\"id\":\"Newfi/Dogs\",\"path\":\"/var/www/forums/newfi/public/src/addons/Newfi/Dogs/addon.json\",\"title\":\"Newfi Dogs\",\"version_id\":1000010,\"version_string\":\"1.0.0 Alpha 1\"},{\"id\":\"Newfi/Events\",\"path\":\"/var/www/forums/newfi/public/src/addons/Newfi/Events/addon.json\",\"title\":\"Newfi Events\",\"version_id\":1000010,\"version_string\":\"1.0.0 Alpha 1\"},{\"id\":\"Newfi/Portal\",\"path\":\"/var/www/forums/newfi/public/src/addons/Newfi/Portal/addon.json\",\"title\":\"Newfi Portal\",\"version_id\":1000010,\"version_string\":\"1.0.0 Alpha 1\"}]\nPRODUCTION_PORTAL_ADDON_CANDIDATES=[{\"id\":\"Newfi/Portal\",\"path\":\"/var/www/forums/newfi/public/src/addons/Newfi/Portal/addon.json\",\"title\":\"Newfi Portal\",\"version_id\":1000010,\"version_string\":\"1.0.0 Alpha 1\"}]\nPRODUCTION_DB_CLIENT=/usr/bin/mariadb\nPRODUCTION_XF_DB_SCHEMAS=[\"xf_newfi\"]\nPRODUCTION_ADDON_ROWS=Newfi/Dogs\tNewfi Dogs\t1000010\t1.0.0 Alpha 1\t1\\nNewfi/Events\tNewfi Events\t1000010\t1.0.0 Alpha 1\t1\\nNewfi/Portal\tNewfi Portal\t1000010\t1.0.0 Alpha 1\t1\\nXF\tXenForo\t2031270\t2.3.12\t1\\nXFMG\tXenForo Media Gallery\t902031170\t2.3.11\t1\\nXFRM\tXenForo Resource Manager\t2031170\t2.3.11\t1\nPRODUCTION_BOARD_ACTIVE=1\nPRODUCTION_ERROR_MAX=0\nREFERENCE_NEWFI_URLS=[]\nHTTP_ROUTE_RESULTS=[{\"http\":\"200\",\"rc\":0,\"url\":\"https://newfi.ru/\"},{\"http\":\"000\",\"rc\":6,\"url\":\"http://newfi-staging.gram1.ru/\"}]\nROADMAP_MATCHES=[\"HEAD:config/newfi-brand-assets.json:34: \\\"roadmap_after_pass\\\": 23,\",\"HEAD:config/newfi-brand-assets.json:35: \\\"roadmap_before\\\": 24,\",\"HEAD:config/newfi-style199.json:5: \\\"roadmap_after\\\": 22,\",\"HEAD:config/newfi-style199.json:6: \\\"roadmap_before\\\": 23,\",\"HEAD:docs/checkpoints/private-staging-v1.md:18:Earlier component checkpoints retain their already accepted rollback evidence; FINAL179 does not destructively repeat every add-on uninstall. The only remaining private-staging gate is a fresh backup followed by real clean-contour restore validation. A backup without a successful restore does not count.\",\"HEAD:docs/operations/content-structure.md:26:database AUTO_INCREMENT counter.\",\"HEAD:scripts/verify-brand-assets.py:11:if cfg['roadmap_before']!=24 or cfg['roadmap_after_pass']!=23: raise RuntimeError('counter')\"]\nAPPLY3_INTERNAL_ROLLBACK_PASS_PRESENT=true\nHOLD_REASONS=[\"EXACT_NEWFI_PROD_STAGING_IDENTITY_UNPROVEN\",\"PRODUCTION_URL_NOT_CONFIRMED_BY_REFERENCE\",\"STAGING_URL_NOT_CONFIRMED_BY_REFERENCE\",\"STAGING_HTTP_UNEXPECTED_OR_UNPROVEN\"]\nFINAL_DECISION=HOLD_PORTAL200_APPLY4_PREP_EXACT_NEWFI_PROD_STAGING_IDENTITY_UNPROVEN__PRODUCTION_URL_NOT_CONFIRMED_BY_REFERENCE__STAGING_URL_NOT_CONFIRMED_BY_REFERENCE__STAGING_HTTP_UNEXPECTED_OR_UNPROVEN\nRECOVERY_AUDIT_END=true\n" + "output": "LANEB_COMMAND_ID=NEWFI-260907-B-PORTAL200-RECOVERY1\nERROR_REGISTER_CHECK=OK\nREFERENCE_CHECK=OK\nAUTHORITY_CHECK_SCOPE=READABILITY_ONLY_INCIDENTS_NOT_CLOSED\nLANEB_AUTHORITY={\"ERROR_REGISTER\":{\"bytes\":302058,\"ok\":true,\"sha256\":\"3b09a553ec0f527ed3afeed4753f52a74ee3036045bbfb3c685e9f8af4ba7ba0\"},\"REFERENCE\":{\"bytes\":201129,\"ok\":true,\"sha256\":\"5a3d8e5154c41cb582a4e0aca68090be1f0138918bf82131a948df326f9d8d66\"}}\nLANEB_RUNNER={\"ast_ok\":false,\"contract_for_exact_sha\":{\"changes_made\":\"boolean\",\"command_id\":\"EXACT_MATCH_REQUIRED\",\"rollback_restored\":\"boolean_or_null\",\"rollback_started\":\"boolean\",\"status_enum\":[\"OK\",\"BLOCKED\",\"FAIL\"],\"version\":1},\"exists\":true,\"matches_expected\":true,\"sha256\":\"b248a4c32c9cc64e5747e7dce6c7fc0a23f5124a77c71ce72e27a81aceae9d2d\",\"source_signals\":{\"BLOCKED\":true,\"DUPLICATE_FAILED_COMMAND_BLOCKED\":true,\"FAIL\":true,\"OK\":true,\"changes_made\":true,\"command_id\":true,\"rollback_restored\":true,\"rollback_started\":true,\"status\":true,\"version\":true}}\nLANEB_GIT={\"branch\":\"implementation/newfi-closed-mvp-20260906\",\"clean\":true,\"local_head\":\"06bab5acd124e768f70305b3d7eca2f595871890\",\"portal_files\":{\"src/addons/Newfi/Portal/Pub/Controller/Portal.php\":{\"bytes\":247,\"sha256\":\"53909e753ea5a011550fd280ad1c342a74ca9949be092dfbd95244243cae92f3\"},\"src/addons/Newfi/Portal/Pub/View/Portal.php\":{\"bytes\":79,\"sha256\":\"26e3b77c2c86d4f4a6fd51f0472e3f38e70e14c984ffd8d04dcec39071a2a69f\"},\"src/addons/Newfi/Portal/_data/navigation.xml\":{\"bytes\":281,\"sha256\":\"5d724ef5141438bdd0b9dba6a583d330bc6940b0ace5c21c7a8d5301e7d8d649\"},\"src/addons/Newfi/Portal/_data/phrases.xml\":{\"bytes\":173,\"sha256\":\"15282a06a956bda4e810f6b26b1703676dd766424029cd372ce0fd7832dbe09c\"},\"src/addons/Newfi/Portal/_data/routes.xml\":{\"bytes\":144,\"sha256\":\"9b80ef229bcebb49a5930369bb272ed85367deef66070f432948001096673629\"},\"src/addons/Newfi/Portal/_data/templates.xml\":{\"bytes\":1461,\"sha256\":\"c29c04f8b937284e821c87957653e87c2f6ac014fac30648a0f6b18e84392adf\"},\"src/addons/Newfi/Portal/addon.json\":{\"bytes\":378,\"sha256\":\"288a61044c941107162d045be49ab2e7c844d1586b25378a7289b3c7275010ab\"}},\"remote_head\":\"06bab5acd124e768f70305b3d7eca2f595871890\",\"remote_rc\":0,\"status_rc\":0,\"worktree_exists\":true}\nLANEB_APPLY3_LOCAL_EVIDENCE={\"attempt_dir_exists\":true,\"rollback_pass_marker\":false,\"searched_files\":[{\"bytes\":669,\"name\":\"wrapper.log\",\"sha256\":\"dec036ea985e75d776b2de8c2bede77fe4b4aafa5da33648b2a6b5f79f3dec30\"},{\"bytes\":73,\"name\":\"attempt.txt\",\"sha256\":\"fc3d53a77acceff697ec5111ab3ba411ede195fd9a8e358de5ae94dbc94f4d14\"},{\"bytes\":90,\"name\":\"receipt.txt\",\"sha256\":\"a993d3503cd786e73baa68900ae5bc46eac405da3430cfab0bb5db981e0f1b4b\"}],\"wrapper_exists\":true}\nLANEB_PROD_SNAPSHOT={\"report\":{\"cache\":{\"exists\":true,\"file_count_sampled\":6000,\"portal_named_files\":[\"internal_data/code_cache/templates/l1/s4/public/newfi_events.php\",\"internal_data/code_cache/templates/l1/s4/public/newfi_portal.php\",\"internal_data/code_cache/templates/l1/s4/public/newfi_dogs.php\",\"internal_data/code_cache/templates/l1/s1/public/newfi_events.php\",\"internal_data/code_cache/templates/l1/s1/public/newfi_portal.php\",\"internal_data/code_cache/templates/l1/s1/public/newfi_dogs.php\",\"internal_data/code_cache/templates/l1/s0/public/newfi_events.php\",\"internal_data/code_cache/templates/l1/s0/public/newfi_portal.php\",\"internal_data/code_cache/templates/l1/s0/public/newfi_dogs.php\",\"internal_data/code_cache/templates/l2/s4/public/newfi_events.php\",\"internal_data/code_cache/templates/l2/s4/public/newfi_portal.php\",\"internal_data/code_cache/templates/l2/s4/public/newfi_dogs.php\",\"internal_data/code_cache/templates/l2/s1/public/newfi_events.php\",\"internal_data/code_cache/templates/l2/s1/public/newfi_portal.php\",\"internal_data/code_cache/templates/l2/s1/public/newfi_dogs.php\",\"internal_data/code_cache/templates/l2/s0/public/newfi_events.php\",\"internal_data/code_cache/templates/l2/s0/public/newfi_portal.php\",\"internal_data/code_cache/templates/l2/s0/public/newfi_dogs.php\"]},\"cli\":{\"out\":\"XenForo 2.3.12\",\"rc\":0,\"stderr_nonempty\":false},\"db\":{\"addons\":{\"columns\":[\"addon_id\",\"title\",\"version_string\",\"version_id\",\"active\",\"is_processing\"],\"error\":null,\"ok\":true,\"rows\":[\"Newfi/Dogs\\tNewfi Dogs\\t1.0.0 Alpha 1\\t1000010\\t1\\t0\",\"Newfi/Events\\tNewfi Events\\t1.0.0 Alpha 1\\t1000010\\t1\\t0\",\"Newfi/Portal\\tNewfi Portal\\t1.0.0 Alpha 1\\t1000010\\t1\\t0\",\"XF\\tXenForo\\t2.3.12\\t2031270\\t1\\t0\",\"XFMG\\tXenForo Media Gallery\\t2.3.11\\t902031170\\t1\\t0\",\"XFRM\\tXenForo Resource Manager\\t2.3.11\\t2031170\\t1\\t0\"]},\"errors\":{\"lines\":[\"0\\t0\"],\"ok\":true},\"navigation\":{\"columns\":[\"navigation_id\",\"parent_navigation_id\",\"display_order\",\"navigation_type_id\",\"enabled\",\"addon_id\"],\"error\":null,\"ok\":true,\"rows\":[\"newfiPortal\\t\\t150\\tbasic\\t1\\tNewfi/Portal\"]},\"options\":{\"columns\":[\"option_id\",\"option_value\"],\"error\":null,\"ok\":true,\"rows\":[\"boardActive\\t1\",\"boardUrl\\thttps://newfi.ru\",\"defaultStyleId\\t4\",\"indexRoute\\tportal/\"]},\"phrase_count\":{\"lines\":[\"1\"],\"ok\":true},\"style4\":{\"columns\":[\"style_id\",\"title\",\"user_selectable\"],\"error\":null,\"ok\":true,\"rows\":[\"4\\t\\u041d\\u044c\\u044e\\u0444\\u0414\\u043e\\u043c\\t1\"]},\"templates\":{\"columns\":[\"template_id\",\"type\",\"title\",\"style_id\",\"addon_id\",\"version_id\",\"version_string\",\"template_sha256\"],\"error\":null,\"ok\":true,\"rows\":[\"1610\\tpublic\\tnewfi_portal\\t0\\tNewfi/Portal\\t1000010\\t1.0.0 Alpha 1\\t1f484c8cf6bdeda8fda2974abf8a57f8cc7453fe2a779af7c735afa3b73aa741\"]},\"widgets\":{\"columns\":[\"condition_expression\",\"definition_id\",\"display_condition\",\"options\",\"positions\",\"widget_id\",\"widget_key\"],\"note\":\"NO_ADDON_ID_COLUMN\",\"ok\":true,\"rows\":[]}},\"docroot_exists\":true,\"hostname\":\"newfi-prod\",\"portal_files\":{\"src/addons/Newfi/Portal/Pub/Controller/Portal.php\":{\"bytes\":247,\"sha256\":\"53909e753ea5a011550fd280ad1c342a74ca9949be092dfbd95244243cae92f3\"},\"src/addons/Newfi/Portal/Pub/View/Portal.php\":{\"bytes\":79,\"sha256\":\"26e3b77c2c86d4f4a6fd51f0472e3f38e70e14c984ffd8d04dcec39071a2a69f\"},\"src/addons/Newfi/Portal/_data/navigation.xml\":{\"bytes\":281,\"sha256\":\"5d724ef5141438bdd0b9dba6a583d330bc6940b0ace5c21c7a8d5301e7d8d649\"},\"src/addons/Newfi/Portal/_data/phrases.xml\":{\"bytes\":173,\"sha256\":\"15282a06a956bda4e810f6b26b1703676dd766424029cd372ce0fd7832dbe09c\"},\"src/addons/Newfi/Portal/_data/routes.xml\":{\"bytes\":144,\"sha256\":\"9b80ef229bcebb49a5930369bb272ed85367deef66070f432948001096673629\"},\"src/addons/Newfi/Portal/_data/templates.xml\":{\"bytes\":1461,\"sha256\":\"c29c04f8b937284e821c87957653e87c2f6ac014fac30648a0f6b18e84392adf\"},\"src/addons/Newfi/Portal/addon.json\":{\"bytes\":378,\"sha256\":\"288a61044c941107162d045be49ab2e7c844d1586b25378a7289b3c7275010ab\"}},\"services\":{\"cron\":{\"rc\":0,\"state\":\"active\"},\"failed_units\":[],\"mariadb\":{\"rc\":0,\"state\":\"active\"},\"nginx\":{\"rc\":0,\"state\":\"active\"},\"php8.3-fpm\":{\"rc\":0,\"state\":\"active\"},\"qemu-guest-agent\":{\"rc\":0,\"state\":\"active\"}},\"source\":{\"addon_json\":{\"title\":\"Newfi Portal\",\"version_id\":1000010,\"version_string\":\"1.0.0 Alpha 1\"},\"portal_dir_exists\":true,\"source_derived_id\":\"Newfi/Portal\"}},\"state\":\"COMPLETE\"}\nLANEB_STAGING_SNAPSHOT={\"report\":{\"cache\":{\"exists\":true,\"file_count_sampled\":6000,\"portal_named_files\":[\"internal_data/code_cache/templates/l1/s4/public/newfi_events.php\",\"internal_data/code_cache/templates/l1/s4/public/newfi_portal.php\",\"internal_data/code_cache/templates/l1/s4/public/newfi_dogs.php\",\"internal_data/code_cache/templates/l1/s1/public/newfi_events.php\",\"internal_data/code_cache/templates/l1/s1/public/newfi_portal.php\",\"internal_data/code_cache/templates/l1/s1/public/newfi_dogs.php\",\"internal_data/code_cache/templates/l1/s0/public/newfi_events.php\",\"internal_data/code_cache/templates/l1/s0/public/newfi_portal.php\",\"internal_data/code_cache/templates/l1/s0/public/newfi_dogs.php\",\"internal_data/code_cache/templates/l2/s4/public/newfi_events.php\",\"internal_data/code_cache/templates/l2/s4/public/newfi_portal.php\",\"internal_data/code_cache/templates/l2/s4/public/newfi_dogs.php\",\"internal_data/code_cache/templates/l2/s1/public/newfi_events.php\",\"internal_data/code_cache/templates/l2/s1/public/newfi_portal.php\",\"internal_data/code_cache/templates/l2/s1/public/newfi_dogs.php\",\"internal_data/code_cache/templates/l2/s0/public/newfi_events.php\",\"internal_data/code_cache/templates/l2/s0/public/newfi_portal.php\",\"internal_data/code_cache/templates/l2/s0/public/newfi_dogs.php\"]},\"cli\":{\"out\":\"XenForo 2.3.12\",\"rc\":0,\"stderr_nonempty\":false},\"db\":{\"addons\":{\"columns\":[\"addon_id\",\"title\",\"version_string\",\"version_id\",\"active\",\"is_processing\"],\"error\":null,\"ok\":true,\"rows\":[\"Newfi/Dogs\\tNewfi Dogs\\t1.0.0 Alpha 1\\t1000010\\t1\\t0\",\"Newfi/Events\\tNewfi Events\\t1.0.0 Alpha 1\\t1000010\\t1\\t0\",\"Newfi/Portal\\tNewfi Portal\\t1.0.0 Alpha 1\\t1000010\\t1\\t0\",\"XF\\tXenForo\\t2.3.12\\t2031270\\t1\\t0\",\"XFMG\\tXenForo Media Gallery\\t2.3.11\\t902031170\\t1\\t0\",\"XFRM\\tXenForo Resource Manager\\t2.3.11\\t2031170\\t1\\t0\"]},\"errors\":{\"lines\":[\"40\\t8\"],\"ok\":true},\"navigation\":{\"columns\":[\"navigation_id\",\"parent_navigation_id\",\"display_order\",\"navigation_type_id\",\"enabled\",\"addon_id\"],\"error\":null,\"ok\":true,\"rows\":[\"newfiPortal\\t\\t150\\tbasic\\t1\\tNewfi/Portal\"]},\"options\":{\"columns\":[\"option_id\",\"option_value\"],\"error\":null,\"ok\":true,\"rows\":[\"boardActive\\t0\",\"boardUrl\\thttp://newfi-staging.gram1.ru\",\"defaultStyleId\\t4\",\"indexRoute\\tportal/\"]},\"phrase_count\":{\"lines\":[\"1\"],\"ok\":true},\"style4\":{\"columns\":[\"style_id\",\"title\",\"user_selectable\"],\"error\":null,\"ok\":true,\"rows\":[\"4\\tNewfi Staging\\t1\"]},\"templates\":{\"columns\":[\"template_id\",\"type\",\"title\",\"style_id\",\"addon_id\",\"version_id\",\"version_string\",\"template_sha256\"],\"error\":null,\"ok\":true,\"rows\":[\"1610\\tpublic\\tnewfi_portal\\t0\\tNewfi/Portal\\t1000010\\t1.0.0 Alpha 1\\t1f484c8cf6bdeda8fda2974abf8a57f8cc7453fe2a779af7c735afa3b73aa741\"]},\"widgets\":{\"columns\":[\"condition_expression\",\"definition_id\",\"display_condition\",\"options\",\"positions\",\"widget_id\",\"widget_key\"],\"note\":\"NO_ADDON_ID_COLUMN\",\"ok\":true,\"rows\":[]}},\"docroot_exists\":true,\"hostname\":\"newfi-staging\",\"portal_files\":{\"src/addons/Newfi/Portal/Pub/Controller/Portal.php\":{\"bytes\":247,\"sha256\":\"53909e753ea5a011550fd280ad1c342a74ca9949be092dfbd95244243cae92f3\"},\"src/addons/Newfi/Portal/Pub/View/Portal.php\":{\"bytes\":79,\"sha256\":\"26e3b77c2c86d4f4a6fd51f0472e3f38e70e14c984ffd8d04dcec39071a2a69f\"},\"src/addons/Newfi/Portal/_data/navigation.xml\":{\"bytes\":281,\"sha256\":\"5d724ef5141438bdd0b9dba6a583d330bc6940b0ace5c21c7a8d5301e7d8d649\"},\"src/addons/Newfi/Portal/_data/phrases.xml\":{\"bytes\":173,\"sha256\":\"15282a06a956bda4e810f6b26b1703676dd766424029cd372ce0fd7832dbe09c\"},\"src/addons/Newfi/Portal/_data/routes.xml\":{\"bytes\":144,\"sha256\":\"9b80ef229bcebb49a5930369bb272ed85367deef66070f432948001096673629\"},\"src/addons/Newfi/Portal/_data/templates.xml\":{\"bytes\":1461,\"sha256\":\"c29c04f8b937284e821c87957653e87c2f6ac014fac30648a0f6b18e84392adf\"},\"src/addons/Newfi/Portal/addon.json\":{\"bytes\":378,\"sha256\":\"288a61044c941107162d045be49ab2e7c844d1586b25378a7289b3c7275010ab\"}},\"services\":{\"cron\":{\"rc\":0,\"state\":\"active\"},\"failed_units\":[],\"mariadb\":{\"rc\":0,\"state\":\"active\"},\"nginx\":{\"rc\":0,\"state\":\"active\"},\"php8.3-fpm\":{\"rc\":0,\"state\":\"active\"},\"qemu-guest-agent\":{\"rc\":0,\"state\":\"active\"}},\"source\":{\"addon_json\":{\"title\":\"Newfi Portal\",\"version_id\":1000010,\"version_string\":\"1.0.0 Alpha 1\"},\"portal_dir_exists\":true,\"source_derived_id\":\"Newfi/Portal\"}},\"state\":\"COMPLETE\"}\nLANEB_HTTP={\"prod_forums\":{\"http\":\"200\",\"rc\":0,\"stderr\":\"\"},\"prod_login\":{\"http\":\"200\",\"rc\":0,\"stderr\":\"\"},\"prod_root\":{\"http\":\"200\",\"rc\":0,\"stderr\":\"\"},\"staging_root\":{\"http\":\"000\",\"rc\":6,\"stderr\":\"curl: (6) Could not resolve host: newfi-staging.gram1.ru\\n\"}}\nLANEB_COMPARISON={\"navigation_rows_equal\":true,\"phrase_count_equal\":true,\"prod_addons\":[{\"active\":\"1\",\"addon_id\":\"Newfi/Dogs\",\"is_processing\":\"0\",\"title\":\"Newfi Dogs\",\"version_id\":\"1000010\",\"version_string\":\"1.0.0 Alpha 1\"},{\"active\":\"1\",\"addon_id\":\"Newfi/Events\",\"is_processing\":\"0\",\"title\":\"Newfi Events\",\"version_id\":\"1000010\",\"version_string\":\"1.0.0 Alpha 1\"},{\"active\":\"1\",\"addon_id\":\"Newfi/Portal\",\"is_processing\":\"0\",\"title\":\"Newfi Portal\",\"version_id\":\"1000010\",\"version_string\":\"1.0.0 Alpha 1\"},{\"active\":\"1\",\"addon_id\":\"XF\",\"is_processing\":\"0\",\"title\":\"XenForo\",\"version_id\":\"2031270\",\"version_string\":\"2.3.12\"},{\"active\":\"1\",\"addon_id\":\"XFMG\",\"is_processing\":\"0\",\"title\":\"XenForo Media Gallery\",\"version_id\":\"902031170\",\"version_string\":\"2.3.11\"},{\"active\":\"1\",\"addon_id\":\"XFRM\",\"is_processing\":\"0\",\"title\":\"XenForo Resource Manager\",\"version_id\":\"2031170\",\"version_string\":\"2.3.11\"}],\"prod_errors\":[0,0],\"prod_options\":{\"boardActive\":\"1\",\"boardUrl\":\"https://newfi.ru\",\"defaultStyleId\":\"4\",\"indexRoute\":\"portal/\"},\"prod_source_match\":{\"exact_file_set\":true,\"git_count\":7,\"guest_count\":7,\"hashes_equal\":true},\"source_derived_addon_id\":{\"prod\":\"Newfi/Portal\",\"staging\":\"Newfi/Portal\"},\"stage_addons\":[{\"active\":\"1\",\"addon_id\":\"Newfi/Dogs\",\"is_processing\":\"0\",\"title\":\"Newfi Dogs\",\"version_id\":\"1000010\",\"version_string\":\"1.0.0 Alpha 1\"},{\"active\":\"1\",\"addon_id\":\"Newfi/Events\",\"is_processing\":\"0\",\"title\":\"Newfi Events\",\"version_id\":\"1000010\",\"version_string\":\"1.0.0 Alpha 1\"},{\"active\":\"1\",\"addon_id\":\"Newfi/Portal\",\"is_processing\":\"0\",\"title\":\"Newfi Portal\",\"version_id\":\"1000010\",\"version_string\":\"1.0.0 Alpha 1\"},{\"active\":\"1\",\"addon_id\":\"XF\",\"is_processing\":\"0\",\"title\":\"XenForo\",\"version_id\":\"2031270\",\"version_string\":\"2.3.12\"},{\"active\":\"1\",\"addon_id\":\"XFMG\",\"is_processing\":\"0\",\"title\":\"XenForo Media Gallery\",\"version_id\":\"902031170\",\"version_string\":\"2.3.11\"},{\"active\":\"1\",\"addon_id\":\"XFRM\",\"is_processing\":\"0\",\"title\":\"XenForo Resource Manager\",\"version_id\":\"2031170\",\"version_string\":\"2.3.11\"}],\"stage_errors\":[40,8],\"stage_options\":{\"boardActive\":\"0\",\"boardUrl\":\"http://newfi-staging.gram1.ru\",\"defaultStyleId\":\"4\",\"indexRoute\":\"portal/\"},\"stage_source_match\":{\"exact_file_set\":true,\"git_count\":7,\"guest_count\":7,\"hashes_equal\":true},\"template_rows_equal\":true,\"widget_rows_equal\":true}\nLANEB_HOLD_REASONS=[\"STAGING_ROOT_HTTP_NOT_EXPECTED_503\"]\nLANEB_DECISION=HOLD_STAGING_ROOT_HTTP_NOT_EXPECTED_503\nLANEB_MUTATION_SCOPE=NO_GIT_NO_APPLICATION_NO_DB_NO_PRODUCTION_MUTATION\nLANEB_PUBLICATION=RUNNER_READ_ONLY_EVIDENCE_ONLY\n" } diff --git a/runtime/history/NEWFI-260907-B-PORTAL200-RECOVERY1.txt b/runtime/history/NEWFI-260907-B-PORTAL200-RECOVERY1.txt index 15a2f5cc..cee13b3d 100644 --- a/runtime/history/NEWFI-260907-B-PORTAL200-RECOVERY1.txt +++ b/runtime/history/NEWFI-260907-B-PORTAL200-RECOVERY1.txt @@ -1,22 +1,22 @@ CHAT_OUTPUT_BEGIN COMMAND_ID=NEWFI-260907-B-PORTAL200-RECOVERY1 -STATUS=OK -RC=0 +STATUS=FAIL +RC=3 HOST=pve01 MODE=read-only -COMPONENT=newfi-portal200-post-apply3-recovery +COMPONENT=newfi-portal200-post-apply3-recovery-audit REFERENCE_REGISTER_CHECK=OK REFERENCE_SHA256=5a3d8e5154c41cb582a4e0aca68090be1f0138918bf82131a948df326f9d8d66 ERROR_REGISTER_CHECK=OK ERROR_REGISTER_SHA256=3b09a553ec0f527ed3afeed4753f52a74ee3036045bbfb3c685e9f8af4ba7ba0 -COMMAND_SHA256=d8eafd855d3bb7704ed58082193c471dc66b330930971af4ecb75ba88e78dee7 +COMMAND_SHA256=baba32af6f6119fa191c84847ed38c87976d751ea963bed6bc3fb8b8ca540818 DUPLICATE_FAILED_COMMAND_BLOCKED=false EXECUTION_STARTED=true CHANGE_DECLARED=false RESULT_CONTRACT_VALID=true RESULT_CONTRACT_STATUS=NOT_APPLICABLE RESULT_CONTRACT_ERROR=NONE -COMMAND_RC=0 +COMMAND_RC=3 CHANGES_MADE=false ROLLBACK_STARTED=false ROLLBACK_RESTORED=null @@ -24,56 +24,25 @@ MUTATION_OUTCOME=NO_MUTATION SANITIZED=yes SECRETS_INCLUDED=no PRIVATE_ADDRESSES_INCLUDED=no -RAW_EVIDENCE_SHA256=4374c49510ffe36bec1cd54e5668650886725d6b65f4634aa7e39c404224074a -SANITIZED_OUTPUT_SHA256=4374c49510ffe36bec1cd54e5668650886725d6b65f4634aa7e39c404224074a +RAW_EVIDENCE_SHA256=a8f5c783d249feb8116fa28c64c9dd8d374c438f5f5f15f207deeda288427d74 +SANITIZED_OUTPUT_SHA256=a8f5c783d249feb8116fa28c64c9dd8d374c438f5f5f15f207deeda288427d74 OUTPUT_BEGIN -RECOVERY_AUDIT_BEGIN=true -COMMAND_ID=NEWFI-260907-B-PORTAL200-RECOVERY1 -MUTATION_SCOPE=NONE_READ_ONLY -MUTATIONS_PERFORMED=NO -ERROR_REGISTER_CHECK=OK -ERROR_REGISTER_SHA256=3b09a553ec0f527ed3afeed4753f52a74ee3036045bbfb3c685e9f8af4ba7ba0 -REFERENCE_CHECK=OK -REFERENCE_SHA256=5a3d8e5154c41cb582a4e0aca68090be1f0138918bf82131a948df326f9d8d66 +LANEB_COMMAND_ID=NEWFI-260907-B-PORTAL200-RECOVERY1 ERROR_REGISTER_CHECK=OK REFERENCE_CHECK=OK AUTHORITY_CHECK_SCOPE=READABILITY_ONLY_INCIDENTS_NOT_CLOSED -RUNNER_SHA256=b248a4c32c9cc64e5747e7dce6c7fc0a23f5124a77c71ce72e27a81aceae9d2d -RUNNER_CONTRACT_EXCERPT=["9:from pathlib import Path","11:raw_path, command_id, mode, command_rc = sys.argv[1:]","12:command_rc = int(command_rc)","14:result = {","15:\"valid\": True,","16:\"status\": \"NOT_APPLICABLE\",","17:\"changes_made\": \"false\",","18:\"rollback_started\": \"false\",","19:\"rollback_restored\": \"null\",","20:\"mutation_outcome\": \"NO_MUTATION\",","21:\"error\": \"NONE\",","25:result = {","26:\"valid\": False,","27:\"status\": \"UNKNOWN\",","28:\"changes_made\": \"unknown\",","29:\"rollback_started\": \"unknown\",","30:\"rollback_restored\": \"null\",","31:\"mutation_outcome\": \"UNKNOWN\",","32:\"error\": \"MISSING_CONTRACT\",","33:}","34:marker = \"HOMELAB_RESULT_CONTRACT=\"","35:lines = Path(raw_path).read_bytes().decode(","36:\"utf-8\",","47:if not isinstance(document, dict):","48:raise ValueError(\"contract root is not object\")","49:if document.get(\"version\") != 1:","50:raise ValueError(\"unsupported version\")","51:if document.get(\"command_id\") != command_id:","52:raise ValueError(\"command_id mismatch\")","53:status = document.get(\"status\")","54:if status not in {\"OK\", \"BLOCKED\", \"FAIL\"}:","55:raise ValueError(\"invalid status\")","56:changes = document.get(\"changes_made\")","57:rollback_started = document.get(\"rollback_started\")","58:rollback_restored = document.get(\"rollback_restored\")","59:if not isinstance(changes, bool):","60:raise ValueError(\"changes_made must be boolean\")","61:if not isinstance(rollback_started, bool):","62:raise ValueError(\"rollback_started must be boolean\")","63:if rollback_restored is not None and not isinstance(","64:rollback_restored,","65:bool,","66:):","67:raise ValueError(","68:\"rollback_restored must be boolean or null\"","69:)","70:if rollback_restored is True and rollback_started is not True:","71:raise ValueError(","72:\"rollback_restored without rollback_started\"","73:)","74:if rollback_started is True and changes is not True:","75:raise ValueError(","76:\"rollback_started without changes\"","77:)","78:if status == \"BLOCKED\" and (","79:changes","80:or rollback_started","81:or command_rc != 2","82:):","84:\"BLOCKED contract inconsistent with rc/mutation\"","85:)","86:if status == \"OK\" and command_rc != 0:","87:raise ValueError(\"OK contract inconsistent with rc\")","88:if status == \"FAIL\" and command_rc == 0:","89:raise ValueError(\"FAIL contract inconsistent with rc\")","91:if not changes:","92:outcome = \"NO_MUTATION\"","93:elif not rollback_started:","94:outcome = \"MUTATED\"","95:elif rollback_restored is True:","96:outcome = \"ROLLED_BACK\"","97:elif rollback_restored is False:","98:outcome = \"ROLLBACK_FAILED\"","99:else:","102:result = {","103:\"valid\": True,","104:\"status\": status,","105:\"changes_made\": str(changes).lower(),","106:\"rollback_started\": str(","107:rollback_started","108:).lower(),","109:\"rollback_restored\": (","110:\"null\"","111:if rollback_restored is None","112:else str(rollback_restored).lower()","113:),","114:\"mutation_outcome\": outcome,","117:except Exception as exc:","118:result[\"error\"] = (","119:\"INVALID_CONTRACT:\" + type(exc).__name__","120:)","121:elif len(payloads) > 1:","124:print(\"\\t\".join([","125:str(result[\"valid\"]).lower(),","126:result[\"status\"],","127:result[\"changes_made\"],","128:result[\"rollback_started\"],","129:result[\"rollback_restored\"],","130:result[\"mutation_outcome\"],","131:result[\"error\"],","141:printf '%s\\n' \\","142:'HOMELAB_RESULT_CONTRACT={\"version\":1,\"command_id\":\"T1\",\"status\":\"BLOCKED\",\"changes_made\":false,\"rollback_started\":false,\"rollback_restored\":null}' \\","143:>\"$tmp\"","144:[ \"$(read_mutation_contract \"$tmp\" T1 change 2)\" = \\","147:printf '%s\\n' \\","148:'HOMELAB_RESULT_CONTRACT={\"version\":1,\"command_id\":\"T2\",\"status\":\"OK\",\"changes_made\":true,\"rollback_started\":false,\"rollback_restored\":null}' \\","149:>\"$tmp\"","150:[ \"$(read_mutation_contract \"$tmp\" T2 change 0)\" = \\","153:printf '%s\\n' \\","154:'HOMELAB_RESULT_CONTRACT={\"version\":1,\"command_id\":\"T3\",\"status\":\"FAIL\",\"changes_made\":true,\"rollback_started\":true,\"rollback_restored\":true}' \\","155:>\"$tmp\"","156:[ \"$(read_mutation_contract \"$tmp\" T3 change 1)\" = \\","167:printf '%s\\n' \\"] -RUNNER_DUPLICATE_EXCERPT=["246:flock \\","287:flock -w 60 9 || {","646:\"duplicate_failed_command_blocked\": repeat_blocked == \"true\",","704:echo \"DUPLICATE_FAILED_COMMAND_BLOCKED=$REPEAT_BLOCKED\"","816:echo \"DUPLICATE_FAILED_COMMAND_BLOCKED=$REPEAT_BLOCKED\""] -RUNNER_CONTRACT_EXCERPT_SHA256=d63009f27c5447f810615041cc82bed8a85a5a125502257f85df4a3e7fbf0ffc -APPLY3_FETCH=OK -APPLY3_HISTORY_SHA256=f3ea3fcebd7b182e64db6e963a34f1b90baca0d08477e25e27bf88c48b33611c -APPLY3_COMMAND_ID_EXACT=true -APPLY3_RELEVANT_MARKERS=["COMMAND_ID=NEWFI-260907-PORTAL200-APPLY3","COMPONENT=newfi-portal200-deploy","ROLLBACK_STARTED=unknown","ROLLBACK_RESTORED=null","COMMAND_ID=NEWFI-260907-PORTAL200-APPLY3","PORTAL200_REMAINING_FULL_PRODUCT_COMMANDS_BEFORE=22","PORTAL200_FLOW=candidate->staging-apply->rollback-proof->staging-reapply->git-push->production","PORTAL200_CANDIDATE_IDENTITY=PASS","PORTAL200_ORCHESTRATION_FIXES={\"css_href_regex_fixed\":true,\"failure_status\":\"FAIL\",\"prod_http_via_pve01_public_route\":true,\"staging_503_without_css_links\":true}","PORTAL200_GIT_PRESTATE={\"branch\":\"implementation/newfi-closed-mvp-20260906\",\"clean\":true,\"head\":\"06bab5acd124e768f70305b3d7eca2f595871890\",\"remote\":\"06bab5acd124e768f70305b3d7eca2f595871890\"}","PORTAL200_CLUSTER=PASS","PORTAL200_RUNTIME_HELPER_LINT=PASS","PORTAL200_ERROR_BASELINE={\"prod\":0,\"staging\":40}","PORTAL200_HTTP={\"bytes\":23800,\"css_count\":2,\"css_marker\":false,\"css_status\":[200,200],\"forced_css_marker\":null,\"forced_css_status\":null,\"html_marker\":false,\"old_copy\":false,\"state\":\"old\",\"status\":503,\"target\":\"staging\"}","PORTAL200_RUNTIME={\"html_bytes\":1116,\"html_marker\":false,\"old_copy\":true,\"state\":\"old\",\"target\":\"prod\"}","PORTAL200_HTTP={\"bytes\":25939,\"css_count\":2,\"css_marker\":false,\"css_status\":[200,200],\"forced_css_marker\":null,\"forced_css_status\":null,\"html_marker\":false,\"old_copy\":true,\"state\":\"old\",\"status\":200,\"target\":\"prod\"}","PORTAL200_PREFLIGHT=PASS","PORTAL200_FAILURE=IMPORT_FAILED","PORTAL200_HTTP={\"bytes\":23800,\"css_count\":2,\"css_marker\":false,\"css_status\":[200,200],\"forced_css_marker\":null,\"forced_css_status\":null,\"html_marker\":false,\"old_copy\":false,\"state\":\"old\",\"status\":503,\"target\":\"staging\"}","PORTAL200_FAILURE_STAGING_ROLLBACK=PASS","HOMELAB_RESULT_CONTRACT={\"changes_made\":false,\"command_id\":\"NEWFI-260907-PORTAL200-APPLY3\",\"rollback_restored\":true,\"rollback_started\":true,\"status\":\"FAIL\",\"version\":1}","PORTAL200_ROADMAP_REMAINS=22"] -NEWFI_GIT_CANDIDATES=[{"branch":"main","dirty_count":0,"head":"6360c4c919c4c5b3cb2430dd55fe63b6ad595a28","portal_hits":[],"remote_head":"6360c4c919c4c5b3cb2430dd55fe63b6ad595a28","repo":"/root/newfi-portal","score":3},{"branch":"foundation/newfi-foundation-20260904","dirty_count":0,"head":"38688a88c3850e43e310e755faa0c6178e203e26","portal_hits":[],"remote_head":"e4f7b4318e2b0c1aa799edf91f39992c4b3ba378","repo":"/root/newfi-portal/.worktrees/foundation-newfi-foundation-20260904","score":8},{"branch":"implementation/newfi-closed-mvp-20260906","dirty_count":0,"head":"06bab5acd124e768f70305b3d7eca2f595871890","portal_hits":[],"remote_head":"06bab5acd124e768f70305b3d7eca2f595871890","repo":"/root/newfi-portal/.worktrees/implementation-newfi-closed-mvp-20260906","score":13}] -GIT_SELECTED_REPO=/root/newfi-portal/.worktrees/implementation-newfi-closed-mvp-20260906 -GIT_BRANCH=implementation/newfi-closed-mvp-20260906 -GIT_LOCAL_HEAD=06bab5acd124e768f70305b3d7eca2f595871890 -GIT_REMOTE_HEAD=06bab5acd124e768f70305b3d7eca2f595871890 -GIT_DIRTY_COUNT=0 -NEWFI_VM_CANDIDATES=[{"name":"newfi-prod","status":"running","vmid":210}] -PRODUCTION_XF_ROOT_CANDIDATES=["/var/www/forums/newfi/public"] -PRODUCTION_XF_ROOT=/var/www/forums/newfi/public -PRODUCTION_DOCROOT=/var/www/forums/newfi/public -PRODUCTION_XF_VERSION_DECL=XenForo 2.3.12 -PRODUCTION_PHP_VERSION=8.3.33 -PRODUCTION_SERVICES=nginx=active\nmariadb=active\nmysql=active\nphp8.3-fpm.service=active -PRODUCTION_ADDON_LIST= -------------- -------------------------- --------------- -------- \n Add-on ID Title Version Active \n -------------- -------------------------- --------------- -------- \n Newfi/Dogs Newfi Dogs 1.0.0 Alpha 1 Yes \n Newfi/Events Newfi Events 1.0.0 Alpha 1 Yes \n Newfi/Portal Newfi Portal 1.0.0 Alpha 1 Yes \n XFMG XenForo Media Gallery 2.3.11 Yes \n XFRM XenForo Resource Manager 2.3.11 Yes \n -------------- -------------------------- --------------- -------- \n\n Total: 5 add-ons (5 active, 0 inactive) -PRODUCTION_ADDON_METADATA=[{"id":"Newfi/Dogs","path":"/var/www/forums/newfi/public/src/addons/Newfi/Dogs/addon.json","title":"Newfi Dogs","version_id":1000010,"version_string":"1.0.0 Alpha 1"},{"id":"Newfi/Events","path":"/var/www/forums/newfi/public/src/addons/Newfi/Events/addon.json","title":"Newfi Events","version_id":1000010,"version_string":"1.0.0 Alpha 1"},{"id":"Newfi/Portal","path":"/var/www/forums/newfi/public/src/addons/Newfi/Portal/addon.json","title":"Newfi Portal","version_id":1000010,"version_string":"1.0.0 Alpha 1"}] -PRODUCTION_PORTAL_ADDON_CANDIDATES=[{"id":"Newfi/Portal","path":"/var/www/forums/newfi/public/src/addons/Newfi/Portal/addon.json","title":"Newfi Portal","version_id":1000010,"version_string":"1.0.0 Alpha 1"}] -PRODUCTION_DB_CLIENT=/usr/bin/mariadb -PRODUCTION_XF_DB_SCHEMAS=["xf_newfi"] -PRODUCTION_ADDON_ROWS=Newfi/Dogs Newfi Dogs 1000010 1.0.0 Alpha 1 1\nNewfi/Events Newfi Events 1000010 1.0.0 Alpha 1 1\nNewfi/Portal Newfi Portal 1000010 1.0.0 Alpha 1 1\nXF XenForo 2031270 2.3.12 1\nXFMG XenForo Media Gallery 902031170 2.3.11 1\nXFRM XenForo Resource Manager 2031170 2.3.11 1 -PRODUCTION_BOARD_ACTIVE=1 -PRODUCTION_ERROR_MAX=0 -REFERENCE_NEWFI_URLS=[] -HTTP_ROUTE_RESULTS=[{"http":"200","rc":0,"url":"https://newfi.ru/"},{"http":"000","rc":6,"url":"http://newfi-staging.gram1.ru/"}] -ROADMAP_MATCHES=["HEAD:config/newfi-brand-assets.json:34: \"roadmap_after_pass\": 23,","HEAD:config/newfi-brand-assets.json:35: \"roadmap_before\": 24,","HEAD:config/newfi-style199.json:5: \"roadmap_after\": 22,","HEAD:config/newfi-style199.json:6: \"roadmap_before\": 23,","HEAD:docs/checkpoints/private-staging-v1.md:18:Earlier component checkpoints retain their already accepted rollback evidence; FINAL179 does not destructively repeat every add-on uninstall. The only remaining private-staging gate is a fresh backup followed by real clean-contour restore validation. A backup without a successful restore does not count.","HEAD:docs/operations/content-structure.md:26:database AUTO_INCREMENT counter.","HEAD:scripts/verify-brand-assets.py:11:if cfg['roadmap_before']!=24 or cfg['roadmap_after_pass']!=23: raise RuntimeError('counter')"] -APPLY3_INTERNAL_ROLLBACK_PASS_PRESENT=true -HOLD_REASONS=["EXACT_NEWFI_PROD_STAGING_IDENTITY_UNPROVEN","PRODUCTION_URL_NOT_CONFIRMED_BY_REFERENCE","STAGING_URL_NOT_CONFIRMED_BY_REFERENCE","STAGING_HTTP_UNEXPECTED_OR_UNPROVEN"] -FINAL_DECISION=HOLD_PORTAL200_APPLY4_PREP_EXACT_NEWFI_PROD_STAGING_IDENTITY_UNPROVEN__PRODUCTION_URL_NOT_CONFIRMED_BY_REFERENCE__STAGING_URL_NOT_CONFIRMED_BY_REFERENCE__STAGING_HTTP_UNEXPECTED_OR_UNPROVEN -RECOVERY_AUDIT_END=true +LANEB_AUTHORITY={"ERROR_REGISTER":{"bytes":302058,"ok":true,"sha256":"3b09a553ec0f527ed3afeed4753f52a74ee3036045bbfb3c685e9f8af4ba7ba0"},"REFERENCE":{"bytes":201129,"ok":true,"sha256":"5a3d8e5154c41cb582a4e0aca68090be1f0138918bf82131a948df326f9d8d66"}} +LANEB_RUNNER={"ast_ok":false,"contract_for_exact_sha":{"changes_made":"boolean","command_id":"EXACT_MATCH_REQUIRED","rollback_restored":"boolean_or_null","rollback_started":"boolean","status_enum":["OK","BLOCKED","FAIL"],"version":1},"exists":true,"matches_expected":true,"sha256":"b248a4c32c9cc64e5747e7dce6c7fc0a23f5124a77c71ce72e27a81aceae9d2d","source_signals":{"BLOCKED":true,"DUPLICATE_FAILED_COMMAND_BLOCKED":true,"FAIL":true,"OK":true,"changes_made":true,"command_id":true,"rollback_restored":true,"rollback_started":true,"status":true,"version":true}} +LANEB_GIT={"branch":"implementation/newfi-closed-mvp-20260906","clean":true,"local_head":"06bab5acd124e768f70305b3d7eca2f595871890","portal_files":{"src/addons/Newfi/Portal/Pub/Controller/Portal.php":{"bytes":247,"sha256":"53909e753ea5a011550fd280ad1c342a74ca9949be092dfbd95244243cae92f3"},"src/addons/Newfi/Portal/Pub/View/Portal.php":{"bytes":79,"sha256":"26e3b77c2c86d4f4a6fd51f0472e3f38e70e14c984ffd8d04dcec39071a2a69f"},"src/addons/Newfi/Portal/_data/navigation.xml":{"bytes":281,"sha256":"5d724ef5141438bdd0b9dba6a583d330bc6940b0ace5c21c7a8d5301e7d8d649"},"src/addons/Newfi/Portal/_data/phrases.xml":{"bytes":173,"sha256":"15282a06a956bda4e810f6b26b1703676dd766424029cd372ce0fd7832dbe09c"},"src/addons/Newfi/Portal/_data/routes.xml":{"bytes":144,"sha256":"9b80ef229bcebb49a5930369bb272ed85367deef66070f432948001096673629"},"src/addons/Newfi/Portal/_data/templates.xml":{"bytes":1461,"sha256":"c29c04f8b937284e821c87957653e87c2f6ac014fac30648a0f6b18e84392adf"},"src/addons/Newfi/Portal/addon.json":{"bytes":378,"sha256":"288a61044c941107162d045be49ab2e7c844d1586b25378a7289b3c7275010ab"}},"remote_head":"06bab5acd124e768f70305b3d7eca2f595871890","remote_rc":0,"status_rc":0,"worktree_exists":true} +LANEB_APPLY3_LOCAL_EVIDENCE={"attempt_dir_exists":true,"rollback_pass_marker":false,"searched_files":[{"bytes":669,"name":"wrapper.log","sha256":"dec036ea985e75d776b2de8c2bede77fe4b4aafa5da33648b2a6b5f79f3dec30"},{"bytes":73,"name":"attempt.txt","sha256":"fc3d53a77acceff697ec5111ab3ba411ede195fd9a8e358de5ae94dbc94f4d14"},{"bytes":90,"name":"receipt.txt","sha256":"a993d3503cd786e73baa68900ae5bc46eac405da3430cfab0bb5db981e0f1b4b"}],"wrapper_exists":true} +LANEB_PROD_SNAPSHOT={"report":{"cache":{"exists":true,"file_count_sampled":6000,"portal_named_files":["internal_data/code_cache/templates/l1/s4/public/newfi_events.php","internal_data/code_cache/templates/l1/s4/public/newfi_portal.php","internal_data/code_cache/templates/l1/s4/public/newfi_dogs.php","internal_data/code_cache/templates/l1/s1/public/newfi_events.php","internal_data/code_cache/templates/l1/s1/public/newfi_portal.php","internal_data/code_cache/templates/l1/s1/public/newfi_dogs.php","internal_data/code_cache/templates/l1/s0/public/newfi_events.php","internal_data/code_cache/templates/l1/s0/public/newfi_portal.php","internal_data/code_cache/templates/l1/s0/public/newfi_dogs.php","internal_data/code_cache/templates/l2/s4/public/newfi_events.php","internal_data/code_cache/templates/l2/s4/public/newfi_portal.php","internal_data/code_cache/templates/l2/s4/public/newfi_dogs.php","internal_data/code_cache/templates/l2/s1/public/newfi_events.php","internal_data/code_cache/templates/l2/s1/public/newfi_portal.php","internal_data/code_cache/templates/l2/s1/public/newfi_dogs.php","internal_data/code_cache/templates/l2/s0/public/newfi_events.php","internal_data/code_cache/templates/l2/s0/public/newfi_portal.php","internal_data/code_cache/templates/l2/s0/public/newfi_dogs.php"]},"cli":{"out":"XenForo 2.3.12","rc":0,"stderr_nonempty":false},"db":{"addons":{"columns":["addon_id","title","version_string","version_id","active","is_processing"],"error":null,"ok":true,"rows":["Newfi/Dogs\tNewfi Dogs\t1.0.0 Alpha 1\t1000010\t1\t0","Newfi/Events\tNewfi Events\t1.0.0 Alpha 1\t1000010\t1\t0","Newfi/Portal\tNewfi Portal\t1.0.0 Alpha 1\t1000010\t1\t0","XF\tXenForo\t2.3.12\t2031270\t1\t0","XFMG\tXenForo Media Gallery\t2.3.11\t902031170\t1\t0","XFRM\tXenForo Resource Manager\t2.3.11\t2031170\t1\t0"]},"errors":{"lines":["0\t0"],"ok":true},"navigation":{"columns":["navigation_id","parent_navigation_id","display_order","navigation_type_id","enabled","addon_id"],"error":null,"ok":true,"rows":["newfiPortal\t\t150\tbasic\t1\tNewfi/Portal"]},"options":{"columns":["option_id","option_value"],"error":null,"ok":true,"rows":["boardActive\t1","boardUrl\thttps://newfi.ru","defaultStyleId\t4","indexRoute\tportal/"]},"phrase_count":{"lines":["1"],"ok":true},"style4":{"columns":["style_id","title","user_selectable"],"error":null,"ok":true,"rows":["4\t\u041d\u044c\u044e\u0444\u0414\u043e\u043c\t1"]},"templates":{"columns":["template_id","type","title","style_id","addon_id","version_id","version_string","template_sha256"],"error":null,"ok":true,"rows":["1610\tpublic\tnewfi_portal\t0\tNewfi/Portal\t1000010\t1.0.0 Alpha 1\t1f484c8cf6bdeda8fda2974abf8a57f8cc7453fe2a779af7c735afa3b73aa741"]},"widgets":{"columns":["condition_expression","definition_id","display_condition","options","positions","widget_id","widget_key"],"note":"NO_ADDON_ID_COLUMN","ok":true,"rows":[]}},"docroot_exists":true,"hostname":"newfi-prod","portal_files":{"src/addons/Newfi/Portal/Pub/Controller/Portal.php":{"bytes":247,"sha256":"53909e753ea5a011550fd280ad1c342a74ca9949be092dfbd95244243cae92f3"},"src/addons/Newfi/Portal/Pub/View/Portal.php":{"bytes":79,"sha256":"26e3b77c2c86d4f4a6fd51f0472e3f38e70e14c984ffd8d04dcec39071a2a69f"},"src/addons/Newfi/Portal/_data/navigation.xml":{"bytes":281,"sha256":"5d724ef5141438bdd0b9dba6a583d330bc6940b0ace5c21c7a8d5301e7d8d649"},"src/addons/Newfi/Portal/_data/phrases.xml":{"bytes":173,"sha256":"15282a06a956bda4e810f6b26b1703676dd766424029cd372ce0fd7832dbe09c"},"src/addons/Newfi/Portal/_data/routes.xml":{"bytes":144,"sha256":"9b80ef229bcebb49a5930369bb272ed85367deef66070f432948001096673629"},"src/addons/Newfi/Portal/_data/templates.xml":{"bytes":1461,"sha256":"c29c04f8b937284e821c87957653e87c2f6ac014fac30648a0f6b18e84392adf"},"src/addons/Newfi/Portal/addon.json":{"bytes":378,"sha256":"288a61044c941107162d045be49ab2e7c844d1586b25378a7289b3c7275010ab"}},"services":{"cron":{"rc":0,"state":"active"},"failed_units":[],"mariadb":{"rc":0,"state":"active"},"nginx":{"rc":0,"state":"active"},"php8.3-fpm":{"rc":0,"state":"active"},"qemu-guest-agent":{"rc":0,"state":"active"}},"source":{"addon_json":{"title":"Newfi Portal","version_id":1000010,"version_string":"1.0.0 Alpha 1"},"portal_dir_exists":true,"source_derived_id":"Newfi/Portal"}},"state":"COMPLETE"} +LANEB_STAGING_SNAPSHOT={"report":{"cache":{"exists":true,"file_count_sampled":6000,"portal_named_files":["internal_data/code_cache/templates/l1/s4/public/newfi_events.php","internal_data/code_cache/templates/l1/s4/public/newfi_portal.php","internal_data/code_cache/templates/l1/s4/public/newfi_dogs.php","internal_data/code_cache/templates/l1/s1/public/newfi_events.php","internal_data/code_cache/templates/l1/s1/public/newfi_portal.php","internal_data/code_cache/templates/l1/s1/public/newfi_dogs.php","internal_data/code_cache/templates/l1/s0/public/newfi_events.php","internal_data/code_cache/templates/l1/s0/public/newfi_portal.php","internal_data/code_cache/templates/l1/s0/public/newfi_dogs.php","internal_data/code_cache/templates/l2/s4/public/newfi_events.php","internal_data/code_cache/templates/l2/s4/public/newfi_portal.php","internal_data/code_cache/templates/l2/s4/public/newfi_dogs.php","internal_data/code_cache/templates/l2/s1/public/newfi_events.php","internal_data/code_cache/templates/l2/s1/public/newfi_portal.php","internal_data/code_cache/templates/l2/s1/public/newfi_dogs.php","internal_data/code_cache/templates/l2/s0/public/newfi_events.php","internal_data/code_cache/templates/l2/s0/public/newfi_portal.php","internal_data/code_cache/templates/l2/s0/public/newfi_dogs.php"]},"cli":{"out":"XenForo 2.3.12","rc":0,"stderr_nonempty":false},"db":{"addons":{"columns":["addon_id","title","version_string","version_id","active","is_processing"],"error":null,"ok":true,"rows":["Newfi/Dogs\tNewfi Dogs\t1.0.0 Alpha 1\t1000010\t1\t0","Newfi/Events\tNewfi Events\t1.0.0 Alpha 1\t1000010\t1\t0","Newfi/Portal\tNewfi Portal\t1.0.0 Alpha 1\t1000010\t1\t0","XF\tXenForo\t2.3.12\t2031270\t1\t0","XFMG\tXenForo Media Gallery\t2.3.11\t902031170\t1\t0","XFRM\tXenForo Resource Manager\t2.3.11\t2031170\t1\t0"]},"errors":{"lines":["40\t8"],"ok":true},"navigation":{"columns":["navigation_id","parent_navigation_id","display_order","navigation_type_id","enabled","addon_id"],"error":null,"ok":true,"rows":["newfiPortal\t\t150\tbasic\t1\tNewfi/Portal"]},"options":{"columns":["option_id","option_value"],"error":null,"ok":true,"rows":["boardActive\t0","boardUrl\thttp://newfi-staging.gram1.ru","defaultStyleId\t4","indexRoute\tportal/"]},"phrase_count":{"lines":["1"],"ok":true},"style4":{"columns":["style_id","title","user_selectable"],"error":null,"ok":true,"rows":["4\tNewfi Staging\t1"]},"templates":{"columns":["template_id","type","title","style_id","addon_id","version_id","version_string","template_sha256"],"error":null,"ok":true,"rows":["1610\tpublic\tnewfi_portal\t0\tNewfi/Portal\t1000010\t1.0.0 Alpha 1\t1f484c8cf6bdeda8fda2974abf8a57f8cc7453fe2a779af7c735afa3b73aa741"]},"widgets":{"columns":["condition_expression","definition_id","display_condition","options","positions","widget_id","widget_key"],"note":"NO_ADDON_ID_COLUMN","ok":true,"rows":[]}},"docroot_exists":true,"hostname":"newfi-staging","portal_files":{"src/addons/Newfi/Portal/Pub/Controller/Portal.php":{"bytes":247,"sha256":"53909e753ea5a011550fd280ad1c342a74ca9949be092dfbd95244243cae92f3"},"src/addons/Newfi/Portal/Pub/View/Portal.php":{"bytes":79,"sha256":"26e3b77c2c86d4f4a6fd51f0472e3f38e70e14c984ffd8d04dcec39071a2a69f"},"src/addons/Newfi/Portal/_data/navigation.xml":{"bytes":281,"sha256":"5d724ef5141438bdd0b9dba6a583d330bc6940b0ace5c21c7a8d5301e7d8d649"},"src/addons/Newfi/Portal/_data/phrases.xml":{"bytes":173,"sha256":"15282a06a956bda4e810f6b26b1703676dd766424029cd372ce0fd7832dbe09c"},"src/addons/Newfi/Portal/_data/routes.xml":{"bytes":144,"sha256":"9b80ef229bcebb49a5930369bb272ed85367deef66070f432948001096673629"},"src/addons/Newfi/Portal/_data/templates.xml":{"bytes":1461,"sha256":"c29c04f8b937284e821c87957653e87c2f6ac014fac30648a0f6b18e84392adf"},"src/addons/Newfi/Portal/addon.json":{"bytes":378,"sha256":"288a61044c941107162d045be49ab2e7c844d1586b25378a7289b3c7275010ab"}},"services":{"cron":{"rc":0,"state":"active"},"failed_units":[],"mariadb":{"rc":0,"state":"active"},"nginx":{"rc":0,"state":"active"},"php8.3-fpm":{"rc":0,"state":"active"},"qemu-guest-agent":{"rc":0,"state":"active"}},"source":{"addon_json":{"title":"Newfi Portal","version_id":1000010,"version_string":"1.0.0 Alpha 1"},"portal_dir_exists":true,"source_derived_id":"Newfi/Portal"}},"state":"COMPLETE"} +LANEB_HTTP={"prod_forums":{"http":"200","rc":0,"stderr":""},"prod_login":{"http":"200","rc":0,"stderr":""},"prod_root":{"http":"200","rc":0,"stderr":""},"staging_root":{"http":"000","rc":6,"stderr":"curl: (6) Could not resolve host: newfi-staging.gram1.ru\n"}} +LANEB_COMPARISON={"navigation_rows_equal":true,"phrase_count_equal":true,"prod_addons":[{"active":"1","addon_id":"Newfi/Dogs","is_processing":"0","title":"Newfi Dogs","version_id":"1000010","version_string":"1.0.0 Alpha 1"},{"active":"1","addon_id":"Newfi/Events","is_processing":"0","title":"Newfi Events","version_id":"1000010","version_string":"1.0.0 Alpha 1"},{"active":"1","addon_id":"Newfi/Portal","is_processing":"0","title":"Newfi Portal","version_id":"1000010","version_string":"1.0.0 Alpha 1"},{"active":"1","addon_id":"XF","is_processing":"0","title":"XenForo","version_id":"2031270","version_string":"2.3.12"},{"active":"1","addon_id":"XFMG","is_processing":"0","title":"XenForo Media Gallery","version_id":"902031170","version_string":"2.3.11"},{"active":"1","addon_id":"XFRM","is_processing":"0","title":"XenForo Resource Manager","version_id":"2031170","version_string":"2.3.11"}],"prod_errors":[0,0],"prod_options":{"boardActive":"1","boardUrl":"https://newfi.ru","defaultStyleId":"4","indexRoute":"portal/"},"prod_source_match":{"exact_file_set":true,"git_count":7,"guest_count":7,"hashes_equal":true},"source_derived_addon_id":{"prod":"Newfi/Portal","staging":"Newfi/Portal"},"stage_addons":[{"active":"1","addon_id":"Newfi/Dogs","is_processing":"0","title":"Newfi Dogs","version_id":"1000010","version_string":"1.0.0 Alpha 1"},{"active":"1","addon_id":"Newfi/Events","is_processing":"0","title":"Newfi Events","version_id":"1000010","version_string":"1.0.0 Alpha 1"},{"active":"1","addon_id":"Newfi/Portal","is_processing":"0","title":"Newfi Portal","version_id":"1000010","version_string":"1.0.0 Alpha 1"},{"active":"1","addon_id":"XF","is_processing":"0","title":"XenForo","version_id":"2031270","version_string":"2.3.12"},{"active":"1","addon_id":"XFMG","is_processing":"0","title":"XenForo Media Gallery","version_id":"902031170","version_string":"2.3.11"},{"active":"1","addon_id":"XFRM","is_processing":"0","title":"XenForo Resource Manager","version_id":"2031170","version_string":"2.3.11"}],"stage_errors":[40,8],"stage_options":{"boardActive":"0","boardUrl":"http://newfi-staging.gram1.ru","defaultStyleId":"4","indexRoute":"portal/"},"stage_source_match":{"exact_file_set":true,"git_count":7,"guest_count":7,"hashes_equal":true},"template_rows_equal":true,"widget_rows_equal":true} +LANEB_HOLD_REASONS=["STAGING_ROOT_HTTP_NOT_EXPECTED_503"] +LANEB_DECISION=HOLD_STAGING_ROOT_HTTP_NOT_EXPECTED_503 +LANEB_MUTATION_SCOPE=NO_GIT_NO_APPLICATION_NO_DB_NO_PRODUCTION_MUTATION +LANEB_PUBLICATION=RUNNER_READ_ONLY_EVIDENCE_ONLY OUTPUT_END CHAT_OUTPUT_END diff --git a/runtime/latest.json b/runtime/latest.json index 72a07c66..9a25763d 100644 --- a/runtime/latest.json +++ b/runtime/latest.json @@ -2,18 +2,18 @@ "schema_version": 1, "channel": "homelab-runtime", "command_id": "NEWFI-260907-B-PORTAL200-RECOVERY1", - "status": "OK", - "rc": 0, + "status": "FAIL", + "rc": 3, "host": "pve01", "mode": "read-only", - "component": "newfi-portal200-post-apply3-recovery", - "started_at_utc": "2026-09-07T18:41:34Z", - "finished_at_utc": "2026-09-07T18:41:52Z", + "component": "newfi-portal200-post-apply3-recovery-audit", + "started_at_utc": "2026-09-07T18:48:16Z", + "finished_at_utc": "2026-09-07T18:48:22Z", "reference_register_checked": true, "reference_sha256": "5a3d8e5154c41cb582a4e0aca68090be1f0138918bf82131a948df326f9d8d66", "error_register_checked": true, "error_register_sha256": "3b09a553ec0f527ed3afeed4753f52a74ee3036045bbfb3c685e9f8af4ba7ba0", - "command_sha256": "d8eafd855d3bb7704ed58082193c471dc66b330930971af4ecb75ba88e78dee7", + "command_sha256": "baba32af6f6119fa191c84847ed38c87976d751ea963bed6bc3fb8b8ca540818", "duplicate_failed_command_blocked": false, "block_reason": null, "execution_started": true, @@ -21,7 +21,7 @@ "result_contract_valid": true, "result_contract_status": null, "result_contract_error": null, - "command_rc": 0, + "command_rc": 3, "changes_made": false, "rollback_started": false, "rollback_restored": null, @@ -30,9 +30,9 @@ "secrets_included": false, "private_addresses_included": false, "raw_evidence_retained_locally": true, - "raw_evidence_sha256": "4374c49510ffe36bec1cd54e5668650886725d6b65f4634aa7e39c404224074a", - "sanitized_output_sha256": "4374c49510ffe36bec1cd54e5668650886725d6b65f4634aa7e39c404224074a", + "raw_evidence_sha256": "a8f5c783d249feb8116fa28c64c9dd8d374c438f5f5f15f207deeda288427d74", + "sanitized_output_sha256": "a8f5c783d249feb8116fa28c64c9dd8d374c438f5f5f15f207deeda288427d74", "output_truncated_in_json": false, "full_sanitized_output_url": "https://git.gram1.ru/.well-known/homelab-runtime/latest.txt", - "output": "RECOVERY_AUDIT_BEGIN=true\nCOMMAND_ID=NEWFI-260907-B-PORTAL200-RECOVERY1\nMUTATION_SCOPE=NONE_READ_ONLY\nMUTATIONS_PERFORMED=NO\nERROR_REGISTER_CHECK=OK\nERROR_REGISTER_SHA256=3b09a553ec0f527ed3afeed4753f52a74ee3036045bbfb3c685e9f8af4ba7ba0\nREFERENCE_CHECK=OK\nREFERENCE_SHA256=5a3d8e5154c41cb582a4e0aca68090be1f0138918bf82131a948df326f9d8d66\nERROR_REGISTER_CHECK=OK\nREFERENCE_CHECK=OK\nAUTHORITY_CHECK_SCOPE=READABILITY_ONLY_INCIDENTS_NOT_CLOSED\nRUNNER_SHA256=b248a4c32c9cc64e5747e7dce6c7fc0a23f5124a77c71ce72e27a81aceae9d2d\nRUNNER_CONTRACT_EXCERPT=[\"9:from pathlib import Path\",\"11:raw_path, command_id, mode, command_rc = sys.argv[1:]\",\"12:command_rc = int(command_rc)\",\"14:result = {\",\"15:\\\"valid\\\": True,\",\"16:\\\"status\\\": \\\"NOT_APPLICABLE\\\",\",\"17:\\\"changes_made\\\": \\\"false\\\",\",\"18:\\\"rollback_started\\\": \\\"false\\\",\",\"19:\\\"rollback_restored\\\": \\\"null\\\",\",\"20:\\\"mutation_outcome\\\": \\\"NO_MUTATION\\\",\",\"21:\\\"error\\\": \\\"NONE\\\",\",\"25:result = {\",\"26:\\\"valid\\\": False,\",\"27:\\\"status\\\": \\\"UNKNOWN\\\",\",\"28:\\\"changes_made\\\": \\\"unknown\\\",\",\"29:\\\"rollback_started\\\": \\\"unknown\\\",\",\"30:\\\"rollback_restored\\\": \\\"null\\\",\",\"31:\\\"mutation_outcome\\\": \\\"UNKNOWN\\\",\",\"32:\\\"error\\\": \\\"MISSING_CONTRACT\\\",\",\"33:}\",\"34:marker = \\\"HOMELAB_RESULT_CONTRACT=\\\"\",\"35:lines = Path(raw_path).read_bytes().decode(\",\"36:\\\"utf-8\\\",\",\"47:if not isinstance(document, dict):\",\"48:raise ValueError(\\\"contract root is not object\\\")\",\"49:if document.get(\\\"version\\\") != 1:\",\"50:raise ValueError(\\\"unsupported version\\\")\",\"51:if document.get(\\\"command_id\\\") != command_id:\",\"52:raise ValueError(\\\"command_id mismatch\\\")\",\"53:status = document.get(\\\"status\\\")\",\"54:if status not in {\\\"OK\\\", \\\"BLOCKED\\\", \\\"FAIL\\\"}:\",\"55:raise ValueError(\\\"invalid status\\\")\",\"56:changes = document.get(\\\"changes_made\\\")\",\"57:rollback_started = document.get(\\\"rollback_started\\\")\",\"58:rollback_restored = document.get(\\\"rollback_restored\\\")\",\"59:if not isinstance(changes, bool):\",\"60:raise ValueError(\\\"changes_made must be boolean\\\")\",\"61:if not isinstance(rollback_started, bool):\",\"62:raise ValueError(\\\"rollback_started must be boolean\\\")\",\"63:if rollback_restored is not None and not isinstance(\",\"64:rollback_restored,\",\"65:bool,\",\"66:):\",\"67:raise ValueError(\",\"68:\\\"rollback_restored must be boolean or null\\\"\",\"69:)\",\"70:if rollback_restored is True and rollback_started is not True:\",\"71:raise ValueError(\",\"72:\\\"rollback_restored without rollback_started\\\"\",\"73:)\",\"74:if rollback_started is True and changes is not True:\",\"75:raise ValueError(\",\"76:\\\"rollback_started without changes\\\"\",\"77:)\",\"78:if status == \\\"BLOCKED\\\" and (\",\"79:changes\",\"80:or rollback_started\",\"81:or command_rc != 2\",\"82:):\",\"84:\\\"BLOCKED contract inconsistent with rc/mutation\\\"\",\"85:)\",\"86:if status == \\\"OK\\\" and command_rc != 0:\",\"87:raise ValueError(\\\"OK contract inconsistent with rc\\\")\",\"88:if status == \\\"FAIL\\\" and command_rc == 0:\",\"89:raise ValueError(\\\"FAIL contract inconsistent with rc\\\")\",\"91:if not changes:\",\"92:outcome = \\\"NO_MUTATION\\\"\",\"93:elif not rollback_started:\",\"94:outcome = \\\"MUTATED\\\"\",\"95:elif rollback_restored is True:\",\"96:outcome = \\\"ROLLED_BACK\\\"\",\"97:elif rollback_restored is False:\",\"98:outcome = \\\"ROLLBACK_FAILED\\\"\",\"99:else:\",\"102:result = {\",\"103:\\\"valid\\\": True,\",\"104:\\\"status\\\": status,\",\"105:\\\"changes_made\\\": str(changes).lower(),\",\"106:\\\"rollback_started\\\": str(\",\"107:rollback_started\",\"108:).lower(),\",\"109:\\\"rollback_restored\\\": (\",\"110:\\\"null\\\"\",\"111:if rollback_restored is None\",\"112:else str(rollback_restored).lower()\",\"113:),\",\"114:\\\"mutation_outcome\\\": outcome,\",\"117:except Exception as exc:\",\"118:result[\\\"error\\\"] = (\",\"119:\\\"INVALID_CONTRACT:\\\" + type(exc).__name__\",\"120:)\",\"121:elif len(payloads) > 1:\",\"124:print(\\\"\\\\t\\\".join([\",\"125:str(result[\\\"valid\\\"]).lower(),\",\"126:result[\\\"status\\\"],\",\"127:result[\\\"changes_made\\\"],\",\"128:result[\\\"rollback_started\\\"],\",\"129:result[\\\"rollback_restored\\\"],\",\"130:result[\\\"mutation_outcome\\\"],\",\"131:result[\\\"error\\\"],\",\"141:printf '%s\\\\n' \\\\\",\"142:'HOMELAB_RESULT_CONTRACT={\\\"version\\\":1,\\\"command_id\\\":\\\"T1\\\",\\\"status\\\":\\\"BLOCKED\\\",\\\"changes_made\\\":false,\\\"rollback_started\\\":false,\\\"rollback_restored\\\":null}' \\\\\",\"143:>\\\"$tmp\\\"\",\"144:[ \\\"$(read_mutation_contract \\\"$tmp\\\" T1 change 2)\\\" = \\\\\",\"147:printf '%s\\\\n' \\\\\",\"148:'HOMELAB_RESULT_CONTRACT={\\\"version\\\":1,\\\"command_id\\\":\\\"T2\\\",\\\"status\\\":\\\"OK\\\",\\\"changes_made\\\":true,\\\"rollback_started\\\":false,\\\"rollback_restored\\\":null}' \\\\\",\"149:>\\\"$tmp\\\"\",\"150:[ \\\"$(read_mutation_contract \\\"$tmp\\\" T2 change 0)\\\" = \\\\\",\"153:printf '%s\\\\n' \\\\\",\"154:'HOMELAB_RESULT_CONTRACT={\\\"version\\\":1,\\\"command_id\\\":\\\"T3\\\",\\\"status\\\":\\\"FAIL\\\",\\\"changes_made\\\":true,\\\"rollback_started\\\":true,\\\"rollback_restored\\\":true}' \\\\\",\"155:>\\\"$tmp\\\"\",\"156:[ \\\"$(read_mutation_contract \\\"$tmp\\\" T3 change 1)\\\" = \\\\\",\"167:printf '%s\\\\n' \\\\\"]\nRUNNER_DUPLICATE_EXCERPT=[\"246:flock \\\\\",\"287:flock -w 60 9 || {\",\"646:\\\"duplicate_failed_command_blocked\\\": repeat_blocked == \\\"true\\\",\",\"704:echo \\\"DUPLICATE_FAILED_COMMAND_BLOCKED=$REPEAT_BLOCKED\\\"\",\"816:echo \\\"DUPLICATE_FAILED_COMMAND_BLOCKED=$REPEAT_BLOCKED\\\"\"]\nRUNNER_CONTRACT_EXCERPT_SHA256=d63009f27c5447f810615041cc82bed8a85a5a125502257f85df4a3e7fbf0ffc\nAPPLY3_FETCH=OK\nAPPLY3_HISTORY_SHA256=f3ea3fcebd7b182e64db6e963a34f1b90baca0d08477e25e27bf88c48b33611c\nAPPLY3_COMMAND_ID_EXACT=true\nAPPLY3_RELEVANT_MARKERS=[\"COMMAND_ID=NEWFI-260907-PORTAL200-APPLY3\",\"COMPONENT=newfi-portal200-deploy\",\"ROLLBACK_STARTED=unknown\",\"ROLLBACK_RESTORED=null\",\"COMMAND_ID=NEWFI-260907-PORTAL200-APPLY3\",\"PORTAL200_REMAINING_FULL_PRODUCT_COMMANDS_BEFORE=22\",\"PORTAL200_FLOW=candidate->staging-apply->rollback-proof->staging-reapply->git-push->production\",\"PORTAL200_CANDIDATE_IDENTITY=PASS\",\"PORTAL200_ORCHESTRATION_FIXES={\\\"css_href_regex_fixed\\\":true,\\\"failure_status\\\":\\\"FAIL\\\",\\\"prod_http_via_pve01_public_route\\\":true,\\\"staging_503_without_css_links\\\":true}\",\"PORTAL200_GIT_PRESTATE={\\\"branch\\\":\\\"implementation/newfi-closed-mvp-20260906\\\",\\\"clean\\\":true,\\\"head\\\":\\\"06bab5acd124e768f70305b3d7eca2f595871890\\\",\\\"remote\\\":\\\"06bab5acd124e768f70305b3d7eca2f595871890\\\"}\",\"PORTAL200_CLUSTER=PASS\",\"PORTAL200_RUNTIME_HELPER_LINT=PASS\",\"PORTAL200_ERROR_BASELINE={\\\"prod\\\":0,\\\"staging\\\":40}\",\"PORTAL200_HTTP={\\\"bytes\\\":23800,\\\"css_count\\\":2,\\\"css_marker\\\":false,\\\"css_status\\\":[200,200],\\\"forced_css_marker\\\":null,\\\"forced_css_status\\\":null,\\\"html_marker\\\":false,\\\"old_copy\\\":false,\\\"state\\\":\\\"old\\\",\\\"status\\\":503,\\\"target\\\":\\\"staging\\\"}\",\"PORTAL200_RUNTIME={\\\"html_bytes\\\":1116,\\\"html_marker\\\":false,\\\"old_copy\\\":true,\\\"state\\\":\\\"old\\\",\\\"target\\\":\\\"prod\\\"}\",\"PORTAL200_HTTP={\\\"bytes\\\":25939,\\\"css_count\\\":2,\\\"css_marker\\\":false,\\\"css_status\\\":[200,200],\\\"forced_css_marker\\\":null,\\\"forced_css_status\\\":null,\\\"html_marker\\\":false,\\\"old_copy\\\":true,\\\"state\\\":\\\"old\\\",\\\"status\\\":200,\\\"target\\\":\\\"prod\\\"}\",\"PORTAL200_PREFLIGHT=PASS\",\"PORTAL200_FAILURE=IMPORT_FAILED\",\"PORTAL200_HTTP={\\\"bytes\\\":23800,\\\"css_count\\\":2,\\\"css_marker\\\":false,\\\"css_status\\\":[200,200],\\\"forced_css_marker\\\":null,\\\"forced_css_status\\\":null,\\\"html_marker\\\":false,\\\"old_copy\\\":false,\\\"state\\\":\\\"old\\\",\\\"status\\\":503,\\\"target\\\":\\\"staging\\\"}\",\"PORTAL200_FAILURE_STAGING_ROLLBACK=PASS\",\"HOMELAB_RESULT_CONTRACT={\\\"changes_made\\\":false,\\\"command_id\\\":\\\"NEWFI-260907-PORTAL200-APPLY3\\\",\\\"rollback_restored\\\":true,\\\"rollback_started\\\":true,\\\"status\\\":\\\"FAIL\\\",\\\"version\\\":1}\",\"PORTAL200_ROADMAP_REMAINS=22\"]\nNEWFI_GIT_CANDIDATES=[{\"branch\":\"main\",\"dirty_count\":0,\"head\":\"6360c4c919c4c5b3cb2430dd55fe63b6ad595a28\",\"portal_hits\":[],\"remote_head\":\"6360c4c919c4c5b3cb2430dd55fe63b6ad595a28\",\"repo\":\"/root/newfi-portal\",\"score\":3},{\"branch\":\"foundation/newfi-foundation-20260904\",\"dirty_count\":0,\"head\":\"38688a88c3850e43e310e755faa0c6178e203e26\",\"portal_hits\":[],\"remote_head\":\"e4f7b4318e2b0c1aa799edf91f39992c4b3ba378\",\"repo\":\"/root/newfi-portal/.worktrees/foundation-newfi-foundation-20260904\",\"score\":8},{\"branch\":\"implementation/newfi-closed-mvp-20260906\",\"dirty_count\":0,\"head\":\"06bab5acd124e768f70305b3d7eca2f595871890\",\"portal_hits\":[],\"remote_head\":\"06bab5acd124e768f70305b3d7eca2f595871890\",\"repo\":\"/root/newfi-portal/.worktrees/implementation-newfi-closed-mvp-20260906\",\"score\":13}]\nGIT_SELECTED_REPO=/root/newfi-portal/.worktrees/implementation-newfi-closed-mvp-20260906\nGIT_BRANCH=implementation/newfi-closed-mvp-20260906\nGIT_LOCAL_HEAD=06bab5acd124e768f70305b3d7eca2f595871890\nGIT_REMOTE_HEAD=06bab5acd124e768f70305b3d7eca2f595871890\nGIT_DIRTY_COUNT=0\nNEWFI_VM_CANDIDATES=[{\"name\":\"newfi-prod\",\"status\":\"running\",\"vmid\":210}]\nPRODUCTION_XF_ROOT_CANDIDATES=[\"/var/www/forums/newfi/public\"]\nPRODUCTION_XF_ROOT=/var/www/forums/newfi/public\nPRODUCTION_DOCROOT=/var/www/forums/newfi/public\nPRODUCTION_XF_VERSION_DECL=XenForo 2.3.12\nPRODUCTION_PHP_VERSION=8.3.33\nPRODUCTION_SERVICES=nginx=active\\nmariadb=active\\nmysql=active\\nphp8.3-fpm.service=active\nPRODUCTION_ADDON_LIST= -------------- -------------------------- --------------- -------- \\n Add-on ID Title Version Active \\n -------------- -------------------------- --------------- -------- \\n Newfi/Dogs Newfi Dogs 1.0.0 Alpha 1 Yes \\n Newfi/Events Newfi Events 1.0.0 Alpha 1 Yes \\n Newfi/Portal Newfi Portal 1.0.0 Alpha 1 Yes \\n XFMG XenForo Media Gallery 2.3.11 Yes \\n XFRM XenForo Resource Manager 2.3.11 Yes \\n -------------- -------------------------- --------------- -------- \\n\\n Total: 5 add-ons (5 active, 0 inactive)\nPRODUCTION_ADDON_METADATA=[{\"id\":\"Newfi/Dogs\",\"path\":\"/var/www/forums/newfi/public/src/addons/Newfi/Dogs/addon.json\",\"title\":\"Newfi Dogs\",\"version_id\":1000010,\"version_string\":\"1.0.0 Alpha 1\"},{\"id\":\"Newfi/Events\",\"path\":\"/var/www/forums/newfi/public/src/addons/Newfi/Events/addon.json\",\"title\":\"Newfi Events\",\"version_id\":1000010,\"version_string\":\"1.0.0 Alpha 1\"},{\"id\":\"Newfi/Portal\",\"path\":\"/var/www/forums/newfi/public/src/addons/Newfi/Portal/addon.json\",\"title\":\"Newfi Portal\",\"version_id\":1000010,\"version_string\":\"1.0.0 Alpha 1\"}]\nPRODUCTION_PORTAL_ADDON_CANDIDATES=[{\"id\":\"Newfi/Portal\",\"path\":\"/var/www/forums/newfi/public/src/addons/Newfi/Portal/addon.json\",\"title\":\"Newfi Portal\",\"version_id\":1000010,\"version_string\":\"1.0.0 Alpha 1\"}]\nPRODUCTION_DB_CLIENT=/usr/bin/mariadb\nPRODUCTION_XF_DB_SCHEMAS=[\"xf_newfi\"]\nPRODUCTION_ADDON_ROWS=Newfi/Dogs\tNewfi Dogs\t1000010\t1.0.0 Alpha 1\t1\\nNewfi/Events\tNewfi Events\t1000010\t1.0.0 Alpha 1\t1\\nNewfi/Portal\tNewfi Portal\t1000010\t1.0.0 Alpha 1\t1\\nXF\tXenForo\t2031270\t2.3.12\t1\\nXFMG\tXenForo Media Gallery\t902031170\t2.3.11\t1\\nXFRM\tXenForo Resource Manager\t2031170\t2.3.11\t1\nPRODUCTION_BOARD_ACTIVE=1\nPRODUCTION_ERROR_MAX=0\nREFERENCE_NEWFI_URLS=[]\nHTTP_ROUTE_RESULTS=[{\"http\":\"200\",\"rc\":0,\"url\":\"https://newfi.ru/\"},{\"http\":\"000\",\"rc\":6,\"url\":\"http://newfi-staging.gram1.ru/\"}]\nROADMAP_MATCHES=[\"HEAD:config/newfi-brand-assets.json:34: \\\"roadmap_after_pass\\\": 23,\",\"HEAD:config/newfi-brand-assets.json:35: \\\"roadmap_before\\\": 24,\",\"HEAD:config/newfi-style199.json:5: \\\"roadmap_after\\\": 22,\",\"HEAD:config/newfi-style199.json:6: \\\"roadmap_before\\\": 23,\",\"HEAD:docs/checkpoints/private-staging-v1.md:18:Earlier component checkpoints retain their already accepted rollback evidence; FINAL179 does not destructively repeat every add-on uninstall. The only remaining private-staging gate is a fresh backup followed by real clean-contour restore validation. A backup without a successful restore does not count.\",\"HEAD:docs/operations/content-structure.md:26:database AUTO_INCREMENT counter.\",\"HEAD:scripts/verify-brand-assets.py:11:if cfg['roadmap_before']!=24 or cfg['roadmap_after_pass']!=23: raise RuntimeError('counter')\"]\nAPPLY3_INTERNAL_ROLLBACK_PASS_PRESENT=true\nHOLD_REASONS=[\"EXACT_NEWFI_PROD_STAGING_IDENTITY_UNPROVEN\",\"PRODUCTION_URL_NOT_CONFIRMED_BY_REFERENCE\",\"STAGING_URL_NOT_CONFIRMED_BY_REFERENCE\",\"STAGING_HTTP_UNEXPECTED_OR_UNPROVEN\"]\nFINAL_DECISION=HOLD_PORTAL200_APPLY4_PREP_EXACT_NEWFI_PROD_STAGING_IDENTITY_UNPROVEN__PRODUCTION_URL_NOT_CONFIRMED_BY_REFERENCE__STAGING_URL_NOT_CONFIRMED_BY_REFERENCE__STAGING_HTTP_UNEXPECTED_OR_UNPROVEN\nRECOVERY_AUDIT_END=true\n" + "output": "LANEB_COMMAND_ID=NEWFI-260907-B-PORTAL200-RECOVERY1\nERROR_REGISTER_CHECK=OK\nREFERENCE_CHECK=OK\nAUTHORITY_CHECK_SCOPE=READABILITY_ONLY_INCIDENTS_NOT_CLOSED\nLANEB_AUTHORITY={\"ERROR_REGISTER\":{\"bytes\":302058,\"ok\":true,\"sha256\":\"3b09a553ec0f527ed3afeed4753f52a74ee3036045bbfb3c685e9f8af4ba7ba0\"},\"REFERENCE\":{\"bytes\":201129,\"ok\":true,\"sha256\":\"5a3d8e5154c41cb582a4e0aca68090be1f0138918bf82131a948df326f9d8d66\"}}\nLANEB_RUNNER={\"ast_ok\":false,\"contract_for_exact_sha\":{\"changes_made\":\"boolean\",\"command_id\":\"EXACT_MATCH_REQUIRED\",\"rollback_restored\":\"boolean_or_null\",\"rollback_started\":\"boolean\",\"status_enum\":[\"OK\",\"BLOCKED\",\"FAIL\"],\"version\":1},\"exists\":true,\"matches_expected\":true,\"sha256\":\"b248a4c32c9cc64e5747e7dce6c7fc0a23f5124a77c71ce72e27a81aceae9d2d\",\"source_signals\":{\"BLOCKED\":true,\"DUPLICATE_FAILED_COMMAND_BLOCKED\":true,\"FAIL\":true,\"OK\":true,\"changes_made\":true,\"command_id\":true,\"rollback_restored\":true,\"rollback_started\":true,\"status\":true,\"version\":true}}\nLANEB_GIT={\"branch\":\"implementation/newfi-closed-mvp-20260906\",\"clean\":true,\"local_head\":\"06bab5acd124e768f70305b3d7eca2f595871890\",\"portal_files\":{\"src/addons/Newfi/Portal/Pub/Controller/Portal.php\":{\"bytes\":247,\"sha256\":\"53909e753ea5a011550fd280ad1c342a74ca9949be092dfbd95244243cae92f3\"},\"src/addons/Newfi/Portal/Pub/View/Portal.php\":{\"bytes\":79,\"sha256\":\"26e3b77c2c86d4f4a6fd51f0472e3f38e70e14c984ffd8d04dcec39071a2a69f\"},\"src/addons/Newfi/Portal/_data/navigation.xml\":{\"bytes\":281,\"sha256\":\"5d724ef5141438bdd0b9dba6a583d330bc6940b0ace5c21c7a8d5301e7d8d649\"},\"src/addons/Newfi/Portal/_data/phrases.xml\":{\"bytes\":173,\"sha256\":\"15282a06a956bda4e810f6b26b1703676dd766424029cd372ce0fd7832dbe09c\"},\"src/addons/Newfi/Portal/_data/routes.xml\":{\"bytes\":144,\"sha256\":\"9b80ef229bcebb49a5930369bb272ed85367deef66070f432948001096673629\"},\"src/addons/Newfi/Portal/_data/templates.xml\":{\"bytes\":1461,\"sha256\":\"c29c04f8b937284e821c87957653e87c2f6ac014fac30648a0f6b18e84392adf\"},\"src/addons/Newfi/Portal/addon.json\":{\"bytes\":378,\"sha256\":\"288a61044c941107162d045be49ab2e7c844d1586b25378a7289b3c7275010ab\"}},\"remote_head\":\"06bab5acd124e768f70305b3d7eca2f595871890\",\"remote_rc\":0,\"status_rc\":0,\"worktree_exists\":true}\nLANEB_APPLY3_LOCAL_EVIDENCE={\"attempt_dir_exists\":true,\"rollback_pass_marker\":false,\"searched_files\":[{\"bytes\":669,\"name\":\"wrapper.log\",\"sha256\":\"dec036ea985e75d776b2de8c2bede77fe4b4aafa5da33648b2a6b5f79f3dec30\"},{\"bytes\":73,\"name\":\"attempt.txt\",\"sha256\":\"fc3d53a77acceff697ec5111ab3ba411ede195fd9a8e358de5ae94dbc94f4d14\"},{\"bytes\":90,\"name\":\"receipt.txt\",\"sha256\":\"a993d3503cd786e73baa68900ae5bc46eac405da3430cfab0bb5db981e0f1b4b\"}],\"wrapper_exists\":true}\nLANEB_PROD_SNAPSHOT={\"report\":{\"cache\":{\"exists\":true,\"file_count_sampled\":6000,\"portal_named_files\":[\"internal_data/code_cache/templates/l1/s4/public/newfi_events.php\",\"internal_data/code_cache/templates/l1/s4/public/newfi_portal.php\",\"internal_data/code_cache/templates/l1/s4/public/newfi_dogs.php\",\"internal_data/code_cache/templates/l1/s1/public/newfi_events.php\",\"internal_data/code_cache/templates/l1/s1/public/newfi_portal.php\",\"internal_data/code_cache/templates/l1/s1/public/newfi_dogs.php\",\"internal_data/code_cache/templates/l1/s0/public/newfi_events.php\",\"internal_data/code_cache/templates/l1/s0/public/newfi_portal.php\",\"internal_data/code_cache/templates/l1/s0/public/newfi_dogs.php\",\"internal_data/code_cache/templates/l2/s4/public/newfi_events.php\",\"internal_data/code_cache/templates/l2/s4/public/newfi_portal.php\",\"internal_data/code_cache/templates/l2/s4/public/newfi_dogs.php\",\"internal_data/code_cache/templates/l2/s1/public/newfi_events.php\",\"internal_data/code_cache/templates/l2/s1/public/newfi_portal.php\",\"internal_data/code_cache/templates/l2/s1/public/newfi_dogs.php\",\"internal_data/code_cache/templates/l2/s0/public/newfi_events.php\",\"internal_data/code_cache/templates/l2/s0/public/newfi_portal.php\",\"internal_data/code_cache/templates/l2/s0/public/newfi_dogs.php\"]},\"cli\":{\"out\":\"XenForo 2.3.12\",\"rc\":0,\"stderr_nonempty\":false},\"db\":{\"addons\":{\"columns\":[\"addon_id\",\"title\",\"version_string\",\"version_id\",\"active\",\"is_processing\"],\"error\":null,\"ok\":true,\"rows\":[\"Newfi/Dogs\\tNewfi Dogs\\t1.0.0 Alpha 1\\t1000010\\t1\\t0\",\"Newfi/Events\\tNewfi Events\\t1.0.0 Alpha 1\\t1000010\\t1\\t0\",\"Newfi/Portal\\tNewfi Portal\\t1.0.0 Alpha 1\\t1000010\\t1\\t0\",\"XF\\tXenForo\\t2.3.12\\t2031270\\t1\\t0\",\"XFMG\\tXenForo Media Gallery\\t2.3.11\\t902031170\\t1\\t0\",\"XFRM\\tXenForo Resource Manager\\t2.3.11\\t2031170\\t1\\t0\"]},\"errors\":{\"lines\":[\"0\\t0\"],\"ok\":true},\"navigation\":{\"columns\":[\"navigation_id\",\"parent_navigation_id\",\"display_order\",\"navigation_type_id\",\"enabled\",\"addon_id\"],\"error\":null,\"ok\":true,\"rows\":[\"newfiPortal\\t\\t150\\tbasic\\t1\\tNewfi/Portal\"]},\"options\":{\"columns\":[\"option_id\",\"option_value\"],\"error\":null,\"ok\":true,\"rows\":[\"boardActive\\t1\",\"boardUrl\\thttps://newfi.ru\",\"defaultStyleId\\t4\",\"indexRoute\\tportal/\"]},\"phrase_count\":{\"lines\":[\"1\"],\"ok\":true},\"style4\":{\"columns\":[\"style_id\",\"title\",\"user_selectable\"],\"error\":null,\"ok\":true,\"rows\":[\"4\\t\\u041d\\u044c\\u044e\\u0444\\u0414\\u043e\\u043c\\t1\"]},\"templates\":{\"columns\":[\"template_id\",\"type\",\"title\",\"style_id\",\"addon_id\",\"version_id\",\"version_string\",\"template_sha256\"],\"error\":null,\"ok\":true,\"rows\":[\"1610\\tpublic\\tnewfi_portal\\t0\\tNewfi/Portal\\t1000010\\t1.0.0 Alpha 1\\t1f484c8cf6bdeda8fda2974abf8a57f8cc7453fe2a779af7c735afa3b73aa741\"]},\"widgets\":{\"columns\":[\"condition_expression\",\"definition_id\",\"display_condition\",\"options\",\"positions\",\"widget_id\",\"widget_key\"],\"note\":\"NO_ADDON_ID_COLUMN\",\"ok\":true,\"rows\":[]}},\"docroot_exists\":true,\"hostname\":\"newfi-prod\",\"portal_files\":{\"src/addons/Newfi/Portal/Pub/Controller/Portal.php\":{\"bytes\":247,\"sha256\":\"53909e753ea5a011550fd280ad1c342a74ca9949be092dfbd95244243cae92f3\"},\"src/addons/Newfi/Portal/Pub/View/Portal.php\":{\"bytes\":79,\"sha256\":\"26e3b77c2c86d4f4a6fd51f0472e3f38e70e14c984ffd8d04dcec39071a2a69f\"},\"src/addons/Newfi/Portal/_data/navigation.xml\":{\"bytes\":281,\"sha256\":\"5d724ef5141438bdd0b9dba6a583d330bc6940b0ace5c21c7a8d5301e7d8d649\"},\"src/addons/Newfi/Portal/_data/phrases.xml\":{\"bytes\":173,\"sha256\":\"15282a06a956bda4e810f6b26b1703676dd766424029cd372ce0fd7832dbe09c\"},\"src/addons/Newfi/Portal/_data/routes.xml\":{\"bytes\":144,\"sha256\":\"9b80ef229bcebb49a5930369bb272ed85367deef66070f432948001096673629\"},\"src/addons/Newfi/Portal/_data/templates.xml\":{\"bytes\":1461,\"sha256\":\"c29c04f8b937284e821c87957653e87c2f6ac014fac30648a0f6b18e84392adf\"},\"src/addons/Newfi/Portal/addon.json\":{\"bytes\":378,\"sha256\":\"288a61044c941107162d045be49ab2e7c844d1586b25378a7289b3c7275010ab\"}},\"services\":{\"cron\":{\"rc\":0,\"state\":\"active\"},\"failed_units\":[],\"mariadb\":{\"rc\":0,\"state\":\"active\"},\"nginx\":{\"rc\":0,\"state\":\"active\"},\"php8.3-fpm\":{\"rc\":0,\"state\":\"active\"},\"qemu-guest-agent\":{\"rc\":0,\"state\":\"active\"}},\"source\":{\"addon_json\":{\"title\":\"Newfi Portal\",\"version_id\":1000010,\"version_string\":\"1.0.0 Alpha 1\"},\"portal_dir_exists\":true,\"source_derived_id\":\"Newfi/Portal\"}},\"state\":\"COMPLETE\"}\nLANEB_STAGING_SNAPSHOT={\"report\":{\"cache\":{\"exists\":true,\"file_count_sampled\":6000,\"portal_named_files\":[\"internal_data/code_cache/templates/l1/s4/public/newfi_events.php\",\"internal_data/code_cache/templates/l1/s4/public/newfi_portal.php\",\"internal_data/code_cache/templates/l1/s4/public/newfi_dogs.php\",\"internal_data/code_cache/templates/l1/s1/public/newfi_events.php\",\"internal_data/code_cache/templates/l1/s1/public/newfi_portal.php\",\"internal_data/code_cache/templates/l1/s1/public/newfi_dogs.php\",\"internal_data/code_cache/templates/l1/s0/public/newfi_events.php\",\"internal_data/code_cache/templates/l1/s0/public/newfi_portal.php\",\"internal_data/code_cache/templates/l1/s0/public/newfi_dogs.php\",\"internal_data/code_cache/templates/l2/s4/public/newfi_events.php\",\"internal_data/code_cache/templates/l2/s4/public/newfi_portal.php\",\"internal_data/code_cache/templates/l2/s4/public/newfi_dogs.php\",\"internal_data/code_cache/templates/l2/s1/public/newfi_events.php\",\"internal_data/code_cache/templates/l2/s1/public/newfi_portal.php\",\"internal_data/code_cache/templates/l2/s1/public/newfi_dogs.php\",\"internal_data/code_cache/templates/l2/s0/public/newfi_events.php\",\"internal_data/code_cache/templates/l2/s0/public/newfi_portal.php\",\"internal_data/code_cache/templates/l2/s0/public/newfi_dogs.php\"]},\"cli\":{\"out\":\"XenForo 2.3.12\",\"rc\":0,\"stderr_nonempty\":false},\"db\":{\"addons\":{\"columns\":[\"addon_id\",\"title\",\"version_string\",\"version_id\",\"active\",\"is_processing\"],\"error\":null,\"ok\":true,\"rows\":[\"Newfi/Dogs\\tNewfi Dogs\\t1.0.0 Alpha 1\\t1000010\\t1\\t0\",\"Newfi/Events\\tNewfi Events\\t1.0.0 Alpha 1\\t1000010\\t1\\t0\",\"Newfi/Portal\\tNewfi Portal\\t1.0.0 Alpha 1\\t1000010\\t1\\t0\",\"XF\\tXenForo\\t2.3.12\\t2031270\\t1\\t0\",\"XFMG\\tXenForo Media Gallery\\t2.3.11\\t902031170\\t1\\t0\",\"XFRM\\tXenForo Resource Manager\\t2.3.11\\t2031170\\t1\\t0\"]},\"errors\":{\"lines\":[\"40\\t8\"],\"ok\":true},\"navigation\":{\"columns\":[\"navigation_id\",\"parent_navigation_id\",\"display_order\",\"navigation_type_id\",\"enabled\",\"addon_id\"],\"error\":null,\"ok\":true,\"rows\":[\"newfiPortal\\t\\t150\\tbasic\\t1\\tNewfi/Portal\"]},\"options\":{\"columns\":[\"option_id\",\"option_value\"],\"error\":null,\"ok\":true,\"rows\":[\"boardActive\\t0\",\"boardUrl\\thttp://newfi-staging.gram1.ru\",\"defaultStyleId\\t4\",\"indexRoute\\tportal/\"]},\"phrase_count\":{\"lines\":[\"1\"],\"ok\":true},\"style4\":{\"columns\":[\"style_id\",\"title\",\"user_selectable\"],\"error\":null,\"ok\":true,\"rows\":[\"4\\tNewfi Staging\\t1\"]},\"templates\":{\"columns\":[\"template_id\",\"type\",\"title\",\"style_id\",\"addon_id\",\"version_id\",\"version_string\",\"template_sha256\"],\"error\":null,\"ok\":true,\"rows\":[\"1610\\tpublic\\tnewfi_portal\\t0\\tNewfi/Portal\\t1000010\\t1.0.0 Alpha 1\\t1f484c8cf6bdeda8fda2974abf8a57f8cc7453fe2a779af7c735afa3b73aa741\"]},\"widgets\":{\"columns\":[\"condition_expression\",\"definition_id\",\"display_condition\",\"options\",\"positions\",\"widget_id\",\"widget_key\"],\"note\":\"NO_ADDON_ID_COLUMN\",\"ok\":true,\"rows\":[]}},\"docroot_exists\":true,\"hostname\":\"newfi-staging\",\"portal_files\":{\"src/addons/Newfi/Portal/Pub/Controller/Portal.php\":{\"bytes\":247,\"sha256\":\"53909e753ea5a011550fd280ad1c342a74ca9949be092dfbd95244243cae92f3\"},\"src/addons/Newfi/Portal/Pub/View/Portal.php\":{\"bytes\":79,\"sha256\":\"26e3b77c2c86d4f4a6fd51f0472e3f38e70e14c984ffd8d04dcec39071a2a69f\"},\"src/addons/Newfi/Portal/_data/navigation.xml\":{\"bytes\":281,\"sha256\":\"5d724ef5141438bdd0b9dba6a583d330bc6940b0ace5c21c7a8d5301e7d8d649\"},\"src/addons/Newfi/Portal/_data/phrases.xml\":{\"bytes\":173,\"sha256\":\"15282a06a956bda4e810f6b26b1703676dd766424029cd372ce0fd7832dbe09c\"},\"src/addons/Newfi/Portal/_data/routes.xml\":{\"bytes\":144,\"sha256\":\"9b80ef229bcebb49a5930369bb272ed85367deef66070f432948001096673629\"},\"src/addons/Newfi/Portal/_data/templates.xml\":{\"bytes\":1461,\"sha256\":\"c29c04f8b937284e821c87957653e87c2f6ac014fac30648a0f6b18e84392adf\"},\"src/addons/Newfi/Portal/addon.json\":{\"bytes\":378,\"sha256\":\"288a61044c941107162d045be49ab2e7c844d1586b25378a7289b3c7275010ab\"}},\"services\":{\"cron\":{\"rc\":0,\"state\":\"active\"},\"failed_units\":[],\"mariadb\":{\"rc\":0,\"state\":\"active\"},\"nginx\":{\"rc\":0,\"state\":\"active\"},\"php8.3-fpm\":{\"rc\":0,\"state\":\"active\"},\"qemu-guest-agent\":{\"rc\":0,\"state\":\"active\"}},\"source\":{\"addon_json\":{\"title\":\"Newfi Portal\",\"version_id\":1000010,\"version_string\":\"1.0.0 Alpha 1\"},\"portal_dir_exists\":true,\"source_derived_id\":\"Newfi/Portal\"}},\"state\":\"COMPLETE\"}\nLANEB_HTTP={\"prod_forums\":{\"http\":\"200\",\"rc\":0,\"stderr\":\"\"},\"prod_login\":{\"http\":\"200\",\"rc\":0,\"stderr\":\"\"},\"prod_root\":{\"http\":\"200\",\"rc\":0,\"stderr\":\"\"},\"staging_root\":{\"http\":\"000\",\"rc\":6,\"stderr\":\"curl: (6) Could not resolve host: newfi-staging.gram1.ru\\n\"}}\nLANEB_COMPARISON={\"navigation_rows_equal\":true,\"phrase_count_equal\":true,\"prod_addons\":[{\"active\":\"1\",\"addon_id\":\"Newfi/Dogs\",\"is_processing\":\"0\",\"title\":\"Newfi Dogs\",\"version_id\":\"1000010\",\"version_string\":\"1.0.0 Alpha 1\"},{\"active\":\"1\",\"addon_id\":\"Newfi/Events\",\"is_processing\":\"0\",\"title\":\"Newfi Events\",\"version_id\":\"1000010\",\"version_string\":\"1.0.0 Alpha 1\"},{\"active\":\"1\",\"addon_id\":\"Newfi/Portal\",\"is_processing\":\"0\",\"title\":\"Newfi Portal\",\"version_id\":\"1000010\",\"version_string\":\"1.0.0 Alpha 1\"},{\"active\":\"1\",\"addon_id\":\"XF\",\"is_processing\":\"0\",\"title\":\"XenForo\",\"version_id\":\"2031270\",\"version_string\":\"2.3.12\"},{\"active\":\"1\",\"addon_id\":\"XFMG\",\"is_processing\":\"0\",\"title\":\"XenForo Media Gallery\",\"version_id\":\"902031170\",\"version_string\":\"2.3.11\"},{\"active\":\"1\",\"addon_id\":\"XFRM\",\"is_processing\":\"0\",\"title\":\"XenForo Resource Manager\",\"version_id\":\"2031170\",\"version_string\":\"2.3.11\"}],\"prod_errors\":[0,0],\"prod_options\":{\"boardActive\":\"1\",\"boardUrl\":\"https://newfi.ru\",\"defaultStyleId\":\"4\",\"indexRoute\":\"portal/\"},\"prod_source_match\":{\"exact_file_set\":true,\"git_count\":7,\"guest_count\":7,\"hashes_equal\":true},\"source_derived_addon_id\":{\"prod\":\"Newfi/Portal\",\"staging\":\"Newfi/Portal\"},\"stage_addons\":[{\"active\":\"1\",\"addon_id\":\"Newfi/Dogs\",\"is_processing\":\"0\",\"title\":\"Newfi Dogs\",\"version_id\":\"1000010\",\"version_string\":\"1.0.0 Alpha 1\"},{\"active\":\"1\",\"addon_id\":\"Newfi/Events\",\"is_processing\":\"0\",\"title\":\"Newfi Events\",\"version_id\":\"1000010\",\"version_string\":\"1.0.0 Alpha 1\"},{\"active\":\"1\",\"addon_id\":\"Newfi/Portal\",\"is_processing\":\"0\",\"title\":\"Newfi Portal\",\"version_id\":\"1000010\",\"version_string\":\"1.0.0 Alpha 1\"},{\"active\":\"1\",\"addon_id\":\"XF\",\"is_processing\":\"0\",\"title\":\"XenForo\",\"version_id\":\"2031270\",\"version_string\":\"2.3.12\"},{\"active\":\"1\",\"addon_id\":\"XFMG\",\"is_processing\":\"0\",\"title\":\"XenForo Media Gallery\",\"version_id\":\"902031170\",\"version_string\":\"2.3.11\"},{\"active\":\"1\",\"addon_id\":\"XFRM\",\"is_processing\":\"0\",\"title\":\"XenForo Resource Manager\",\"version_id\":\"2031170\",\"version_string\":\"2.3.11\"}],\"stage_errors\":[40,8],\"stage_options\":{\"boardActive\":\"0\",\"boardUrl\":\"http://newfi-staging.gram1.ru\",\"defaultStyleId\":\"4\",\"indexRoute\":\"portal/\"},\"stage_source_match\":{\"exact_file_set\":true,\"git_count\":7,\"guest_count\":7,\"hashes_equal\":true},\"template_rows_equal\":true,\"widget_rows_equal\":true}\nLANEB_HOLD_REASONS=[\"STAGING_ROOT_HTTP_NOT_EXPECTED_503\"]\nLANEB_DECISION=HOLD_STAGING_ROOT_HTTP_NOT_EXPECTED_503\nLANEB_MUTATION_SCOPE=NO_GIT_NO_APPLICATION_NO_DB_NO_PRODUCTION_MUTATION\nLANEB_PUBLICATION=RUNNER_READ_ONLY_EVIDENCE_ONLY\n" } diff --git a/runtime/latest.txt b/runtime/latest.txt index 15a2f5cc..cee13b3d 100644 --- a/runtime/latest.txt +++ b/runtime/latest.txt @@ -1,22 +1,22 @@ CHAT_OUTPUT_BEGIN COMMAND_ID=NEWFI-260907-B-PORTAL200-RECOVERY1 -STATUS=OK -RC=0 +STATUS=FAIL +RC=3 HOST=pve01 MODE=read-only -COMPONENT=newfi-portal200-post-apply3-recovery +COMPONENT=newfi-portal200-post-apply3-recovery-audit REFERENCE_REGISTER_CHECK=OK REFERENCE_SHA256=5a3d8e5154c41cb582a4e0aca68090be1f0138918bf82131a948df326f9d8d66 ERROR_REGISTER_CHECK=OK ERROR_REGISTER_SHA256=3b09a553ec0f527ed3afeed4753f52a74ee3036045bbfb3c685e9f8af4ba7ba0 -COMMAND_SHA256=d8eafd855d3bb7704ed58082193c471dc66b330930971af4ecb75ba88e78dee7 +COMMAND_SHA256=baba32af6f6119fa191c84847ed38c87976d751ea963bed6bc3fb8b8ca540818 DUPLICATE_FAILED_COMMAND_BLOCKED=false EXECUTION_STARTED=true CHANGE_DECLARED=false RESULT_CONTRACT_VALID=true RESULT_CONTRACT_STATUS=NOT_APPLICABLE RESULT_CONTRACT_ERROR=NONE -COMMAND_RC=0 +COMMAND_RC=3 CHANGES_MADE=false ROLLBACK_STARTED=false ROLLBACK_RESTORED=null @@ -24,56 +24,25 @@ MUTATION_OUTCOME=NO_MUTATION SANITIZED=yes SECRETS_INCLUDED=no PRIVATE_ADDRESSES_INCLUDED=no -RAW_EVIDENCE_SHA256=4374c49510ffe36bec1cd54e5668650886725d6b65f4634aa7e39c404224074a -SANITIZED_OUTPUT_SHA256=4374c49510ffe36bec1cd54e5668650886725d6b65f4634aa7e39c404224074a +RAW_EVIDENCE_SHA256=a8f5c783d249feb8116fa28c64c9dd8d374c438f5f5f15f207deeda288427d74 +SANITIZED_OUTPUT_SHA256=a8f5c783d249feb8116fa28c64c9dd8d374c438f5f5f15f207deeda288427d74 OUTPUT_BEGIN -RECOVERY_AUDIT_BEGIN=true -COMMAND_ID=NEWFI-260907-B-PORTAL200-RECOVERY1 -MUTATION_SCOPE=NONE_READ_ONLY -MUTATIONS_PERFORMED=NO -ERROR_REGISTER_CHECK=OK -ERROR_REGISTER_SHA256=3b09a553ec0f527ed3afeed4753f52a74ee3036045bbfb3c685e9f8af4ba7ba0 -REFERENCE_CHECK=OK -REFERENCE_SHA256=5a3d8e5154c41cb582a4e0aca68090be1f0138918bf82131a948df326f9d8d66 +LANEB_COMMAND_ID=NEWFI-260907-B-PORTAL200-RECOVERY1 ERROR_REGISTER_CHECK=OK REFERENCE_CHECK=OK AUTHORITY_CHECK_SCOPE=READABILITY_ONLY_INCIDENTS_NOT_CLOSED -RUNNER_SHA256=b248a4c32c9cc64e5747e7dce6c7fc0a23f5124a77c71ce72e27a81aceae9d2d -RUNNER_CONTRACT_EXCERPT=["9:from pathlib import Path","11:raw_path, command_id, mode, command_rc = sys.argv[1:]","12:command_rc = int(command_rc)","14:result = {","15:\"valid\": True,","16:\"status\": \"NOT_APPLICABLE\",","17:\"changes_made\": \"false\",","18:\"rollback_started\": \"false\",","19:\"rollback_restored\": \"null\",","20:\"mutation_outcome\": \"NO_MUTATION\",","21:\"error\": \"NONE\",","25:result = {","26:\"valid\": False,","27:\"status\": \"UNKNOWN\",","28:\"changes_made\": \"unknown\",","29:\"rollback_started\": \"unknown\",","30:\"rollback_restored\": \"null\",","31:\"mutation_outcome\": \"UNKNOWN\",","32:\"error\": \"MISSING_CONTRACT\",","33:}","34:marker = \"HOMELAB_RESULT_CONTRACT=\"","35:lines = Path(raw_path).read_bytes().decode(","36:\"utf-8\",","47:if not isinstance(document, dict):","48:raise ValueError(\"contract root is not object\")","49:if document.get(\"version\") != 1:","50:raise ValueError(\"unsupported version\")","51:if document.get(\"command_id\") != command_id:","52:raise ValueError(\"command_id mismatch\")","53:status = document.get(\"status\")","54:if status not in {\"OK\", \"BLOCKED\", \"FAIL\"}:","55:raise ValueError(\"invalid status\")","56:changes = document.get(\"changes_made\")","57:rollback_started = document.get(\"rollback_started\")","58:rollback_restored = document.get(\"rollback_restored\")","59:if not isinstance(changes, bool):","60:raise ValueError(\"changes_made must be boolean\")","61:if not isinstance(rollback_started, bool):","62:raise ValueError(\"rollback_started must be boolean\")","63:if rollback_restored is not None and not isinstance(","64:rollback_restored,","65:bool,","66:):","67:raise ValueError(","68:\"rollback_restored must be boolean or null\"","69:)","70:if rollback_restored is True and rollback_started is not True:","71:raise ValueError(","72:\"rollback_restored without rollback_started\"","73:)","74:if rollback_started is True and changes is not True:","75:raise ValueError(","76:\"rollback_started without changes\"","77:)","78:if status == \"BLOCKED\" and (","79:changes","80:or rollback_started","81:or command_rc != 2","82:):","84:\"BLOCKED contract inconsistent with rc/mutation\"","85:)","86:if status == \"OK\" and command_rc != 0:","87:raise ValueError(\"OK contract inconsistent with rc\")","88:if status == \"FAIL\" and command_rc == 0:","89:raise ValueError(\"FAIL contract inconsistent with rc\")","91:if not changes:","92:outcome = \"NO_MUTATION\"","93:elif not rollback_started:","94:outcome = \"MUTATED\"","95:elif rollback_restored is True:","96:outcome = \"ROLLED_BACK\"","97:elif rollback_restored is False:","98:outcome = \"ROLLBACK_FAILED\"","99:else:","102:result = {","103:\"valid\": True,","104:\"status\": status,","105:\"changes_made\": str(changes).lower(),","106:\"rollback_started\": str(","107:rollback_started","108:).lower(),","109:\"rollback_restored\": (","110:\"null\"","111:if rollback_restored is None","112:else str(rollback_restored).lower()","113:),","114:\"mutation_outcome\": outcome,","117:except Exception as exc:","118:result[\"error\"] = (","119:\"INVALID_CONTRACT:\" + type(exc).__name__","120:)","121:elif len(payloads) > 1:","124:print(\"\\t\".join([","125:str(result[\"valid\"]).lower(),","126:result[\"status\"],","127:result[\"changes_made\"],","128:result[\"rollback_started\"],","129:result[\"rollback_restored\"],","130:result[\"mutation_outcome\"],","131:result[\"error\"],","141:printf '%s\\n' \\","142:'HOMELAB_RESULT_CONTRACT={\"version\":1,\"command_id\":\"T1\",\"status\":\"BLOCKED\",\"changes_made\":false,\"rollback_started\":false,\"rollback_restored\":null}' \\","143:>\"$tmp\"","144:[ \"$(read_mutation_contract \"$tmp\" T1 change 2)\" = \\","147:printf '%s\\n' \\","148:'HOMELAB_RESULT_CONTRACT={\"version\":1,\"command_id\":\"T2\",\"status\":\"OK\",\"changes_made\":true,\"rollback_started\":false,\"rollback_restored\":null}' \\","149:>\"$tmp\"","150:[ \"$(read_mutation_contract \"$tmp\" T2 change 0)\" = \\","153:printf '%s\\n' \\","154:'HOMELAB_RESULT_CONTRACT={\"version\":1,\"command_id\":\"T3\",\"status\":\"FAIL\",\"changes_made\":true,\"rollback_started\":true,\"rollback_restored\":true}' \\","155:>\"$tmp\"","156:[ \"$(read_mutation_contract \"$tmp\" T3 change 1)\" = \\","167:printf '%s\\n' \\"] -RUNNER_DUPLICATE_EXCERPT=["246:flock \\","287:flock -w 60 9 || {","646:\"duplicate_failed_command_blocked\": repeat_blocked == \"true\",","704:echo \"DUPLICATE_FAILED_COMMAND_BLOCKED=$REPEAT_BLOCKED\"","816:echo \"DUPLICATE_FAILED_COMMAND_BLOCKED=$REPEAT_BLOCKED\""] -RUNNER_CONTRACT_EXCERPT_SHA256=d63009f27c5447f810615041cc82bed8a85a5a125502257f85df4a3e7fbf0ffc -APPLY3_FETCH=OK -APPLY3_HISTORY_SHA256=f3ea3fcebd7b182e64db6e963a34f1b90baca0d08477e25e27bf88c48b33611c -APPLY3_COMMAND_ID_EXACT=true -APPLY3_RELEVANT_MARKERS=["COMMAND_ID=NEWFI-260907-PORTAL200-APPLY3","COMPONENT=newfi-portal200-deploy","ROLLBACK_STARTED=unknown","ROLLBACK_RESTORED=null","COMMAND_ID=NEWFI-260907-PORTAL200-APPLY3","PORTAL200_REMAINING_FULL_PRODUCT_COMMANDS_BEFORE=22","PORTAL200_FLOW=candidate->staging-apply->rollback-proof->staging-reapply->git-push->production","PORTAL200_CANDIDATE_IDENTITY=PASS","PORTAL200_ORCHESTRATION_FIXES={\"css_href_regex_fixed\":true,\"failure_status\":\"FAIL\",\"prod_http_via_pve01_public_route\":true,\"staging_503_without_css_links\":true}","PORTAL200_GIT_PRESTATE={\"branch\":\"implementation/newfi-closed-mvp-20260906\",\"clean\":true,\"head\":\"06bab5acd124e768f70305b3d7eca2f595871890\",\"remote\":\"06bab5acd124e768f70305b3d7eca2f595871890\"}","PORTAL200_CLUSTER=PASS","PORTAL200_RUNTIME_HELPER_LINT=PASS","PORTAL200_ERROR_BASELINE={\"prod\":0,\"staging\":40}","PORTAL200_HTTP={\"bytes\":23800,\"css_count\":2,\"css_marker\":false,\"css_status\":[200,200],\"forced_css_marker\":null,\"forced_css_status\":null,\"html_marker\":false,\"old_copy\":false,\"state\":\"old\",\"status\":503,\"target\":\"staging\"}","PORTAL200_RUNTIME={\"html_bytes\":1116,\"html_marker\":false,\"old_copy\":true,\"state\":\"old\",\"target\":\"prod\"}","PORTAL200_HTTP={\"bytes\":25939,\"css_count\":2,\"css_marker\":false,\"css_status\":[200,200],\"forced_css_marker\":null,\"forced_css_status\":null,\"html_marker\":false,\"old_copy\":true,\"state\":\"old\",\"status\":200,\"target\":\"prod\"}","PORTAL200_PREFLIGHT=PASS","PORTAL200_FAILURE=IMPORT_FAILED","PORTAL200_HTTP={\"bytes\":23800,\"css_count\":2,\"css_marker\":false,\"css_status\":[200,200],\"forced_css_marker\":null,\"forced_css_status\":null,\"html_marker\":false,\"old_copy\":false,\"state\":\"old\",\"status\":503,\"target\":\"staging\"}","PORTAL200_FAILURE_STAGING_ROLLBACK=PASS","HOMELAB_RESULT_CONTRACT={\"changes_made\":false,\"command_id\":\"NEWFI-260907-PORTAL200-APPLY3\",\"rollback_restored\":true,\"rollback_started\":true,\"status\":\"FAIL\",\"version\":1}","PORTAL200_ROADMAP_REMAINS=22"] -NEWFI_GIT_CANDIDATES=[{"branch":"main","dirty_count":0,"head":"6360c4c919c4c5b3cb2430dd55fe63b6ad595a28","portal_hits":[],"remote_head":"6360c4c919c4c5b3cb2430dd55fe63b6ad595a28","repo":"/root/newfi-portal","score":3},{"branch":"foundation/newfi-foundation-20260904","dirty_count":0,"head":"38688a88c3850e43e310e755faa0c6178e203e26","portal_hits":[],"remote_head":"e4f7b4318e2b0c1aa799edf91f39992c4b3ba378","repo":"/root/newfi-portal/.worktrees/foundation-newfi-foundation-20260904","score":8},{"branch":"implementation/newfi-closed-mvp-20260906","dirty_count":0,"head":"06bab5acd124e768f70305b3d7eca2f595871890","portal_hits":[],"remote_head":"06bab5acd124e768f70305b3d7eca2f595871890","repo":"/root/newfi-portal/.worktrees/implementation-newfi-closed-mvp-20260906","score":13}] -GIT_SELECTED_REPO=/root/newfi-portal/.worktrees/implementation-newfi-closed-mvp-20260906 -GIT_BRANCH=implementation/newfi-closed-mvp-20260906 -GIT_LOCAL_HEAD=06bab5acd124e768f70305b3d7eca2f595871890 -GIT_REMOTE_HEAD=06bab5acd124e768f70305b3d7eca2f595871890 -GIT_DIRTY_COUNT=0 -NEWFI_VM_CANDIDATES=[{"name":"newfi-prod","status":"running","vmid":210}] -PRODUCTION_XF_ROOT_CANDIDATES=["/var/www/forums/newfi/public"] -PRODUCTION_XF_ROOT=/var/www/forums/newfi/public -PRODUCTION_DOCROOT=/var/www/forums/newfi/public -PRODUCTION_XF_VERSION_DECL=XenForo 2.3.12 -PRODUCTION_PHP_VERSION=8.3.33 -PRODUCTION_SERVICES=nginx=active\nmariadb=active\nmysql=active\nphp8.3-fpm.service=active -PRODUCTION_ADDON_LIST= -------------- -------------------------- --------------- -------- \n Add-on ID Title Version Active \n -------------- -------------------------- --------------- -------- \n Newfi/Dogs Newfi Dogs 1.0.0 Alpha 1 Yes \n Newfi/Events Newfi Events 1.0.0 Alpha 1 Yes \n Newfi/Portal Newfi Portal 1.0.0 Alpha 1 Yes \n XFMG XenForo Media Gallery 2.3.11 Yes \n XFRM XenForo Resource Manager 2.3.11 Yes \n -------------- -------------------------- --------------- -------- \n\n Total: 5 add-ons (5 active, 0 inactive) -PRODUCTION_ADDON_METADATA=[{"id":"Newfi/Dogs","path":"/var/www/forums/newfi/public/src/addons/Newfi/Dogs/addon.json","title":"Newfi Dogs","version_id":1000010,"version_string":"1.0.0 Alpha 1"},{"id":"Newfi/Events","path":"/var/www/forums/newfi/public/src/addons/Newfi/Events/addon.json","title":"Newfi Events","version_id":1000010,"version_string":"1.0.0 Alpha 1"},{"id":"Newfi/Portal","path":"/var/www/forums/newfi/public/src/addons/Newfi/Portal/addon.json","title":"Newfi Portal","version_id":1000010,"version_string":"1.0.0 Alpha 1"}] -PRODUCTION_PORTAL_ADDON_CANDIDATES=[{"id":"Newfi/Portal","path":"/var/www/forums/newfi/public/src/addons/Newfi/Portal/addon.json","title":"Newfi Portal","version_id":1000010,"version_string":"1.0.0 Alpha 1"}] -PRODUCTION_DB_CLIENT=/usr/bin/mariadb -PRODUCTION_XF_DB_SCHEMAS=["xf_newfi"] -PRODUCTION_ADDON_ROWS=Newfi/Dogs Newfi Dogs 1000010 1.0.0 Alpha 1 1\nNewfi/Events Newfi Events 1000010 1.0.0 Alpha 1 1\nNewfi/Portal Newfi Portal 1000010 1.0.0 Alpha 1 1\nXF XenForo 2031270 2.3.12 1\nXFMG XenForo Media Gallery 902031170 2.3.11 1\nXFRM XenForo Resource Manager 2031170 2.3.11 1 -PRODUCTION_BOARD_ACTIVE=1 -PRODUCTION_ERROR_MAX=0 -REFERENCE_NEWFI_URLS=[] -HTTP_ROUTE_RESULTS=[{"http":"200","rc":0,"url":"https://newfi.ru/"},{"http":"000","rc":6,"url":"http://newfi-staging.gram1.ru/"}] -ROADMAP_MATCHES=["HEAD:config/newfi-brand-assets.json:34: \"roadmap_after_pass\": 23,","HEAD:config/newfi-brand-assets.json:35: \"roadmap_before\": 24,","HEAD:config/newfi-style199.json:5: \"roadmap_after\": 22,","HEAD:config/newfi-style199.json:6: \"roadmap_before\": 23,","HEAD:docs/checkpoints/private-staging-v1.md:18:Earlier component checkpoints retain their already accepted rollback evidence; FINAL179 does not destructively repeat every add-on uninstall. The only remaining private-staging gate is a fresh backup followed by real clean-contour restore validation. A backup without a successful restore does not count.","HEAD:docs/operations/content-structure.md:26:database AUTO_INCREMENT counter.","HEAD:scripts/verify-brand-assets.py:11:if cfg['roadmap_before']!=24 or cfg['roadmap_after_pass']!=23: raise RuntimeError('counter')"] -APPLY3_INTERNAL_ROLLBACK_PASS_PRESENT=true -HOLD_REASONS=["EXACT_NEWFI_PROD_STAGING_IDENTITY_UNPROVEN","PRODUCTION_URL_NOT_CONFIRMED_BY_REFERENCE","STAGING_URL_NOT_CONFIRMED_BY_REFERENCE","STAGING_HTTP_UNEXPECTED_OR_UNPROVEN"] -FINAL_DECISION=HOLD_PORTAL200_APPLY4_PREP_EXACT_NEWFI_PROD_STAGING_IDENTITY_UNPROVEN__PRODUCTION_URL_NOT_CONFIRMED_BY_REFERENCE__STAGING_URL_NOT_CONFIRMED_BY_REFERENCE__STAGING_HTTP_UNEXPECTED_OR_UNPROVEN -RECOVERY_AUDIT_END=true +LANEB_AUTHORITY={"ERROR_REGISTER":{"bytes":302058,"ok":true,"sha256":"3b09a553ec0f527ed3afeed4753f52a74ee3036045bbfb3c685e9f8af4ba7ba0"},"REFERENCE":{"bytes":201129,"ok":true,"sha256":"5a3d8e5154c41cb582a4e0aca68090be1f0138918bf82131a948df326f9d8d66"}} +LANEB_RUNNER={"ast_ok":false,"contract_for_exact_sha":{"changes_made":"boolean","command_id":"EXACT_MATCH_REQUIRED","rollback_restored":"boolean_or_null","rollback_started":"boolean","status_enum":["OK","BLOCKED","FAIL"],"version":1},"exists":true,"matches_expected":true,"sha256":"b248a4c32c9cc64e5747e7dce6c7fc0a23f5124a77c71ce72e27a81aceae9d2d","source_signals":{"BLOCKED":true,"DUPLICATE_FAILED_COMMAND_BLOCKED":true,"FAIL":true,"OK":true,"changes_made":true,"command_id":true,"rollback_restored":true,"rollback_started":true,"status":true,"version":true}} +LANEB_GIT={"branch":"implementation/newfi-closed-mvp-20260906","clean":true,"local_head":"06bab5acd124e768f70305b3d7eca2f595871890","portal_files":{"src/addons/Newfi/Portal/Pub/Controller/Portal.php":{"bytes":247,"sha256":"53909e753ea5a011550fd280ad1c342a74ca9949be092dfbd95244243cae92f3"},"src/addons/Newfi/Portal/Pub/View/Portal.php":{"bytes":79,"sha256":"26e3b77c2c86d4f4a6fd51f0472e3f38e70e14c984ffd8d04dcec39071a2a69f"},"src/addons/Newfi/Portal/_data/navigation.xml":{"bytes":281,"sha256":"5d724ef5141438bdd0b9dba6a583d330bc6940b0ace5c21c7a8d5301e7d8d649"},"src/addons/Newfi/Portal/_data/phrases.xml":{"bytes":173,"sha256":"15282a06a956bda4e810f6b26b1703676dd766424029cd372ce0fd7832dbe09c"},"src/addons/Newfi/Portal/_data/routes.xml":{"bytes":144,"sha256":"9b80ef229bcebb49a5930369bb272ed85367deef66070f432948001096673629"},"src/addons/Newfi/Portal/_data/templates.xml":{"bytes":1461,"sha256":"c29c04f8b937284e821c87957653e87c2f6ac014fac30648a0f6b18e84392adf"},"src/addons/Newfi/Portal/addon.json":{"bytes":378,"sha256":"288a61044c941107162d045be49ab2e7c844d1586b25378a7289b3c7275010ab"}},"remote_head":"06bab5acd124e768f70305b3d7eca2f595871890","remote_rc":0,"status_rc":0,"worktree_exists":true} +LANEB_APPLY3_LOCAL_EVIDENCE={"attempt_dir_exists":true,"rollback_pass_marker":false,"searched_files":[{"bytes":669,"name":"wrapper.log","sha256":"dec036ea985e75d776b2de8c2bede77fe4b4aafa5da33648b2a6b5f79f3dec30"},{"bytes":73,"name":"attempt.txt","sha256":"fc3d53a77acceff697ec5111ab3ba411ede195fd9a8e358de5ae94dbc94f4d14"},{"bytes":90,"name":"receipt.txt","sha256":"a993d3503cd786e73baa68900ae5bc46eac405da3430cfab0bb5db981e0f1b4b"}],"wrapper_exists":true} +LANEB_PROD_SNAPSHOT={"report":{"cache":{"exists":true,"file_count_sampled":6000,"portal_named_files":["internal_data/code_cache/templates/l1/s4/public/newfi_events.php","internal_data/code_cache/templates/l1/s4/public/newfi_portal.php","internal_data/code_cache/templates/l1/s4/public/newfi_dogs.php","internal_data/code_cache/templates/l1/s1/public/newfi_events.php","internal_data/code_cache/templates/l1/s1/public/newfi_portal.php","internal_data/code_cache/templates/l1/s1/public/newfi_dogs.php","internal_data/code_cache/templates/l1/s0/public/newfi_events.php","internal_data/code_cache/templates/l1/s0/public/newfi_portal.php","internal_data/code_cache/templates/l1/s0/public/newfi_dogs.php","internal_data/code_cache/templates/l2/s4/public/newfi_events.php","internal_data/code_cache/templates/l2/s4/public/newfi_portal.php","internal_data/code_cache/templates/l2/s4/public/newfi_dogs.php","internal_data/code_cache/templates/l2/s1/public/newfi_events.php","internal_data/code_cache/templates/l2/s1/public/newfi_portal.php","internal_data/code_cache/templates/l2/s1/public/newfi_dogs.php","internal_data/code_cache/templates/l2/s0/public/newfi_events.php","internal_data/code_cache/templates/l2/s0/public/newfi_portal.php","internal_data/code_cache/templates/l2/s0/public/newfi_dogs.php"]},"cli":{"out":"XenForo 2.3.12","rc":0,"stderr_nonempty":false},"db":{"addons":{"columns":["addon_id","title","version_string","version_id","active","is_processing"],"error":null,"ok":true,"rows":["Newfi/Dogs\tNewfi Dogs\t1.0.0 Alpha 1\t1000010\t1\t0","Newfi/Events\tNewfi Events\t1.0.0 Alpha 1\t1000010\t1\t0","Newfi/Portal\tNewfi Portal\t1.0.0 Alpha 1\t1000010\t1\t0","XF\tXenForo\t2.3.12\t2031270\t1\t0","XFMG\tXenForo Media Gallery\t2.3.11\t902031170\t1\t0","XFRM\tXenForo Resource Manager\t2.3.11\t2031170\t1\t0"]},"errors":{"lines":["0\t0"],"ok":true},"navigation":{"columns":["navigation_id","parent_navigation_id","display_order","navigation_type_id","enabled","addon_id"],"error":null,"ok":true,"rows":["newfiPortal\t\t150\tbasic\t1\tNewfi/Portal"]},"options":{"columns":["option_id","option_value"],"error":null,"ok":true,"rows":["boardActive\t1","boardUrl\thttps://newfi.ru","defaultStyleId\t4","indexRoute\tportal/"]},"phrase_count":{"lines":["1"],"ok":true},"style4":{"columns":["style_id","title","user_selectable"],"error":null,"ok":true,"rows":["4\t\u041d\u044c\u044e\u0444\u0414\u043e\u043c\t1"]},"templates":{"columns":["template_id","type","title","style_id","addon_id","version_id","version_string","template_sha256"],"error":null,"ok":true,"rows":["1610\tpublic\tnewfi_portal\t0\tNewfi/Portal\t1000010\t1.0.0 Alpha 1\t1f484c8cf6bdeda8fda2974abf8a57f8cc7453fe2a779af7c735afa3b73aa741"]},"widgets":{"columns":["condition_expression","definition_id","display_condition","options","positions","widget_id","widget_key"],"note":"NO_ADDON_ID_COLUMN","ok":true,"rows":[]}},"docroot_exists":true,"hostname":"newfi-prod","portal_files":{"src/addons/Newfi/Portal/Pub/Controller/Portal.php":{"bytes":247,"sha256":"53909e753ea5a011550fd280ad1c342a74ca9949be092dfbd95244243cae92f3"},"src/addons/Newfi/Portal/Pub/View/Portal.php":{"bytes":79,"sha256":"26e3b77c2c86d4f4a6fd51f0472e3f38e70e14c984ffd8d04dcec39071a2a69f"},"src/addons/Newfi/Portal/_data/navigation.xml":{"bytes":281,"sha256":"5d724ef5141438bdd0b9dba6a583d330bc6940b0ace5c21c7a8d5301e7d8d649"},"src/addons/Newfi/Portal/_data/phrases.xml":{"bytes":173,"sha256":"15282a06a956bda4e810f6b26b1703676dd766424029cd372ce0fd7832dbe09c"},"src/addons/Newfi/Portal/_data/routes.xml":{"bytes":144,"sha256":"9b80ef229bcebb49a5930369bb272ed85367deef66070f432948001096673629"},"src/addons/Newfi/Portal/_data/templates.xml":{"bytes":1461,"sha256":"c29c04f8b937284e821c87957653e87c2f6ac014fac30648a0f6b18e84392adf"},"src/addons/Newfi/Portal/addon.json":{"bytes":378,"sha256":"288a61044c941107162d045be49ab2e7c844d1586b25378a7289b3c7275010ab"}},"services":{"cron":{"rc":0,"state":"active"},"failed_units":[],"mariadb":{"rc":0,"state":"active"},"nginx":{"rc":0,"state":"active"},"php8.3-fpm":{"rc":0,"state":"active"},"qemu-guest-agent":{"rc":0,"state":"active"}},"source":{"addon_json":{"title":"Newfi Portal","version_id":1000010,"version_string":"1.0.0 Alpha 1"},"portal_dir_exists":true,"source_derived_id":"Newfi/Portal"}},"state":"COMPLETE"} +LANEB_STAGING_SNAPSHOT={"report":{"cache":{"exists":true,"file_count_sampled":6000,"portal_named_files":["internal_data/code_cache/templates/l1/s4/public/newfi_events.php","internal_data/code_cache/templates/l1/s4/public/newfi_portal.php","internal_data/code_cache/templates/l1/s4/public/newfi_dogs.php","internal_data/code_cache/templates/l1/s1/public/newfi_events.php","internal_data/code_cache/templates/l1/s1/public/newfi_portal.php","internal_data/code_cache/templates/l1/s1/public/newfi_dogs.php","internal_data/code_cache/templates/l1/s0/public/newfi_events.php","internal_data/code_cache/templates/l1/s0/public/newfi_portal.php","internal_data/code_cache/templates/l1/s0/public/newfi_dogs.php","internal_data/code_cache/templates/l2/s4/public/newfi_events.php","internal_data/code_cache/templates/l2/s4/public/newfi_portal.php","internal_data/code_cache/templates/l2/s4/public/newfi_dogs.php","internal_data/code_cache/templates/l2/s1/public/newfi_events.php","internal_data/code_cache/templates/l2/s1/public/newfi_portal.php","internal_data/code_cache/templates/l2/s1/public/newfi_dogs.php","internal_data/code_cache/templates/l2/s0/public/newfi_events.php","internal_data/code_cache/templates/l2/s0/public/newfi_portal.php","internal_data/code_cache/templates/l2/s0/public/newfi_dogs.php"]},"cli":{"out":"XenForo 2.3.12","rc":0,"stderr_nonempty":false},"db":{"addons":{"columns":["addon_id","title","version_string","version_id","active","is_processing"],"error":null,"ok":true,"rows":["Newfi/Dogs\tNewfi Dogs\t1.0.0 Alpha 1\t1000010\t1\t0","Newfi/Events\tNewfi Events\t1.0.0 Alpha 1\t1000010\t1\t0","Newfi/Portal\tNewfi Portal\t1.0.0 Alpha 1\t1000010\t1\t0","XF\tXenForo\t2.3.12\t2031270\t1\t0","XFMG\tXenForo Media Gallery\t2.3.11\t902031170\t1\t0","XFRM\tXenForo Resource Manager\t2.3.11\t2031170\t1\t0"]},"errors":{"lines":["40\t8"],"ok":true},"navigation":{"columns":["navigation_id","parent_navigation_id","display_order","navigation_type_id","enabled","addon_id"],"error":null,"ok":true,"rows":["newfiPortal\t\t150\tbasic\t1\tNewfi/Portal"]},"options":{"columns":["option_id","option_value"],"error":null,"ok":true,"rows":["boardActive\t0","boardUrl\thttp://newfi-staging.gram1.ru","defaultStyleId\t4","indexRoute\tportal/"]},"phrase_count":{"lines":["1"],"ok":true},"style4":{"columns":["style_id","title","user_selectable"],"error":null,"ok":true,"rows":["4\tNewfi Staging\t1"]},"templates":{"columns":["template_id","type","title","style_id","addon_id","version_id","version_string","template_sha256"],"error":null,"ok":true,"rows":["1610\tpublic\tnewfi_portal\t0\tNewfi/Portal\t1000010\t1.0.0 Alpha 1\t1f484c8cf6bdeda8fda2974abf8a57f8cc7453fe2a779af7c735afa3b73aa741"]},"widgets":{"columns":["condition_expression","definition_id","display_condition","options","positions","widget_id","widget_key"],"note":"NO_ADDON_ID_COLUMN","ok":true,"rows":[]}},"docroot_exists":true,"hostname":"newfi-staging","portal_files":{"src/addons/Newfi/Portal/Pub/Controller/Portal.php":{"bytes":247,"sha256":"53909e753ea5a011550fd280ad1c342a74ca9949be092dfbd95244243cae92f3"},"src/addons/Newfi/Portal/Pub/View/Portal.php":{"bytes":79,"sha256":"26e3b77c2c86d4f4a6fd51f0472e3f38e70e14c984ffd8d04dcec39071a2a69f"},"src/addons/Newfi/Portal/_data/navigation.xml":{"bytes":281,"sha256":"5d724ef5141438bdd0b9dba6a583d330bc6940b0ace5c21c7a8d5301e7d8d649"},"src/addons/Newfi/Portal/_data/phrases.xml":{"bytes":173,"sha256":"15282a06a956bda4e810f6b26b1703676dd766424029cd372ce0fd7832dbe09c"},"src/addons/Newfi/Portal/_data/routes.xml":{"bytes":144,"sha256":"9b80ef229bcebb49a5930369bb272ed85367deef66070f432948001096673629"},"src/addons/Newfi/Portal/_data/templates.xml":{"bytes":1461,"sha256":"c29c04f8b937284e821c87957653e87c2f6ac014fac30648a0f6b18e84392adf"},"src/addons/Newfi/Portal/addon.json":{"bytes":378,"sha256":"288a61044c941107162d045be49ab2e7c844d1586b25378a7289b3c7275010ab"}},"services":{"cron":{"rc":0,"state":"active"},"failed_units":[],"mariadb":{"rc":0,"state":"active"},"nginx":{"rc":0,"state":"active"},"php8.3-fpm":{"rc":0,"state":"active"},"qemu-guest-agent":{"rc":0,"state":"active"}},"source":{"addon_json":{"title":"Newfi Portal","version_id":1000010,"version_string":"1.0.0 Alpha 1"},"portal_dir_exists":true,"source_derived_id":"Newfi/Portal"}},"state":"COMPLETE"} +LANEB_HTTP={"prod_forums":{"http":"200","rc":0,"stderr":""},"prod_login":{"http":"200","rc":0,"stderr":""},"prod_root":{"http":"200","rc":0,"stderr":""},"staging_root":{"http":"000","rc":6,"stderr":"curl: (6) Could not resolve host: newfi-staging.gram1.ru\n"}} +LANEB_COMPARISON={"navigation_rows_equal":true,"phrase_count_equal":true,"prod_addons":[{"active":"1","addon_id":"Newfi/Dogs","is_processing":"0","title":"Newfi Dogs","version_id":"1000010","version_string":"1.0.0 Alpha 1"},{"active":"1","addon_id":"Newfi/Events","is_processing":"0","title":"Newfi Events","version_id":"1000010","version_string":"1.0.0 Alpha 1"},{"active":"1","addon_id":"Newfi/Portal","is_processing":"0","title":"Newfi Portal","version_id":"1000010","version_string":"1.0.0 Alpha 1"},{"active":"1","addon_id":"XF","is_processing":"0","title":"XenForo","version_id":"2031270","version_string":"2.3.12"},{"active":"1","addon_id":"XFMG","is_processing":"0","title":"XenForo Media Gallery","version_id":"902031170","version_string":"2.3.11"},{"active":"1","addon_id":"XFRM","is_processing":"0","title":"XenForo Resource Manager","version_id":"2031170","version_string":"2.3.11"}],"prod_errors":[0,0],"prod_options":{"boardActive":"1","boardUrl":"https://newfi.ru","defaultStyleId":"4","indexRoute":"portal/"},"prod_source_match":{"exact_file_set":true,"git_count":7,"guest_count":7,"hashes_equal":true},"source_derived_addon_id":{"prod":"Newfi/Portal","staging":"Newfi/Portal"},"stage_addons":[{"active":"1","addon_id":"Newfi/Dogs","is_processing":"0","title":"Newfi Dogs","version_id":"1000010","version_string":"1.0.0 Alpha 1"},{"active":"1","addon_id":"Newfi/Events","is_processing":"0","title":"Newfi Events","version_id":"1000010","version_string":"1.0.0 Alpha 1"},{"active":"1","addon_id":"Newfi/Portal","is_processing":"0","title":"Newfi Portal","version_id":"1000010","version_string":"1.0.0 Alpha 1"},{"active":"1","addon_id":"XF","is_processing":"0","title":"XenForo","version_id":"2031270","version_string":"2.3.12"},{"active":"1","addon_id":"XFMG","is_processing":"0","title":"XenForo Media Gallery","version_id":"902031170","version_string":"2.3.11"},{"active":"1","addon_id":"XFRM","is_processing":"0","title":"XenForo Resource Manager","version_id":"2031170","version_string":"2.3.11"}],"stage_errors":[40,8],"stage_options":{"boardActive":"0","boardUrl":"http://newfi-staging.gram1.ru","defaultStyleId":"4","indexRoute":"portal/"},"stage_source_match":{"exact_file_set":true,"git_count":7,"guest_count":7,"hashes_equal":true},"template_rows_equal":true,"widget_rows_equal":true} +LANEB_HOLD_REASONS=["STAGING_ROOT_HTTP_NOT_EXPECTED_503"] +LANEB_DECISION=HOLD_STAGING_ROOT_HTTP_NOT_EXPECTED_503 +LANEB_MUTATION_SCOPE=NO_GIT_NO_APPLICATION_NO_DB_NO_PRODUCTION_MUTATION +LANEB_PUBLICATION=RUNNER_READ_ONLY_EVIDENCE_ONLY OUTPUT_END CHAT_OUTPUT_END