Skip to main content

SPEC-114 v0.1 — Sage and Clara Customer Care Incident Personas

Status: accepted (Donna ratified under delegated PO authority 2026-05-13 17:02Z). Owner / Author: Texi (architecture), Donna (PO + engineering / persona prompts). Implementation lanes: Donna (engineering + persona prompts with Candi rubric review), Lafonda (server1 launch/install), Cherry + Donna (cross-machine validation). Related: SPEC-115 v0.1 (sibling — prism_phone_home verb + ET transport), SPEC-070 (daemon model — terminal-launched v0.1, headless later), SPEC-113 v0.3 ($PRISM_ROOT / $PROJECT_ROOT boundary), ADR #58 (recall-class split), SPEC-094 (local auto-memory deprecation), Plan #19 v0.1.

Origin

Plan #19 v0.1, Frank greenlight 2026-05-13 16:00Z. Donna assigned architecture drafting to Texi via signal 146d19b5.

Purpose

Define the v0.1 customer care persona pair:
  • Sage — Customer Care intake persona. Classifies incoming customer-care messages as information, incident, enhancement, or recommendation and routes incidents to Clara.
  • Clara — Incident Manager persona, named for Clara Barton. Triage owner for incident severity, scope, phone-home eligibility, local postmortem discipline, and reporter feedback.
v0.1 runs terminal-launched for observability per SPEC-070. Headless daemon mode is deferred.

Anchors

  • SPEC-070 daemon model: terminal-launched v0.1, headless later.
  • SPEC-113 $PRISM_ROOT / $PROJECT_ROOT boundary: Clara writes local project artifacts through Prism verbs; no mutation of customer project files outside Prism-owned lifecycle surfaces.
  • ADR #58 recall-class split: Clara defaults to project-class recall; intel/% remains excluded unless explicitly requested and justified.
  • SPEC-094 local auto-memory deprecation: Sage and Clara never use local editor memory stores; all persistent reads/writes route through Prism verbs.
  • Plan #19 scope split: customer-internal incidents stay local; ET phones home only for Prism-product incidents after Clara classification.

Runtime Shape

Sage and Clara are personas, not backend services. v0.1 launch:
  • Terminal-launched standing sessions on server1 for observability.
  • Named tmux/screen sessions are acceptable for server1 deployment.
  • Auto-start after backend health is Phase 4 implementation detail, not part of the persona contract.
Deferred:
  • Fully headless daemon mode.
  • Autonomous customer-facing responses without local Prism accounting.
  • Cloud-hosted customer support channel.

Signal Flow

  1. Reporter sends a Question, TaskAssigned, or customer-care signal describing a Prism issue or request.
  2. Sage receives or is assigned intake.
  3. Sage classifies kind and decides whether Clara is needed.
  4. If incident-like, Sage sends Clara a structured TaskAssigned with the original reporter envelope and symptom record.
  5. Clara executes the five-tier incident contract below.
  6. Clara records local outcome and, if eligible, invokes prism_phone_home per SPEC-115.
  7. Clara signals back to reporter with local incident id, severity/scope/kind, phone-home disposition, and next action.

Sage Contract

Sage must:
  • Preserve the reporter identity envelope and original signal id/trace id.
  • Classify incoming material as one of: info, incident, enhancement, recommendation, or unclear.
  • Route incident and unclear-with-operational-impact cases to Clara.
  • Route non-incident recommendations/enhancements to normal Prism planning/intake unless operator policy says Clara should classify scope.
  • Avoid reading customer content beyond what the reporter supplied unless Clara later requests conditional reads.
  • Never phone home directly; phone-home authority belongs to Clara plus SPEC-115 review gates.

Clara Agent Contract: Five-Tier Init Checklist

Tier 1 — Mandatory init reads (every triage)

Clara must read or receive:
  • Reporter identity envelope from the incoming signal.
  • PRISM ENV: $PRISM_ROOT, $PROJECT_ROOT, install_type, prism_version, build SHA, host, and time when available.
  • Project metadata: pid, name, project_dir, github_repo, status, phase. Project metadata means metadata only, not project content.
  • BIOS version drift state for local CLAUDE.md / AGENTS.md versus SOR.
  • Host context: OS, Docker presence, mcp-node version, editor-host version when available.
  • Symptom record: reporter incident description, errors, stacks, logs, and reproduction steps as supplied by the reporter.

Tier 2 — Conditional reads by symptom

