
The Answer Is Optional: An Abstention Contract for AI
A practical guide to deciding when AI should answer, seek evidence, defer, or refuse using calibrated signals, risk–coverage curves, and fallback capacity.
Read MoreZharfAI Team

A support agent returns after an outage. Its customer database has been restored to 09:40, the object store to 09:55, the vector index from last night's snapshot, and the system prompt from a release deployed at 10:05. The service answers requests and every health check is green. It is also an impossible assembly: some documents do not yet exist in the database, some embeddings describe files that have since changed, and the prompt assumes a tool schema that the restored connector does not support.
The reader decision is therefore not merely “Do we have backups?” It is: for each part of this AI system, should we restore it, rebuild it, or deliberately abandon it—and what common recovery cut makes the resulting assembly safe to serve? A successful restore returns bytes. A successful recovery returns a coherent business capability with known loss, compatible components, reconciled external effects, and evidence that the system is fit to resume.
Traditional recovery objectives remain necessary. The AWS disaster-recovery guide defines recovery point objective, or RPO, around acceptable data loss and recovery time objective, or RTO, around acceptable downtime. The Google Cloud planning guide, last reviewed in July 2024, similarly starts with business impact and notes that tighter RPO and RTO usually cost more and add operational complexity.
Those objectives do not answer whether separately recovered components agree. An AI capability can meet a database RPO while its retrieval index, prompt, policy, tool registry, and conversation state refer to different histories. ZharfAI's analysis adds a consistency condition: the recovery point is valid only when every retained component can be traced to one compatible cut or safely reconstructed from it.
Write the recovery acceptance statement in business language. For example:
By 12:00, support staff can read all customer cases committed before 09:42, no post-09:42 action is silently repeated, every answer uses release 18's approved prompt and policy, and any uncertain ticket or message is held for reconciliation.
This statement makes loss, timing, version, and external effects reviewable. “Database restored” does not.
The UK National Cyber Security Centre's secure AI development guidance, published in November 2023, tells teams to identify models, data, prompts, software, documentation, logs, and assessments; track and authenticate them; and retain the ability to restore a known-good state. That inventory is the starting point, but recovery needs relationships as well as a list.
Build a state graph with five classes:
| State class | Examples | Core recovery question |
|---|---|---|
| Authoritative business state | cases, approvals, account status, orders, consent, policy decisions | What committed record must survive, and to which transaction or event can it be restored? |
| Versioned executable state | model identifier, prompt, tool schema, routing policy, code, infrastructure definition | Which signed or hashed release is compatible with the recovered data and dependencies? |
| Derived state | embeddings, vector indexes, features, summaries, materialized views, caches | Can it be reproduced from named sources and a named transformation, or has it become an accidental source of truth? |
| External effect state | sent email, submitted payment, created ticket, vendor API mutation | How will the team learn whether the remote effect committed when local acknowledgement is missing? |
| Ephemeral interaction state | partial reasoning, temporary files, in-flight tool results, session cache | Is loss acceptable, or did the product promise continuity that makes this state material? |
For every node record its owner, tenant boundary, system of record, change rate, retention rule, recovery mode, latest proven restore point, dependencies, integrity evidence, and acceptable loss. Include encryption keys and identity configuration, but do not plan to restore compromised credentials as ordinary data. Reissue them from a clean trust root.
This graph should connect to the AI release passport: recovery needs the exact model, prompt, policy, tool, data, and infrastructure assembly, not just an application commit. It should also connect to the deletion graph, because retention for recovery cannot silently defeat an approved erasure schedule.
A recovery cut is the latest boundary at which authoritative state, versioned execution, and known external effects can be made mutually consistent. It may be a database transaction marker, named restore point, event-log offset, release manifest, object-version set, or a bundle of linked markers. Wall-clock time alone is fragile when clocks skew, writes arrive late, or systems record event time and processing time differently.
PostgreSQL's current point-in-time recovery documentation explains how a base backup plus archived write-ahead-log records can restore a database to a chosen target. It also makes the dependency chain explicit: incremental recovery needs earlier backups and the relevant log and history files. That is a database guarantee, not an AI-system guarantee. The recovery bundle still needs to say which object versions, event offsets, release digest, and index recipe correspond to that database target.
Use the temporal distinctions in our time-semantics guide:
If components cannot share one cut, document the skew and quarantine the affected capability. Do not hide a 09:40 database plus 10:05 index behind the phrase “latest available.”
The three modes solve different problems:
| Mode | Use when | Required proof | Main trap |
|---|---|---|---|
| Restore | the artifact is authoritative, expensive or impossible to reproduce, and a trusted recovery copy exists | integrity, completeness, ownership, point, retention, decryption, and successful application-level checks | restoring corruption, unsafe configuration, or a copy from the wrong tenant or timeline |
| Rebuild | the artifact is deterministic enough to derive from preserved sources and a versioned recipe | source snapshot, transformation digest, parameters, ordering rules, environment, and reconciliation against expected counts | assuming an embedding or summary is reproducible when model aliases, floating dependencies, or nondeterminism changed |
| Abandon | the artifact is ephemeral, unsafe, legally expired, unverifiable, or more costly to trust than to recreate through the user | explicit loss decision, user or operator handling, and prevention of silent reuse | product behavior that pretends lost threads, approvals, or in-flight effects never existed |
Vector indexes are usually rebuild candidates, not primary backup authorities. Preserve the authorized source objects, chunking and normalization rules, embedding model digest, index settings, access-control metadata, and source-to-vector identifiers. A fast index snapshot can shorten RTO, but it should be accepted only if its provenance matches the chosen cut. Otherwise rebuild and reconcile document counts, tenant partitions, deletion markers, and retrieval probes.
Conversation summaries deserve special scrutiny. If they drive entitlements, commitments, medical context, or financial actions, they are not harmless cache. Either preserve the underlying authoritative conversation under an approved retention rule or force a new confirmation. Do not rebuild a consequential commitment from a model-generated summary alone.
A useful recovery bundle is a small, integrity-protected manifest that points to the material needed for one recovery cut. It should include:
Keep the bundle and runbook accessible when the primary control plane is unavailable. Google Cloud's infrastructure-outage guidance, last reviewed in May 2024, warns that business-critical recovery operations should not depend on management-plane changes such as creating a virtual machine or updating an IAM permission. The exact constraint differs by provider, but the design question is portable: can the recovery path run when the system used to configure that path is the system that failed?
NIST SP 800-34 Rev. 1, published in 2010, separates activation and notification, recovery, and reconstitution, where testing validates the restored system before normal operation resumes. NIST SP 800-184, published in December 2016, adds recovery playbooks, realistic testing, metrics, and continuous improvement after cyber events. Translate that discipline into this sequence:
High availability does not replace this sequence. Replication may reduce outage time while faithfully copying a bad prompt, poisoned corpus, mistaken deletion, or ransomware encryption. AWS's recovery-strategy guidance distinguishes availability from one-time disaster recovery and notes that replication alone does not protect against corruption or destruction without point-in-time recovery.
At 10:15, a team discovers that an importer began attaching documents to the wrong tenant at 09:43. The support agent subsequently embedded those files, summarized two conversations, opened three remote tickets, and sent one email. The database has point-in-time recovery; the vector service has an hourly snapshot; the ticketing vendor cannot join a database transaction.
The team selects 09:42 as the recovery cut:
| Component | Decision | Recovery evidence |
|---|---|---|
| customer and case database | restore to the named transaction immediately before the first cross-tenant link | database timeline, row counts, foreign-key checks, tenant ownership queries |
| source documents | restore object versions referenced by the 09:42 manifest | object IDs, versions, hashes, retention and deletion markers |
| vector index | rebuild, despite a newer snapshot | document-to-vector ledger, fixed embedding digest, expected partition counts, retrieval probes |
| prompt, policy, and tools | redeploy release 18 | release-passport digest and contract tests |
| conversation summaries after 09:42 | abandon and regenerate only after users reopen the cases | explicit invalidation record; no summary treated as source evidence |
| remote tickets and email | reconcile, not restore | provider receipts, idempotency keys, recipient and ticket queries; unknowns held for review |
| credentials present during the incident | revoke and reissue | new issuance records and access tests from the clean environment |
The restored system first runs read-only. Cross-tenant canaries, known-case answers, source citations, policy-effective dates, and tool dry runs must pass. Only then can operators release writes. This is slower than attaching the latest snapshots, but it prevents a fast return to a state that never validly existed.
Microsoft's current Foundry Agent Service recovery guidance illustrates why capability claims must be checked per service: for the documented standard deployment, it says the service does not provide built-in replication, backups, point-in-time restore, active-active cross-region replication, or state merging. Its proposed recovery is often reconstruction, with agent definitions treated as code and some thread state potentially unrecoverable. That is one product's documented boundary, not a universal limitation—but it shows why “managed agent” cannot be translated into “managed recovery.”
A drill should inject failures that force real decisions: corrupted primary data, a deleted object version, unavailable control plane, stale index snapshot, lost encryption key, changed model alias, partially committed tool call, cross-tenant contamination, and an operator who is unavailable. Run it outside the production failure domain and measure:
Connect the evidence to the AI audit-evidence guide. A screenshot saying “restore succeeded” proves a job reported success. Stronger evidence joins the approved cut, artifact manifests, hashes, log offsets, test queries, effect receipts, operator decisions, deviations, and final authorization to resume.
Do not call an AI service recoverable until its owner can answer yes to these questions:
Revisit the plan after any model, prompt, policy, index, identity, region, vendor, retention, or tool change. Also revisit it when restore duration approaches RTO, provenance coverage falls, a drill exposes hidden control-plane dependencies, or the product starts treating previously ephemeral state as a promise to users. Recovery is not a storage feature. It is a maintained agreement about which history the organization can safely resume.

A practical guide to deciding when AI should answer, seek evidence, defer, or refuse using calibrated signals, risk–coverage curves, and fallback capacity.
Read More
A field guide to admitting, quarantining, or rejecting MCP servers, plugins, and agent tools using provenance, capability tests, and enforceable runtime limits.
Read More
A field guide to baselines, delayed outcomes, change attribution, and deciding when deployed AI should be watched, constrained, rolled back, or rebuilt.
Read MoreIf this note maps to a real system in your organization, start with the services page or a shipped case study.