CHAT_OUTPUT_BEGIN
COMMAND_ID=SUPPORT-260918-GRAM-SUPPORT-STATUS-RU-EDGE-READONLY-516R2R3
STATUS=FAIL
RC=3
HOST=pve01
MODE=read-only
COMPONENT=gram-support-status-ru-edge-readonly
REFERENCE_REGISTER_CHECK=OK
REFERENCE_SHA256=5a3d8e5154c41cb582a4e0aca68090be1f0138918bf82131a948df326f9d8d66
ERROR_REGISTER_CHECK=OK
ERROR_REGISTER_SHA256=3b09a553ec0f527ed3afeed4753f52a74ee3036045bbfb3c685e9f8af4ba7ba0
COMMAND_SHA256=2676544fc2dd181e3bc5f4f98570fcd25c589e595ba573499830598b5bc5e3c2
DUPLICATE_FAILED_COMMAND_BLOCKED=false
EXECUTION_STARTED=true
CHANGE_DECLARED=false
RESULT_CONTRACT_VALID=true
RESULT_CONTRACT_STATUS=NOT_APPLICABLE
RESULT_CONTRACT_ERROR=NONE
COMMAND_RC=3
CHANGES_MADE=false
ROLLBACK_STARTED=false
ROLLBACK_RESTORED=null
MUTATION_OUTCOME=NO_MUTATION
SANITIZED=yes
SECRETS_INCLUDED=no
PRIVATE_ADDRESSES_INCLUDED=no
RAW_EVIDENCE_SHA256=a6e5bf8138ec51c112870bac14c73eae060532447dea04c183fa92074870bb80
SANITIZED_OUTPUT_SHA256=a6e5bf8138ec51c112870bac14c73eae060532447dea04c183fa92074870bb80
OUTPUT_BEGIN
GRAM516R2R3_SAFE_REPORT={"edge_https":{"/":{"http":"200","rc":0,"stderr_bytes":0,"stderr_sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"},"/support/":{"http":"303","rc":0,"stderr_bytes":0,"stderr_sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"},"/support/create/":{"http":"200","rc":0,"stderr_bytes":0,"stderr_sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"}},"edge_https_3of3_200":false,"err_truncated":false,"guest":{"error":null,"ok":true,"origin_http":{"/":"301|https://codevipe.ru/","/support/":"301|https://codevipe.ru/support/","/support/create/":"301|https://codevipe.ru/support/create/"},"runtime":{"addon_state":{"active":1,"version_id":1000120,"version_string":"1.0.0 Alpha 3 Unified Fix 10"},"error":null,"ok":true,"status_policy_constants":{"CLOSED":"CLOSED","IN_PROGRESS":"IN_PROGRESS","MAP":{"CLOSED":[],"IN_PROGRESS":["WAITING_USER","RESOLVED","CLOSED"],"NEW":["IN_PROGRESS","WAITING_USER","RESOLVED","CLOSED"],"RESOLVED":["IN_PROGRESS","CLOSED"],"WAITING_USER":["IN_PROGRESS","RESOLVED","CLOSED"]},"NEW":"NEW","RESOLVED":"RESOLVED","WAITING_USER":"WAITING_USER"},"status_policy_methods":["all","canTransition"]},"source":{"Pub/Controller/StaffSupport.php":{"line_count":178,"matched_context":[{"sep":true},{"line":4,"text":""},{"line":5,"text":"use Gram\\Support\\Notification\\EventDispatcher;"},{"line":6,"text":"use Gram\\Support\\Service\\Ticket\\Reply;"},{"line":7,"text":"use Gram\\Support\\Service\\Ticket\\StaffUpdate;"},{"line":8,"text":"use Gram\\Support\\Util\\StatusPolicy;"},{"line":9,"text":""},{"line":10,"text":"final class StaffSupport extends \\XF\\Pub\\Controller\\AbstractController"},{"line":11,"text":"{"},{"line":12,"text":"private function assertStaff(bool $manage = false): void"},{"sep":true},{"line":53,"text":"'gram_support_staff_ticket',"},{"line":54,"text":"["},{"line":55,"text":"'ticket' => $ticket,"},{"line":56,"text":"'messages' => $messages,"},{"line":57,"text":"'statusOptions' => StatusPolicy::all()"},{"line":58,"text":"]"},{"line":59,"text":");"},{"line":60,"text":"}"},{"line":61,"text":""},{"sep":true},{"line":92,"text":"$this->assertPostOnly();"},{"line":93,"text":"$this->assertStaff(true);"},{"line":94,"text":""},{"line":95,"text":"$ticket = $this->assertTicket();"},{"line":96,"text":"$newStatus = trim($this->filter('status', 'str'));"},{"line":97,"text":"$assignedUserId = (int)$this->filter('assigned_user_id', 'uint');"},{"line":98,"text":""},{"line":99,"text":"/** @var StaffUpdate $staffUpdate */"},{"line":100,"text":"$staffUpdate = $this->service(StaffUpdate::class);"},{"line":101,"text":"$staffUpdate->validateTransition((string)$ticket->status, $newStatus);"},{"line":102,"text":""},{"line":103,"text":"if ($assignedUserId > 0)"},{"line":104,"text":"{"},{"line":105,"text":"if (!\\XF::visitor()->hasPermission('gramSupport', 'assign'))"},{"sep":true},{"line":115,"text":"return $this->error(\\XF::phrase('gram_support_assignee_invalid'));"},{"line":116,"text":"}"},{"line":117,"text":"}"},{"line":118,"text":""},{"line":119,"text":"$oldStatus = (string)$ticket->status;"},{"line":120,"text":"$oldAssigned = (int)$ticket->assigned_user_id;"},{"line":121,"text":""},{"line":122,"text":"$db = \\XF::db();"},{"line":123,"text":"$db->beginTransaction();"},{"line":124,"text":""},{"line":125,"text":"try"},{"line":126,"text":"{"},{"line":127,"text":"$ticket->status = $newStatus;"},{"line":128,"text":"$ticket->assigned_user_id = $assignedUserId;"},{"line":129,"text":"$ticket->updated_date = \\XF::$time;"},{"line":130,"text":"$ticket->resolved_date = $newStatus === StatusPolicy::RESOLVED"},{"line":131,"text":"? \\XF::$time"},{"line":132,"text":": ($newStatus === StatusPolicy::CLOSED ? (int)$ticket->resolved_date : 0);"},{"line":133,"text":"$ticket->save();"},{"line":134,"text":""},{"line":135,"text":"$event = \\XF::em()->create('Gram\\Support:SupportEvent');"},{"line":136,"text":"$event->ticket_id = (int)$ticket->ticket_id;"},{"sep":true},{"line":139,"text":"$event->event_type = 'ticket_staff_updated';"},{"line":140,"text":"$event->event_date = \\XF::$time;"},{"line":141,"text":"$event->safe_payload_json = json_encode(["},{"line":142,"text":"'public_ref' => (string)$ticket->public_ref,"},{"line":143,"text":"'old_status' => $oldStatus,"},{"line":144,"text":"'new_status' => $newStatus,"},{"line":145,"text":"'old_assigned_user_id' => $oldAssigned,"},{"line":146,"text":"'new_assigned_user_id' => $assignedUserId,"},{"line":147,"text":"'is_internal' => false"},{"line":148,"text":"], JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE);"}],"present":true,"sha256":"6852bd0061d6e118851673bfd4099e2b22e6291bf09f429820740844996f93f9"},"Util/StatusPolicy.php":{"line_count":29,"matched_context":[{"sep":true},{"line":1,"text":"<?php"},{"line":2,"text":"namespace Gram\\Support\\Util;"},{"line":3,"text":""},{"line":4,"text":"final class StatusPolicy"},{"line":5,"text":"{"},{"line":6,"text":"public const NEW = 'NEW';"},{"line":7,"text":"public const IN_PROGRESS = 'IN_PROGRESS';"},{"line":8,"text":"public const WAITING_USER = 'WAITING_USER';"},{"line":9,"text":"public const RESOLVED = 'RESOLVED';"},{"line":10,"text":"public const CLOSED = 'CLOSED';"},{"line":11,"text":""},{"line":12,"text":"private const MAP = ["},{"line":13,"text":"self::NEW => [self::IN_PROGRESS, self::WAITING_USER, self::RESOLVED, self::CLOSED],"},{"line":14,"text":"self::IN_PROGRESS => [self::WAITING_USER, self::RESOLVED, self::CLOSED],"},{"line":15,"text":"self::WAITING_USER => [self::IN_PROGRESS, self::RESOLVED, self::CLOSED],"},{"line":16,"text":"self::RESOLVED => [self::IN_PROGRESS, self::CLOSED],"},{"line":17,"text":"self::CLOSED => []"},{"line":18,"text":"];"},{"line":19,"text":""},{"line":20,"text":"public static function canTransition(string $from, string $to): bool"},{"line":21,"text":"{"},{"line":22,"text":"return $from === $to || in_array($to, self::MAP[$from] ?? [], true);"},{"line":23,"text":"}"},{"line":24,"text":""}],"present":true,"sha256":"356f4b24d4b2a562105d3c7cc4f83ce198be11d15770c71ec2bf1d9ca43310f7"},"_data/phrases.xml":{"line_count":57,"matched_context":[{"sep":true},{"line":16,"text":"<phrase title=\"gram_support_screenshot_optional\" version_id=\"1000050\" version_string=\"1.0.0 Alpha 3 Unified Fix 3\">\u0421\u043a\u0440\u0438\u043d\u0448\u043e\u0442 (\u043d\u0435\u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e)</phrase>"},{"line":17,"text":"<phrase title=\"gram_support_submit\" version_id=\"1000050\" version_string=\"1.0.0 Alpha 3 Unified Fix 3\">\u0421\u043e\u0437\u0434\u0430\u0442\u044c \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u0435</phrase>"},{"line":18,"text":"<phrase title=\"gram_support_created_title\" version_id=\"1000050\" version_string=\"1.0.0 Alpha 3 Unified Fix 3\">\u041e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u0435 \u0441\u043e\u0437\u0434\u0430\u043d\u043e</phrase>"},{"line":19,"text":"<phrase title=\"gram_support_save_access_code\" version_id=\"1000050\" version_string=\"1.0.0 Alpha 3 Unified Fix 3\">\u0421\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u0435 \u044d\u0442\u043e\u0442 \u043a\u043e\u0434 \u0434\u043e\u0441\u0442\u0443\u043f\u0430. \u041e\u043d \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043a\u0430\u043a \u0441\u0435\u043a\u0440\u0435\u0442 \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u044e.</phrase>"},{"line":20,"text":"<phrase title=\"gram_support_open_ticket\" version_id=\"1000050\" version_string=\"1.0.0 Alpha 3 Unified Fix 3\">\u041e\u0442\u043a\u0440\u044b\u0442\u044c \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u0435</phrase>"},{"line":21,"text":"<phrase title=\"gram_support_status\" version_id=\"1000050\" version_string=\"1.0.0 Alpha 3 Unified Fix 3\">\u0421\u0442\u0430\u0442\u0443\u0441</phrase>"},{"line":22,"text":"<phrase title=\"gram_support_reply\" version_id=\"1000050\" version_string=\"1.0.0 Alpha 3 Unified Fix 3\">\u041e\u0442\u0432\u0435\u0442</phrase>"},{"line":23,"text":"<phrase title=\"gram_support_send\" version_id=\"1000050\" version_string=\"1.0.0 Alpha 3 Unified Fix 3\">\u041e\u0442\u043f\u0440\u0430\u0432\u0438\u0442\u044c</phrase>"},{"line":24,"text":"<phrase title=\"gram_support_my_tickets\" version_id=\"1000050\" version_string=\"1.0.0 Alpha 3 Unified Fix 3\">\u041c\u043e\u0438 \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u044f</phrase>"},{"line":25,"text":"<phrase title=\"gram_support_no_tickets\" version_id=\"1000050\" version_string=\"1.0.0 Alpha 3 Unified Fix 3\">\u041e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u0439 \u043f\u043e\u043a\u0430 \u043d\u0435\u0442.</phrase>"},{"sep":true},{"line":28,"text":"<phrase title=\"gram_support_internal_note\" version_id=\"1000050\" version_string=\"1.0.0 Alpha 3 Unified Fix 3\">\u0412\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u044f\u044f \u0437\u0430\u043c\u0435\u0442\u043a\u0430</phrase>"},{"line":29,"text":"<phrase title=\"gram_support_assigned_user_id\" version_id=\"1000050\" version_string=\"1.0.0 Alpha 3 Unified Fix 3\">ID \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u043d\u043e\u0433\u043e \u0441\u043e\u0442\u0440\u0443\u0434\u043d\u0438\u043a\u0430</phrase>"},{"line":30,"text":"<phrase title=\"gram_support_assignee_invalid\" version_id=\"1000050\" version_string=\"1.0.0 Alpha 3 Unified Fix 3\">\u0423\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u0439 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d.</phrase>"},{"line":31,"text":"<phrase title=\"gram_support_rate_limited\" version_id=\"1000050\" version_string=\"1.0.0 Alpha 3 Unified Fix 3\">\u0421\u043b\u0438\u0448\u043a\u043e\u043c \u043c\u043d\u043e\u0433\u043e \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u0439. \u041f\u043e\u043f\u0440\u043e\u0431\u0443\u0439\u0442\u0435 \u043f\u043e\u0437\u0436\u0435.</phrase>"},{"line":32,"text":"<phrase title=\"gram_support_open_support\" version_id=\"1000050\" version_string=\"1.0.0 Alpha 3 Unified Fix 3\">\u041f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430</phrase>"},{"line":33,"text":"<phrase title=\"gram_support_staff_offline_title\" version_id=\"1000050\" version_string=\"1.0.0 Alpha 3 Unified Fix 3\">\u041f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u043d\u0435\u0434\u043e\u0441\u0442\u0443\u043f\u043d\u0430 \u043e\u0444\u043b\u0430\u0439\u043d</phrase>"},{"line":34,"text":"<phrase title=\"gram_support_staff_offline_body\" version_id=\"1000050\" version_string=\"1.0.0 Alpha 3 Unified Fix 3\">\u0414\u043b\u044f \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0430 \u0442\u0438\u043a\u0435\u0442\u043e\u0432 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u043a \u0441\u0435\u0442\u0438. \u0414\u0430\u043d\u043d\u044b\u0435 \u0442\u0438\u043a\u0435\u0442\u043e\u0432 \u043e\u0444\u043b\u0430\u0439\u043d \u043d\u0435 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u044e\u0442\u0441\u044f.</phrase>"},{"line":35,"text":"<phrase title=\"gram_support_alert_ticket_event\" version_id=\"1000050\" version_string=\"1.0.0 Alpha 3 Unified Fix 3\">\u041e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u044f {public_ref}</phrase>"},{"line":36,"text":"<phrase title=\"gram_support_email_ticket_event_subject\" version_id=\"1000050\" version_string=\"1.0.0 Alpha 3 Unified Fix 3\">\u041e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u044f {public_ref}</phrase>"}],"present":true,"sha256":"ea6e84de301145312758285cfcd63ee4c12b8e921877bcde15c17dd4c115c434"},"_data/templates.xml":{"line_count":781,"matched_context":[{"sep":true},{"line":475,"text":"&lt;div class=\"block-row\"&gt;"},{"line":476,"text":"&lt;a href=\"{{ link('account/support/ticket', null, {'ref': $ticket.public_ref}) }}\"&gt;"},{"line":477,"text":"{{ $ticket.public_ref }} \u2014 {{ $ticket.subject }}"},{"line":478,"text":"&lt;/a&gt;"},{"line":479,"text":"&lt;span class=\"u-muted\"&gt;{{ $ticket.status }}&lt;/span&gt;"},{"line":480,"text":"&lt;/div&gt;"},{"line":481,"text":"&lt;xf:else /&gt;"},{"line":482,"text":"&lt;div class=\"block-row\"&gt;{{ phrase('gram_support_no_tickets') }}&lt;/div&gt;"},{"line":483,"text":"&lt;/xf:foreach&gt;"},{"sep":true},{"line":564,"text":"&lt;div class=\"block-row\"&gt;"},{"line":565,"text":"&lt;a href=\"{{ link('support/staff/ticket', null, {'ref': $ticket.public_ref}) }}\"&gt;"},{"line":566,"text":"{{ $ticket.public_ref }} \u2014 {{ $ticket.subject }}"},{"line":567,"text":"&lt;/a&gt;"},{"line":568,"text":"&lt;span class=\"u-muted\"&gt;{{ $ticket.status }}&lt;/span&gt;"},{"line":569,"text":"&lt;/div&gt;"},{"line":570,"text":"&lt;/xf:foreach&gt;"},{"line":571,"text":"&lt;/div&gt;"},{"line":572,"text":"&lt;/div&gt;"},{"sep":true},{"line":700,"text":""},{"line":701,"text":"&lt;xf:form action=\"{{ link('support/staff/update', null, {'ref': $ticket.public_ref}) }}\" method=\"post\" class=\"block\"&gt;"},{"line":702,"text":"&lt;div class=\"block-container\"&gt;"},{"line":703,"text":"&lt;div class=\"block-body\"&gt;"},{"line":704,"text":"&lt;xf:selectrow name=\"status\" value=\"{$ticket.status}\" label=\"{{ phrase('gram_support_status') }}\"&gt;"},{"line":705,"text":"&lt;xf:foreach loop=\"$statusOptions\" value=\"$status\"&gt;"},{"line":706,"text":"&lt;xf:option value=\"{$status}\"&gt;{$status}&lt;/xf:option&gt;"},{"line":707,"text":"&lt;/xf:foreach&gt;"},{"line":708,"text":"&lt;/xf:selectrow&gt;"},{"line":709,"text":"&lt;xf:textboxrow name=\"assigned_user_id\" type=\"number\" value=\"{$ticket.assigned_user_id}\""},{"sep":true},{"line":720,"text":"&lt;div class=\"block-container\"&gt;"},{"line":721,"text":"&lt;h2 class=\"block-header\"&gt;{{ $ticket.public_ref }}&lt;/h2&gt;"},{"line":722,"text":"&lt;div class=\"block-body\"&gt;"},{"line":723,"text":"&lt;div class=\"block-row\"&gt;"},{"line":724,"text":"&lt;strong&gt;{{ phrase('gram_support_status') }}:&lt;/strong&gt; {{ $ticket.status }}"},{"line":725,"text":"&lt;/div&gt;"},{"line":726,"text":"&lt;xf:foreach loop=\"$messages\" value=\"$message\"&gt;"},{"line":727,"text":"&lt;div class=\"block-row gramSupport-message\"&gt;"},{"line":728,"text":"&lt;div class=\"gramSupport-messageMeta\"&gt;{{ date_time($message.message_date) }}&lt;/div&gt;"},{"sep":true},{"line":748,"text":"&lt;/div&gt;"},{"line":749,"text":"&lt;/div&gt;"},{"line":750,"text":"&lt;/xf:if&gt;"},{"line":751,"text":""},{"line":752,"text":"&lt;xf:if is=\"$ticket.status != 'CLOSED'\"&gt;"},{"line":753,"text":"&lt;xf:form action=\"{{ link('support/reply', null, {'ref': $ticket.public_ref}) }}\" method=\"post\" class=\"block\"&gt;"},{"line":754,"text":"&lt;div class=\"block-container\"&gt;"},{"line":755,"text":"&lt;div class=\"block-body\"&gt;"},{"line":756,"text":"&lt;xf:textarearow name=\"message\" required=\"required\" rows=\"6\""}],"present":true,"sha256":"1a344bd306135486d2019bf0a5cafff5eb472882f7b3433ef13af4556a4c791e"}}},"guest_stderr_present":false,"inner_rc":0,"ok":true,"out_truncated":false,"transport_rc":0,"transport_stderr_bytes":0,"transport_stderr_sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"}
GRAM516R2R3_DECISION=HOLD_STATUS_RU_OR_EDGE_EVIDENCE_INCOMPLETE
GRAM516R2R3_NEXT_GATE=STOP_NO_MUTATION
HOMELAB_RESULT_CONTRACT={"version":1,"command_id":"SUPPORT-260918-GRAM-SUPPORT-STATUS-RU-EDGE-READONLY-516R2R3","status":"FAIL","changes_made":false,"rollback_started":false,"rollback_restored":null}

OUTPUT_END
CHAT_OUTPUT_END
