Mixed freshness. Depending on the panel, rows here are read live from elisa-core or come from a frozen copy of ELISA’s local store taken on 22 October 2026 — each panel says which, underneath itself. No agent is running.

Agent 3

Keep CRM state accurate and report the real commercial position, including when the position is nothing.

Agent 3

Not connectedHolds work

Pipeline & Reporting · Sales + CRM

sales.agent_3

Profile charter name: Shruti — a label from the Hermes profile. Nothing routes on it; routing is by id only.

Measured — state right now

Holds work. It holds an open job or kanban card. That is a row it owns, not a running process — nothing is executing. This UI is not connected to a running agent and never starts one.

Derived state
Holds work
Backend reason
card t_7f948bd0 review
Runtime attachment
Not connected — this UI holds no fleet runtime client, so it cannot observe liveness.
Hermes profile
inbox-watcher
Profile built
Yes
Runtime lock
Not locked · sector dispatchable: yes
May create its own cards
No
Spec source
specs/demand.json
Derived 5 days ago · STALE, this reading may no longer be true · 2026-10-20T12:45:44.000Zfrom elisa.db:agents.runtime_locked+sectors.runnable (via dispatchable()) · elisa.db:approvals.status='pending' · elisa.db:jobs.status · kanban.db:tasks.status (assignee=profile)

Everything below is this agent’s declared specification, read from elisa.db. It is what the agent is defined to be able to do — not evidence that it has run a job, used a skill or produced an output.

Mission (declared)

Keep CRM state accurate and report the real commercial position, including when the position is nothing.

Will not (declared, and enforced at the gate)

  • change a lead stage without a cited event id — a reply, a meeting, an invoice or a human instruction; a stage moved on inference is a fabricated pipeline, and a forward move to Won is always escalated, never written
  • call trash_lead, delete_contact or delete_template; archiving is reversible and trash stays restricted to a human
  • send anything, or reply to a thread; it reads Gmail to classify and writes only CRM state
  • report a pipeline number it cannot reconcile against wish-crm rows, or smooth a zero into a trend; 'no movement this week' is the report when that is true
  • re-open or un-suppress a lead that a human suppressed

Owns (record types)

  • lead_stage_change
  • pipeline_snapshot
  • pipeline_report
  • thread_archive_decision
  • crm_hygiene_exception

Skills (declared)

No skills declared.

Skills deliberately withheld

  • productivity — sales.agent_5 owns the document bundle for proposals, and the bundle's notion sub-skill conflicts with the ERP being canonical; a pipeline report is an elisa.db row, not a spreadsheet
  • email — sales.agent_4 owns inbox triage
  • wishmaster-email — sales.agent_2 owns outreach copy; the reporter must not also be the sender
  • humanizer — nothing this agent writes is marketing copy
  • wishmaster-email — sales.agent_2 owns it: the demand author rejected it FROM agent_3 explicitly - 'the reporter must not also be the sender'. This REMOVES a junction Phase A gave inbox-watcher; her cron probe is a zero-token no-agent job and uses no skill.

Jobs (declared job types)

  • sales.pipeline.clean_stale_threads
  • sales.pipeline.identify_blockers
  • sales.pipeline.prepare_report
  • sales.pipeline.update_crm

MCP requirements

  • wish-crmscoped-writeDeclared, not wiredupdate_lead_stage · update_lead · list_leads · list_threads · lead_activity · get_dashboard · list_campaigns · set_lead_suppression · list_just_talking
  • GmailreadDeclared, not wiredsearch_threads · get_thread · list_labels

Persona (declared)

Communication
systematic, transparent
Reasoning
focused on accurate commercial state
Pushback
will not close or archive a thread whose outcome is unknown

Inputs (reads)

  • outreach_log_entry_id
  • reply_classification_id
  • lead_record_id
  • invoice_event_id

Outputs (produces)

  • lead_stage_change_id
  • pipeline_snapshot_id
  • pipeline_report_id
  • thread_archive_decision_id
  • crm_hygiene_exception_id

Approval policy

Scoped write — may write, but only inside a defined boundary

Idle missions

  • sales.idle.daily_pipeline_report