Skip to content

AI Help Desk triage tools (ai 1.4.0) — Production Readiness Audit

FieldValue
Date2026-09-15
StatusGo for production — audit remediations closed; Backend + Docs; no SPA/Mobile code
ScopeAsk EloSync Help Desk tools: get_help_desk_ticket, confirmed writes update_help_desk_ticket_status / assign_help_desk_ticket / add_help_desk_ticket_note; catalog ai 1.3.0 → 1.4.0
CompanionAI deployment · AI production readiness (platform) · AI workspace search · AI tools · Tenant AI API · User guide · CHANGELOG

Executive summary

Additive AI tools depth on the existing AIGateway + AIToolRegistry + PendingAiActionService path. One read tool and three low-risk writes that propose pending actions; mutations run only after POST /ai/actions/{id}/confirm. Status confirm reuses Help Desk close/reopen/update gates. Notes are text-only with confirm-time max:5000. Confirm-time assign re-validates EligibleHelpDeskAssignee. No new permissions, no Help Desk catalog bump, no Frontend/Mobile changes (confirm UI is tool-agnostic).

Go / No-Go: Go. Cutover: migrate-only catalog bump to 1.4.0, entitle ai + help-desk, staging smoke propose→confirm.

GateResult
Platform freeze (no parallel AI stack)Pass
UUID ticket lookup; soft-deleted excludedPass
Status transition validated before proposePass
Status confirm mirrors controller close/reopen/updatePass
Assign gated by help-desk.assign + eligible assignee (propose and confirm)Pass
Note gated by help-desk.update + policy update + body max 5000 on confirmPass
Propose does not mutatePass
Catalog migrate-only ai 1.4.0 + CatalogSeeder syncPass
Docs (tools, API, user tip, Help Desk cross-links, roadmap, changelog, upgrade, VitePress)Pass
Pest write confirmation + registry authzPass34/34 (AiWriteConfirmationTest 22 + AiAuthorizationTest 12)
Playwright AI e2eN/A — no SPA surface change

Locked-decision matrix

DecisionBackendFrontendMobileDocs
Four tools only (no Help Desk Copilot)PassPass
Confirmed writes via existing pending actionsPassPass (generic UI)Pass (generic UI)Pass
Registry update for status visibility; close/reopen at propose+confirmPassPass
Catalog MINOR ai 1.4.0 only (not help-desk)PassPass

Findings

Closed (audit remediations)

IDSeverityFindingResolution
F1HighConfirm assign skipped EligibleHelpDeskAssignee (TOCTOU)Validate on confirm; Pest when assignee suspended
F5LowConfirm note did not re-check max:5000Validator on confirm; Pest oversized body → 422
R1MediumMissing Pest for propose-close deny, unassign, illegal transition, soft-deleteFive residual Pest cases
A1LowThin readiness page vs ai 1.3.0 siblingThis audit expanded
R4LowAI pages missing from VitePress sidebarsUser/API/dev AI entries + Help Desk cross-links

Accepted (intentional / ops — not defects)

IDSeverityNotes
R2InfoStatus tool registry requires help-desk.updateparity with ChangeHelpDeskTicketStatusRequest
R3OpsPlatform AI still needs Central ai_api_key + adequate FPM timeouts (unchanged)

Done (engineering)

ItemResult
Tools + confirm path + assign eligibility + note maxPass
Migration + CatalogSeeder ai 1.4.0Pass
Docs same-PR + sidebar discoverabilityPass

Test evidence

bash
vendor/bin/pest tests/Feature/Tenant/Ai/AiWriteConfirmationTest.php   # 22 passed
vendor/bin/pest tests/Feature/Tenant/Ai/AiAuthorizationTest.php     # 12 passed
vendor/bin/pint --dirty --format agent

Upgrade / staging smoke

After migrate (2026_09_15_040000_bump_ai_module_version_to_1_4_0):

  1. Confirm central catalog ai.version = 1.4.0 (do not db:seed).
  2. Workspace has AI + Help Desk entitled; user has ai.use, ai.confirm, and Help Desk domain perms as needed.
  3. Ask EloSync: list open tickets → fetch one → propose status/assign/note → Confirm.
  4. User without help-desk.assign never gets assign tool; without help-desk.close cannot propose or confirm resolve/close.
  5. Optional: propose assign, suspend assignee, Confirm → 422.

See Upgrade Guide · AI deployment.


Operator remaining

#ActionOwnerStatus
1Merge Backend + Docs remediation PRs (if not already on main)EngTodo
2Deploy Backend; migrate catalog ai → 1.4.0OpsTodo
3Staging smoke propose→confirmOpsTodo

Rollback

Redeploy previous Backend release. Catalog version may remain 1.4.0 (display-only); tools disappear with the code rollback. Pending actions for removed tools fail confirm with unsupported tool — cancel or let expire (24h).


Monitoring

Unchanged from AI platform readiness: credit wallet / ai_usage_events, ai.chat_completed, HTTP 402 when credits exhausted. Help Desk domain events still fire on confirm mutations.


Verdict

Go for production after remediation merge (if needed) + migrate-first Backend deploy + staging smoke. No SPA/Mobile deploy required. All fixable audit findings closed; R2/R3 are intentional parity / ops.

Official documentation for the EloSync SaaS Platform.