An AI feature spec that only describes success is half a spec. This playbook builds the failure-mode catalog — hallucination, wrong-but-confident answers, refusal, stale data, prompt injection, latency spikes, cost runaway — and writes each one as a numbered requirement: detection signal, user-visible behavior, fallback, human handoff, and logging.
Workflow area: AI Requirements & Agent Redesign · Tier: Advanced · Hands-on time: ~45 minutes
Deterministic systems fail loudly — exceptions, error codes, timeouts. AI features fail politely: the answer arrives on time, well-formatted, and wrong. That inversion is why failure handling cannot be left to developers to improvise; it is requirements work. The BA who catalogs failure modes and specifies the response to each has written the part of the spec that determines whether the first production incident is a logged, handled event or a customer-facing disaster with no playbook.
Start from the standard catalog, then localize it. The recurring failure classes for LLM features: fabrication (invented facts, citations, amounts), confident misclassification, unjustified refusal or over-escalation, stale knowledge (the model's world ended before your fiscal year), context overflow (long inputs silently truncated), prompt injection (instructions smuggled in via processed content), personal-data leakage in outputs, latency degradation, cost runaway, and upstream model-version drift. For each, ask the SME: what does this look like in OUR process, and what does it cost when it happens?
Generate the localized catalog with AI, against your feature spec. Prompt:
You are a requirements analyst. Against the AI feature described
below, produce a failure-mode catalog as a table:
ID | Failure mode | Concrete example in THIS feature |
Detection signal | User-visible behavior | Fallback |
Human handoff | Logged data
Cover at minimum: fabrication, confident misclassification,
refusal/over-escalation, stale data, truncated context, prompt
injection via processed content, personal-data leakage, latency
> [X]s, cost > [Y]/case, model-version drift.
Rules: examples must be realistic for this feature and audience.
If a detection signal is not feasible, write DETECTION GAP —
do not invent one.
Feature spec: [PASTE]
Review every row — the model will propose plausible detection signals that your architecture cannot actually produce; each of those becomes either a new technical requirement or an honest DETECTION GAP.
Rewrite each row as numbered requirements. One failure mode yields a small family of clauses. The pattern:
FM-03 Fabricated reference data
R-FM-03.1 The system SHALL validate every extracted policy
number against the policy master before display;
non-matching values render as "unverified" with
the source snippet, never as data.
R-FM-03.2 WHEN validation fails, the case SHALL route to the
review queue within 60s with reason code FAB-REF.
R-FM-03.3 The user-facing message SHALL NOT display the
fabricated value as fact.
R-FM-03.4 Each FAB-REF event SHALL be logged with input hash,
model version, prompt version, and output — retained
per the audit-log requirement (see pb-45 clauses).
EARS phrasing (WHEN/WHILE/IF-THEN) keeps every clause atomic and testable — the same lint discipline as pb-19, applied to failure paths.
Specify the fallback ladder, not a single fallback. For each high-impact mode, define graduated behavior: degrade (show the source document instead of the summary), divert (route to the human queue with context attached), disable (feature-level kill switch, who can pull it, what users see when it's off). The kill switch is a requirement with an owner and an SLA — write it, because pb-52's incident process will depend on it existing.
Attach test cases and close the loop with the eval set. Every detection and fallback clause gets at least one test case: seeded fabrications, an injection string embedded in a processed document, a forced timeout. Add the adversarial cases to the golden set (pb-48) so regression runs exercise failure paths forever, and hand the catalog's high-impact rows to whoever owns the oversight spec (pb-45) and incident matrix (pb-52).
The failure catalog itself is sensitive — it documents exactly how to break your system, including working injection strings; store it with restricted access, keep adversarial test cases out of public repos, and share the vendor-facing subset under NDA rather than the full internal catalog.
AI features fail politely — on time, well-formatted, and wrong — so failure handling must be specified, not improvised: a catalog where every mode carries a detection signal, a user-visible behavior, a fallback with an SLA, and a logged trail is the difference between an incident and a handled event.