Skip to content

AI Project triage tools (ai 1.9.0) — Production Readiness Audit

FieldValue
Date2026-09-15
Re-audited2026-09-15
StatusGo for production — Backend + Docs; no SPA/Mobile code
ScopeAsk EloSync Project tools: existing get_project / search / overdue plus confirmed writes update_project_status / assign_project / add_project_note; get payload assigned_to (user id) + assignee_name; catalog ai 1.8.0 → 1.9.0
CompanionAI deployment · AI Expense triage · AI Purchase Order triage · AI tools · Tenant AI API · User guide · Projects · CHANGELOG

Executive summary

Additive AI tools depth on the existing AIGateway + AIToolRegistry + PendingAiActionService path. Reads: fetch one project (search + overdue kept). Writes: three low-risk tools that propose pending actions; mutations run only after POST /ai/actions/{id}/confirm. Status changes call ProjectService::changeStatus (same as HTTP POST …/status) and require projects.update. Assign uses projects.assign + EligibleProjectAssignee at propose and confirm. Notes are text-only with confirm-time max:5000. No new Spatie permissions, no Projects catalog bump, no Frontend/Mobile changes.

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

GateResult
Platform freeze (no parallel AI stack)Pass
UUID project lookup; soft-deleted excludedPass
Status propose/confirm: projects.update + changeStatusPass
Assign gated by projects.assign + eligible assignee (propose and confirm)Pass
Note gated by projects.update + policy update + body max 5000 on confirmPass
Propose does not mutatePass
Get payload exposes assigned_to (id) + assignee_namePass
Catalog migrate-only ai 1.9.0 + CatalogSeeder syncPass
Docs (tools, API, user tip, Projects cross-links, ops, roadmap, changelog, upgrade, VitePress)Pass
Pest write confirmation + registryPass
Playwright AI e2eN/A — no SPA surface change

Locked-decision matrix

DecisionBackendFrontendMobileDocs
Read tools include get one + existing search/overduePassPass
Confirmed writes via existing pending actionsPassPass (generic UI)Pass (generic UI)Pass
Status via HTTP /status semantics (changeStatus)PassPass
Catalog MINOR ai 1.9.0 only (not projects)PassPass

Authz map (HTTP ↔ AI)

ActionHTTPAI tool / confirm
Get oneviewget_project
Change statusupdate + POST …/statusupdate_project_statusProjectService::changeStatus
Assign / unassignassignassign_project + EligibleProjectAssignee at propose and confirm
Note (text)updateadd_project_note + confirm max:5000

Upgrade / staging smoke

After migrate (2026_09_15_090000_bump_ai_module_version_to_1_9_0):

  1. Confirm central catalog ai.version = 1.9.0 (do not db:seed).
  2. Workspace has AI + Projects entitled; user has ai.use, ai.confirm, and Project domain perms as needed.
  3. Ask EloSync: fetch project → propose status/assign/note → Confirm.
  4. View-only never gets writes; assign without projects.assign is excluded from the registry.

See Upgrade Guide · AI deployment.


Rollback

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

Official documentation for the EloSync SaaS Platform.