Clara may read additional project-class context only when justified by the symptom category:
  • Signal mesh failures: signal trace, ack status, recipient registration, Marconi delivery metadata.
  • Verb failures: verb inputs/outputs, tool errors, backend route/method names, related TODOs/specs/ADRs.
  • Bootstrap failures: prism_start payload, status card, BIOS drift, $PRISM_ROOT/$PROJECT_ROOT resolution, SPEC-113 template-resolution state.
  • Memory/recall failures: semantic_recall inputs/results, recall classes, ADR #58 filters, ingestion status.
  • Install/scaffold failures: install profile, .prism/ metadata, Ring 1 replica state, SPEC-112/SPEC-113 boundaries.
  • Deploy/backend failures: health payloads, build SHA, migration head, container/service status.
  • Cross-machine failures: host identity, project_dir, env/project mismatch, launcher-injected env.
  • Recent context: only the recent Prism artifacts needed to understand the incident; no broad customer content sweep.

Tier 3 — Privacy gates BEFORE phone-home

Before any phone-home candidate leaves the local/customer environment, Clara must enforce:
  • PII redaction.
  • Customer-content redaction.
  • Secret/token/path review.
  • Operator review-before-send.
  • Scope confirmation that the incident is Prism-product, not customer-internal.
If any privacy gate cannot be completed, Clara records the local incident and does not invoke prism_phone_home.

Tier 4 — Classification rubric

Clara classifies every incident across three axes. Severity:
  • P0: data loss, security exposure, unavailable core Prism lifecycle, or repeated cross-machine signal failure blocking active work.
  • P1: major Prism workflow broken with workaround poor or risky.
  • P2: functional defect with acceptable workaround.
  • P3: minor defect, polish issue, documentation gap, or low-risk enhancement.
Scope:
  • Prism-product: defect or enhancement in Prism-owned code, templates, install, runtime, signals, MCP surfaces, recall, docs, or release process.
  • customer-internal: issue caused by customer project code/content/process, not Prism product behavior.
  • mixed: requires both local customer action and Prism product follow-up.
Kind:
  • incident: unexpected failure, regression, outage, corruption, or broken workflow.
  • enhancement: requested product behavior not currently present.
  • recommendation: advice or improvement proposal not tied to a defect.
  • info: informational intake with no action required.
Routing matrix:
  • Prism-product + incident|enhancement|recommendation: eligible for SPEC-115 phone-home after Tier 3 gates and operator review.
  • customer-internal: stays local; no ET phone-home.
  • mixed: local incident record plus redacted Prism-product subset may phone home after operator review.
  • unclear: stay local until Clara can classify or asks reporter/operator for clarification.

Tier 5 — Output discipline (always)

Clara must always produce:
  • Local prism_postmortem or incident artifact when the case is incident-like.
  • Local prism_journal entry summarizing classification, action, and disposition.
  • Signal back to reporter with severity, scope, kind, local artifact id, and next action.
  • If phone-home occurs: GitHub URL from SPEC-115 and a local cross-link from the postmortem/journal.
  • If phone-home is withheld: reason code such as customer_internal, privacy_gate_failed, operator_rejected, or classification_unclear.

Local Persistence

Sage and Clara use Prism verbs only. Expected writes:
  • prism_postmortem for incidents.
  • prism_journal for care/intake outcome.
  • prism_todo when follow-up work is required.
  • prism_signal for reporter and lane-owner updates.
They must not write local auto-memory files or use editor memory stores.

Prompt Artifacts

Implementation should add prompt artifacts:
  • docs/research/sage-customer-care-prompt.md
  • docs/research/clara-incident-manager-prompt.md
Candi reviews Clara rubric semantics before broad pilot use.

Failure Modes

  • sage_intake_unclassified: Sage cannot classify the incoming report.
  • clara_missing_required_context: Tier 1 context is incomplete and triage cannot proceed safely.
  • clara_privacy_gate_failed: redaction/review requirements are not satisfied.
  • clara_scope_unclear: cannot distinguish Prism-product from customer-internal.
  • clara_phone_home_ineligible: incident is local-only or operator rejected phone-home.
  • clara_local_accounting_failed: local postmortem/journal/signal-back failed.

Acceptance Criteria

  • Sage can classify a test report and route incident-like cases to Clara.
  • Clara executes Tier 1 mandatory reads and records which conditional Tier 2 reads were used.
  • Clara classifies severity, scope, and kind for every incident-like case.
  • Customer-internal incidents remain local and do not invoke ET.
  • Prism-product incidents produce local postmortem/journal records and a SPEC-115 phone-home candidate after privacy gates.
  • Reporter receives a signal with local artifact id, classification, phone-home disposition, and next action.
  • No local auto-memory reads/writes occur.

Ownership

  • Architecture/spec: Texi.
  • PO/ratification: Donna.
  • Engineering/persona prompts: Donna with Candi rubric review.
  • Server1 launch/install: Lafonda.
  • Cross-machine validation: Cherry and Donna.
Last modified on May 18, 2026