1
0

runtime: publish NEWFI-260907-B-PORTAL200-RECOVERY1

This commit is contained in:
homelab-runtime-publisher
2026-09-07 18:48:23 +00:00
parent d35bcd1585
commit 4ecade81d9
4 changed files with 60 additions and 122 deletions
File diff suppressed because one or more lines are too long
@@ -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
+10 -10
View File
File diff suppressed because one or more lines are too long
+20 -51
View File
@@ -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