CHAT_OUTPUT_BEGIN
COMMAND_ID=NEWFI-260907-B-PORTAL200-RECOVERY5
STATUS=OK
RC=0
HOST=pve01
MODE=read-only
COMPONENT=newfi-portal200-recovery5-parser-fix
REFERENCE_REGISTER_CHECK=OK
REFERENCE_SHA256=5a3d8e5154c41cb582a4e0aca68090be1f0138918bf82131a948df326f9d8d66
ERROR_REGISTER_CHECK=OK
ERROR_REGISTER_SHA256=3b09a553ec0f527ed3afeed4753f52a74ee3036045bbfb3c685e9f8af4ba7ba0
COMMAND_SHA256=def5ed0b9b382526126bae0675243fb40bba3480be5fd31b79d9ea9b4774bec8
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
CHANGES_MADE=false
ROLLBACK_STARTED=false
ROLLBACK_RESTORED=null
MUTATION_OUTCOME=NO_MUTATION
SANITIZED=yes
SECRETS_INCLUDED=no
PRIVATE_ADDRESSES_INCLUDED=no
RAW_EVIDENCE_SHA256=9ca6ffdd4e8304e7892084bb2c85c01dcba9f5638c90403eb23169bad8c6e599
SANITIZED_OUTPUT_SHA256=3975ca27123f768ce53b4b9e826eddc6a64712a036a27179c636f69ed6b2fec0
OUTPUT_BEGIN
RECOVERY5_BEGIN=true
COMMAND_ID=NEWFI-260907-B-PORTAL200-RECOVERY5
MUTATION_SCOPE=NONE_READ_ONLY
MUTATIONS_PERFORMED=NO
REMOTE_QGA_QUOTING_FIX=SSH_REMOTE_ARGV_SHELL_QUOTED_SINGLE_COMMAND
LAYOUT_SECTION_PARSER_FIX=A_Z_0_9_UNDERSCORE
ERROR_REGISTER_CHECK=OK
ERROR_REGISTER_SHA256=3b09a553ec0f527ed3afeed4753f52a74ee3036045bbfb3c685e9f8af4ba7ba0
REFERENCE_CHECK=OK
REFERENCE_SHA256=5a3d8e5154c41cb582a4e0aca68090be1f0138918bf82131a948df326f9d8d66
AUTHORITY_CHECK_SCOPE=READABILITY_ONLY_INCIDENTS_NOT_CLOSED
RECOVERY4_HISTORY_SHA256=4f526e81a36c906286024af28c3c5ad8e0185cd2448972a4bfbbaf6f646fae4b
RECOVERY4_STATUS=OK
RECOVERY4_CHANGES_MADE=false
RECOVERY4_MUTATION_OUTCOME=NO_MUTATION
RECOVERY4_HOLD_REASONS=["PRODUCTION_LAYOUT_EXECUTED_OUTSIDE_GUEST","STAGING_LAYOUT_EXECUTED_OUTSIDE_GUEST"]
RECOVERY4_FINAL_DECISION=HOLD_PORTAL200_APPLY4_PREP_PRODUCTION_LAYOUT_EXECUTED_OUTSIDE_GUEST__STAGING_LAYOUT_EXECUTED_OUTSIDE_GUEST
RUNNER_SHA256=b248a4c32c9cc64e5747e7dce6c7fc0a23f5124a77c71ce72e27a81aceae9d2d
RUNNER_CONTRACT_RELEVANT_EXCERPT=["7:import json","8:import sys","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\",","22:}","24:if mode == \"change\":","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\",","37:errors=\"replace\",","38:).splitlines()","46:document = json.loads(payloads[0])","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:):","83:raise ValueError(","84:\"BLOCKED contract inconsistent with rc/mutation\"","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:","100:outcome = \"ROLLBACK_UNKNOWN\"","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,","115:\"error\": \"NONE\",","116:}","117:except Exception as exc:","118:result[\"error\"] = (","119:\"INVALID_CONTRACT:\" + type(exc).__name__","120:)","121:elif len(payloads) > 1:","122:result[\"error\"] = \"MULTIPLE_CONTRACTS\"","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\"],","132:]))","133:PY_CONTRACT","138:tmp=\"$(mktemp)\"","139:trap 'rm -f \"$tmp\"' RETURN","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)\" = \\","145:$'true\\tBLOCKED\\tfalse\\tfalse\\tnull\\tNO_MUTATION\\tNONE' ]","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)\" = \\","151:$'true\\tOK\\ttrue\\tfalse\\tnull\\tMUTATED\\tNONE' ]","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)\" = \\","157:$'true\\tFAIL\\ttrue\\ttrue\\ttrue\\tROLLED_BACK\\tNONE' ]","164:[ \"$(read_mutation_contract \"$tmp\" T5 verify 0)\" = \\","165:$'true\\tNOT_APPLICABLE\\tfalse\\tfalse\\tnull\\tNO_MUTATION\\tNONE' ]","167:printf '%s\\n' \\","168:'HOMELAB_RESULT_CONTRACT={\"version\":1,\"command_id\":\"OTHER\",\"status\":\"OK\",\"changes_made\":true,\"rollback_started\":false,\"rollback_restored\":null}' \\","169:>\"$tmp\"","170:[ \"$(read_mutation_contract \"$tmp\" T6 change 0)\" = \\","171:$'false\\tUNKNOWN\\tunknown\\tunknown\\tnull\\tUNKNOWN\\tINVALID_CONTRACT:ValueError' ]","173:printf '%s\\n' \\","174:'HOMELAB_RESULT_CONTRACT={\"version\":1,\"command_id\":\"T7\",\"status\":\"OK\",\"changes_made\":true,\"rollback_started\":false,\"rollback_restored\":null}' \\","175:'HOMELAB_RESULT_CONTRACT={\"version\":1,\"command_id\":\"T7\",\"status\":\"OK\",\"changes_made\":true,\"rollback_started\":false,\"rollback_restored\":null}' \\","176:>\"$tmp\"","177:[ \"$(read_mutation_contract \"$tmp\" T7 change 0)\" = \\","178:$'false\\tUNKNOWN\\tunknown\\tunknown\\tnull\\tUNKNOWN\\tMULTIPLE_CONTRACTS' ]","188:usage() {","189:cat >&2 <<'USAGE'","190:Usage:","191:homelab-chat-run COMMAND_ID MODE COMPONENT -- command [arguments...]","193:MODE:","194:read-only","195:verify","204:}","206:[ \"$#\" -ge 5 ] || usage","208:COMMAND_ID=\"$1\"","209:MODE=\"$2\"","210:COMPONENT=\"$3\"","211:shift 3","213:[ \"${1:-}\" = '--' ] || usage","214:shift","215:[ \"$#\" -ge 1 ] || usage","217:case \"$COMMAND_ID\" in","218:''|*[!A-Za-z0-9._-]*)","219:echo 'RESULT=FAIL'","220:echo 'REASON=INVALID_COMMAND_ID'","221:exit 65","222:;;","223:esac","293:STARTED_AT=\"$(date -u +%Y-%m-%dT%H:%M:%SZ)\"","294:STAMP=\"$(date -u +%Y%m%dT%H%M%SZ)\"","295:HOST_SHORT=\"$(hostname -s 2>/dev/null || hostname)\"","297:RAW_FILE=\"$RAW_DIR/${COMMAND_ID}-${STAMP}.log\"","298:SANITIZED_FILE=\"$PUBLIC_DIR/${COMMAND_ID}-${STAMP}.txt\"","299:JSON_FILE=\"$PUBLIC_DIR/${COMMAND_ID}-${STAMP}.json\"","300:TXT_FILE=\"$PUBLIC_DIR/${COMMAND_ID}-${STAMP}-latest.txt\"","302:REFERENCE_SHA256=\"$(sha256sum \"$REFERENCE\" | awk '{print $1}')\"","303:ERROR_REGISTER_SHA256=\"$(sha256sum \"$ERROR_REGISTER\" | awk '{print $1}')\"","329:BLOCK_REASON=''","330:CHANGE_DECLARED=false","331:RESULT_CONTRACT_VALID=true","332:CONTRACT_STATUS='NOT_APPLICABLE'","333:CHANGES_MADE=false","334:ROLLBACK_STARTED=false","335:ROLLBACK_RESTORED=null","336:MUTATION_OUTCOME='NO_MUTATION'","337:RESULT_CONTRACT_ERROR='NONE'","338:COMMAND_RC=''","340:if [ \"$MODE\" = change ]; then","341:CHANGE_DECLARED=true","342:RESULT_CONTRACT_VALID=false","343:CONTRACT_STATUS='UNKNOWN'","344:CHANGES_MADE=unknown","345:ROLLBACK_STARTED=unknown","346:ROLLBACK_RESTORED=null","347:MUTATION_OUTCOME='UNKNOWN'","348:RESULT_CONTRACT_ERROR='MISSING_CONTRACT'","349:fi","357:RC=73","358:STATUS='BLOCKED'","359:RESULT_CONTRACT_VALID=true","360:CONTRACT_STATUS='BLOCKED'","361:CHANGES_MADE=false","362:ROLLBACK_STARTED=false","363:ROLLBACK_RESTORED=null","364:MUTATION_OUTCOME='NO_MUTATION'","365:RESULT_CONTRACT_ERROR='RUNNER_PREEXECUTION_BLOCK'","367:{","408:IFS=$'\\t' read -r \\","409:RESULT_CONTRACT_VALID \\","410:CONTRACT_STATUS \\","411:CHANGES_MADE \\","412:ROLLBACK_STARTED \\","413:ROLLBACK_RESTORED \\","414:MUTATION_OUTCOME \\","415:RESULT_CONTRACT_ERROR < <(","416:read_mutation_contract \\","417:\"$RAW_FILE\" \\","418:\"$COMMAND_ID\" \\","419:\"$MODE\" \\","420:\"$COMMAND_RC\"","421:)","543:python3 - \\","544:\"$JSON_FILE\" \\","545:\"$SANITIZED_FILE\" \\","546:\"$COMMAND_ID\" \\"]
TARGET_BRANCH_WORKTREES=[{"dirty_count":0,"head":"06bab5acd124e768f70305b3d7eca2f595871890","remote_head":"06bab5acd124e768f70305b3d7eca2f595871890","repo":"/root/newfi-portal/.worktrees/implementation-newfi-closed-mvp-20260906"}]
GIT_REPO=/root/newfi-portal/.worktrees/implementation-newfi-closed-mvp-20260906
GIT_HEAD=06bab5acd124e768f70305b3d7eca2f595871890
GIT_REMOTE_HEAD=06bab5acd124e768f70305b3d7eca2f595871890
GIT_DIRTY_COUNT=0
NEWFI_CLUSTER_VMS=[{"name":"newfi-prod","node":"pve01","status":"running","type":"qemu","vmid":210},{"name":"newfi-staging","node":"pve03","status":"running","type":"qemu","vmid":211}]
PRODUCTION_VM={"name":"newfi-prod","node":"pve01","status":"running","type":"qemu","vmid":210}
STAGING_VM={"name":"newfi-staging","node":"pve03","status":"running","type":"qemu","vmid":211}
PRODUCTION_QGA_SIMPLE={"err":"","hostname":"newfi-prod","rc":0}
PRODUCTION_QGA_COMPOUND={"err":"","out":"A=newfi-prod\nB=/","rc":0}
STAGING_QGA_SIMPLE={"err":"","hostname":"newfi-staging","rc":0}
STAGING_QGA_COMPOUND={"err":"","out":"A=newfi-staging\nB=/","rc":0}
PRODUCTION_LAYOUT_DIAGNOSTICS={"guest_hosts":["newfi-prod"],"scan_err":"","scan_rc":0,"sections":{"ADDON":["/var/www/forums/newfi/public/src/addons/Newfi/Dogs/addon.json","/var/www/forums/newfi/public/src/addons/Newfi/Events/addon.json","/var/www/forums/newfi/public/src/addons/Newfi/Portal/addon.json"],"CMD":["/var/www/forums/newfi/public/cmd.php"],"HOST":["newfi-prod"],"INDEX":["/var/www/forums/newfi/public/index.php","/var/www/forums/newfi/public/install/index.php","/var/www/forums/newfi/public/internal_data/code_cache/templates/l0/s0/admin/index.php","/var/www/forums/newfi/public/internal_data/code_cache/templates/l1/s0/admin/index.php","/var/www/forums/newfi/public/internal_data/code_cache/templates/l2/s0/admin/index.php","/var/www/forums/newfi/public/src/vendor/christian-riesen/otp/example/index.php"],"KNOWN_PATHS":["/var/www/forums/newfi|/var/www/forums/newfi","drwxr-xr-x 3 root root 4096 Sep  4 21:18 /var/www/forums/newfi","/var/www/forums/newfi/public|/var/www/forums/newfi/public","drwxr-xr-x 9 root root 4096 Sep  6 09:28 /var/www/forums/newfi/public"],"NGINX":["    server_name newfi-prod newfi.ru www.newfi.ru [PRIVATE_IP];","    root /var/www/forums/newfi/public;"],"XF":["/var/www/forums/newfi/public/src/XF.php"]},"valid_candidates":[[12,"/var/www/forums/newfi/public"]],"validations":{"/var/www/forums/newfi":{"err":"","ok":false,"out":""},"/var/www/forums/newfi/public":{"err":"","ok":true,"out":"BASE=/var/www/forums/newfi/public\nCMD=/var/www/forums/newfi/public/cmd.php\nXF=/var/www/forums/newfi/public/src/XF.php"}}}
PRODUCTION_XF_BASE_ROOT=/var/www/forums/newfi/public
PRODUCTION_XF_VERSION=XenForo 2.3.12
PRODUCTION_SERVICES=nginx=active\nmariadb=active\nmysql=active\nphp8.3-fpm.service=active
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_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)
STAGING_LAYOUT_DIAGNOSTICS={"guest_hosts":["newfi-staging"],"scan_err":"","scan_rc":0,"sections":{"ADDON":["/var/www/forums/newfi/public/src/addons/Newfi/Dogs/addon.json","/var/www/forums/newfi/public/src/addons/Newfi/Events/addon.json","/var/www/forums/newfi/public/src/addons/Newfi/Portal/addon.json"],"CMD":["/var/www/forums/newfi/public/cmd.php"],"HOST":["newfi-staging"],"INDEX":["/var/www/forums/newfi/public/index.php","/var/www/forums/newfi/public/install/index.php","/var/www/forums/newfi/public/internal_data/code_cache/templates/l0/s0/admin/index.php","/var/www/forums/newfi/public/internal_data/code_cache/templates/l1/s0/admin/index.php","/var/www/forums/newfi/public/internal_data/code_cache/templates/l2/s0/admin/index.php","/var/www/forums/newfi/public/src/vendor/christian-riesen/otp/example/index.php"],"KNOWN_PATHS":["/var/www/forums/newfi|/var/www/forums/newfi","drwxr-xr-x 3 root root 4096 Sep  4 21:18 /var/www/forums/newfi","/var/www/forums/newfi/public|/var/www/forums/newfi/public","drwxr-xr-x 9 root root 4096 Sep  6 09:28 /var/www/forums/newfi/public"],"NGINX":["    server_name newfi-staging newfi-staging.gram1.ru [PRIVATE_IP];","    root /var/www/forums/newfi/public;"],"XF":["/var/www/forums/newfi/public/src/XF.php"]},"valid_candidates":[[12,"/var/www/forums/newfi/public"]],"validations":{"/var/www/forums/newfi":{"err":"","ok":false,"out":""},"/var/www/forums/newfi/public":{"err":"","ok":true,"out":"BASE=/var/www/forums/newfi/public\nCMD=/var/www/forums/newfi/public/cmd.php\nXF=/var/www/forums/newfi/public/src/XF.php"}}}
STAGING_XF_BASE_ROOT=/var/www/forums/newfi/public
STAGING_XF_VERSION=XenForo 2.3.12
STAGING_SERVICES=nginx=active\nmariadb=active\nmysql=active\nphp8.3-fpm.service=active
STAGING_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"}]
STAGING_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)
PORTAL_ADDON_ID=Newfi/Portal
PRODUCTION_DB_CLIENT=/usr/bin/mariadb
PRODUCTION_DB_SCHEMA_CANDIDATES=["xf_newfi"]
PRODUCTION_BOARD_ACTIVE=1
PRODUCTION_ERROR_MAX=0
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_PORTAL_TEMPLATE_HASH_ROWS=["0\tnewfi_portal\t1f484c8cf6bdeda8fda2974abf8a57f8cc7453fe2a779af7c735afa3b73aa741"]
PRODUCTION_PORTAL_SOURCE_TREE_SHA256=a066546dcbef1321be989ccdcabdb195318e36cd3f33d2f90a2a88acb7ac44ae
STAGING_DB_CLIENT=/usr/bin/mariadb
STAGING_DB_SCHEMA_CANDIDATES=["xf_newfi"]
STAGING_BOARD_ACTIVE=0
STAGING_ERROR_MAX=40
STAGING_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
STAGING_PORTAL_TEMPLATE_HASH_ROWS=["0\tnewfi_portal\t1f484c8cf6bdeda8fda2974abf8a57f8cc7453fe2a779af7c735afa3b73aa741"]
STAGING_PORTAL_SOURCE_TREE_SHA256=a066546dcbef1321be989ccdcabdb195318e36cd3f33d2f90a2a88acb7ac44ae
GIT_PORTAL_SOURCE_PATH_CANDIDATES=["src/addons/Newfi/Portal"]
GIT_PORTAL_SOURCE_PATH=src/addons/Newfi/Portal
GIT_PORTAL_SOURCE_TREE_SHA256=a066546dcbef1321be989ccdcabdb195318e36cd3f33d2f90a2a88acb7ac44ae
GIT_PORTAL_SOURCE_FILE_COUNT=7
GIT_PRODUCTION_PORTAL_SOURCE_MATCH=true
GIT_STAGING_PORTAL_SOURCE_MATCH=true
PORTAL_SOURCE_PROD_STAGING_MATCH=true
PORTAL_TEMPLATE_PROD_STAGING_MATCH=true
STAGING_ADDON_REBUILD_HELP=Description:\n  Rebuilds the specified add-on data.\n\nUsage:\n  xf:addon-rebuild [options] [--] <id>\n  xf-addon:rebuild\n\nArguments:\n  id                    Add-On ID\n\nOptions:\n  -f, --force           Skip verifying that the add-on is rebuildable\n  -h, --help            Display help for the given command. When no command is given display help for the list command\n  -q, --quiet           Do not output any message\n  -V, --version         Display this application version\n      --ansi|--no-ansi  Force (or disable --no-ansi) ANSI output\n  -n, --no-interaction  Do not ask any interactive question\n  -v|vv|vvv, --verbose  Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug
STAGING_REBUILD_COMMAND_SOURCE_CANDIDATES=["/var/www/forums/newfi/public/src/XF/Cli/Command/AddOnRebuild.php"]
STAGING_REBUILD_COMMAND_SOURCE_SHA256=6ed0bc6d2b1509a2f4c9ec2d1d612c72f3ede01aca30ac60317eae68e12697ab
STAGING_REBUILD_COMMAND_RELEVANT_EXCERPT=["use Symfony\\Component\\Console\\Output\\OutputInterface;","use Symfony\\Component\\Console\\Question\\ConfirmationQuestion;","","class AddOnRebuild extends AbstractCommand","{","\tuse AddOnActionTrait;","\tuse JobRunnerTrait;","\tprotected function configure()","\t{","\t\t$this","\t\t\t->setName('xf:addon-rebuild')","\t\t\t->setAliases(['xf-addon:rebuild'])","\t\t\t->setDescription('Rebuilds the specified add-on data.')","\t\t\t->addArgument(","\t\t\t\t'id',","\t\t\t\tInputArgument::REQUIRED,","\t\t\t\t'Add-On ID'","\t\t\t)","\t\t\t->addOption(","\t\t\t\t'force',","\t\t\t\t'f',","\t\t\t\tInputOption::VALUE_NONE,","\t\t\t\t'Skip verifying that the add-on is rebuildable'","\t\t\t);","\t}","\t\t\treturn 1;","\t\t}","\t\tif (!$addOn->canRebuild() && !$input->getOption('force'))","\t\t{","\t\t\t$output->writeln(\"<error>\" . \\XF::phrase('this_add_on_cannot_be_rebuilt') . \"</error>\");","\t\tif (!$this->verifyAddOnAction($input, $output, $addOn))","\t\t/** @var QuestionHelper $helper */","\t\t$helper = $this->getHelper('question');","\t\t$question = new ConfirmationQuestion(\"<question>\" . \\XF::phrase('please_confirm_that_you_want_to_rebuild_following_add_on') . ': (' . $addOn->title . ' ' . $addOn->version_string . \") (y/n)</question>\");","\t\t$response = $helper->ask($input, $output, $question);","\t\tif (!$response)","\t\t$addOn->preRebuild();","\t\t$this->runSubAction($output, $addOn, 'import');","\t\t$this->runSubAction($output, $addOn, 'post-rebuild');","\t\treturn 0;"]
PRODUCTION_ROLLBACK_PREREQUISITES=tar=/usr/bin/tar\ndump=/usr/bin/mariadb-dump\n/dev/sda1         51392640 2041544  47212760       5% /\n/dev/sda1         51392640 2041544  47212760       5% /
STAGING_ROLLBACK_PREREQUISITES=tar=/usr/bin/tar\ndump=/usr/bin/mariadb-dump\n/dev/sda1         51392640 2005380  47248924       5% /\n/dev/sda1         51392640 2005380  47248924       5% /
PRODUCTION_PUBLIC_HTTP={"http":"200","rc":0}
STAGING_NGINX_SERVER_NAMES=["newfi-staging","newfi-staging.gram1.ru"]
STAGING_LOCAL_HTTP={"host":"newfi-staging","http":"503","rc":0}
HOLD_REASONS=[]
FINAL_DECISION=ELIGIBLE_FOR_PORTAL200_APPLY4_PREP
RECOVERY5_END=true

OUTPUT_END
CHAT_OUTPUT_END
