Revert a Lilith-controlled persona version that has produced identity drift, tone violation, disclosure failure, or refusal-policy regression in production. Persona versions are tightly bound to Lilith policy and AI-disclosure compliance; a persona rollback always involves T&S.
Scope#
Triggers:
- Persona identity drift — customer-visible persona does not match its certified identity (name, voice, body of memory, allowed topics).
- Tone regression — persona drifts off the certified tone policy (excessively casual, off-brand, inconsistent with persona archetype).
- Disclosure failure — AI-disclosure copy missing, mistimed, or rendered in the wrong locale.
- Refusal regression — refusal class fires incorrectly (false positive) or fails to fire when it should (false negative).
- Memory binding regression — persona retrieves memory from the wrong scope (cross-persona or cross-tenant).
- Voice or avatar identity mismatch — persona voice/avatar diverges from its certified lineage.
This is a focused subtype of model-workflow-rollback.md. The persona runbook
owns the customer-disclosure and T&S coordination steps; the model runbook
handles general model-version rollback procedure.
Severity classification#
| Sev | Condition |
|---|---|
| sev1 | Identity confusion — persona is misrepresented as a different person, lineage, or affiliation, OR disclosure missing on a regulated surface. |
| sev1 | Refusal bypass on a safety-critical class (self-harm, minors, medical) under the persona. |
| sev2 | Tone regression sustained; refusal false-positive rate >2× baseline; voice/avatar lineage mismatch with no identity impact. |
| sev3 | Localized disclosure or formatting regression on a non-critical surface; cosmetic tone drift. |
Source events: assistant.persona.identity_confirmed,
assistant.persona.disclosure_shown, assistant.persona.refusal_applied,
admin.persona.promoted, admin.persona.rolled_back.
Detection signals#
- Alerts:
persona-policy-violation. - Dashboards: persona panels on
dashboards-assistant.ts— identity confirmation rate, disclosure render rate, refusal class breakdown, tone evaluation rolling average. - Customer signals: spike in
assistant.persona.identity_disputed_by_user,assistant.disclosure.banner_dismissed_rapidly. - Admin signals: T&S queue
review.persona.appealorreview.persona.identity_complaint.
Rollback procedure#
- Identify the certified prior version: read
release-taxonomy.tsfor the persona target. The previousadmin.persona.certifiedrecord is the rollback destination. - Confirm joint baseline with the underlying LLM: each certified persona is
bound to a certified Lilith policy version and an LLM version. The rollback
must move all three back together (persona, policy, LLM) — moving only the
persona row creates a mismatched refusal baseline and a fresh
persona-policy-violationalert. - Disable the current persona version: call the persona-rollback hook in
release-taxonomy. The hook emits
admin.persona.rolled_backwith the source, destination, operator, and reason code. - Fallback to certified lineage: if no prior certified version exists
(first persona launch), fall back to the disclosure-only mode — the persona
is suspended and customer sessions see the
assistant.persona.unavailable_shownevent-driven banner with a reason copy block authored by T&S. - Invalidate persona caches: persona prompt caches, memory binding caches,
and voice/avatar selection caches must be invalidated; the
assistant.persona.cache_invalidatedevent records the operation. - Re-run the persona evaluation: gather the persona-evaluation run for the
rolled-back version from
evaluation-manifest.tsscopepersona. Compare to baseline. The result is filed against the incident.
Customer-visible handling#
- Always disclose the change to active customer sessions interacting with
the persona. The
assistant.persona.identity_changedevent renders the canonical disclosure copy from the i18n catalog (libs/oshun/i18n/) — do not improvise. - Memory continuity: rolled-back persona reads its certified memory scope;
any memory written during the regressed-version window is flagged for customer
review. The customer sees the
assistant.memory.regressed_window_flaggedUI to accept or discard the flagged memory. - Voice/avatar identity: if voice or avatar lineage rolled back, the identity-changed disclosure also runs through voice mode (audible disclosure) and avatar mode (visual disclosure) per the assistant fallback policy.
Communication cadence#
| Phase | Template ID | Audience | Cadence |
|---|---|---|---|
| Internal | incident.internal.slack.investigating |
internal | within 2 min |
| Identified (customer-visible) | incident.customer.status_page.identified |
status_page | within 30 min |
| Customer disclosure (in-session) | assistant.persona.identity_changed (event-driven copy) |
customer | next interaction |
| Resolved | incident.customer.status_page.resolved + .email.resolved |
both | within 60 min |
| Postmortem | incident.customer.status_page.postmortem |
status_page | within 5 biz day |
T&S co-authors the customer-disclosure and email copy. The status-page text never names the persona by internal version; use the customer-facing persona name only.
Escalation#
- T&S lead is the incident commander for persona rollbacks.
- For sev1 identity-confusion or safety-class bypass, page T&S, privacy (for memory implications), and legal at minute 0.
- Standard 5/5/15/30/60 escalation otherwise applies.
Recovery verification#
- Persona-evaluation scope passes thresholds against the rolled-back version.
- Refusal-class rates within ±1 sigma of the certified baseline for 60 min.
- Disclosure-render rate ≥ 99.9% on the affected surface for 60 min.
- Identity-confirmation rate recovered to baseline.
- No new
assistant.persona.identity_disputed_by_userclusters for 30 min. - Cache invalidation verified by trace-attribute sampling on the persona's prompt-cache key.
Post-incident#
- Postmortem must include: the persona version regression class (identity / tone / disclosure / refusal / memory / lineage), the joint baseline (persona + policy + LLM) before and after, the evaluation run artifacts, the customer-impact cohort estimate, and the T&S decision log.
- Update the persona evaluation fixtures to include the regressed case so the next promotion catches it.
- Update the disclosure i18n catalog if a locale-specific failure was observed.
- If memory was affected, run the privacy-impact note path from
privacy-incident.mdeven if no exposure occurred — customer-visible memory state must be reconciled.