Skip to content

AI Lead assign + note tools (ai 1.12.0) — Production Readiness Audit

FieldValue
Date2026-09-15
Re-audited2026-09-15
StatusGo for production — Backend + Docs; no SPA/Mobile code
ScopeAsk EloSync Lead writes: confirmed assign_lead / add_lead_note (status + Copilot already shipped); get/search payloads assigned_to (user id) + assignee_name; catalog ai 1.11.0 → 1.12.0
CompanionAI deployment · AI Payment triage · AI Expense triage · AI tools · Tenant AI API · User guide · Leads · CHANGELOG

Executive summary

Additive AI tools depth on the existing AIGateway + AIToolRegistry + PendingAiActionService path. Existing Lead reads (search_leads, get_lead, stale/recent) and update_lead_status stay. New writes: assign/unassign and text note — both propose pending actions; mutations run only after POST /ai/actions/{id}/confirm. Assign uses leads.assign + EligibleLeadAssignee at propose and confirm (optional reason, max 500). Notes require leads.update with confirm-time max:5000. No new Spatie permissions, no Leads catalog bump, no Frontend/Mobile changes.

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

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

Locked-decision matrix

DecisionBackendFrontendMobileDocs
Existing Lead reads + status write unchangedPassPass
Confirmed assign + note via existing pending actionsPassPass (generic UI)Pass (generic UI)Pass
Catalog MINOR ai 1.12.0 only (not leads)PassPass

Authz map (HTTP ↔ AI)

ActionHTTPAI tool / confirm
Get / searchviewget_lead / search_leads (existing)
Change statusupdateupdate_lead_status (existing)
Assign / unassignassignassign_lead + EligibleLeadAssignee at propose and confirm
Note (text)updateadd_lead_note + confirm max:5000

Upgrade / staging smoke

After migrate (2026_09_15_120000_bump_ai_module_version_to_1_12_0):

  1. Confirm central catalog ai.version = 1.12.0 (do not db:seed).
  2. Workspace has AI + Leads entitled; user has ai.use, ai.confirm, and Lead domain perms as needed.
  3. Ask EloSync: fetch lead → propose assign/note → Confirm (status still via existing update_lead_status).
  4. Assign without leads.assign is excluded; view-only never gets writes.

See Upgrade Guide · AI deployment.


Rollback

Redeploy previous Backend release. Catalog version may remain 1.12.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.