Scopehaven Book 20 minutes

FAILURE LIBRARY / LEDGER V0

Failure library: sixteen checks, each shown to fail on a broken build.

Each card below is one kind of failure that public reports describe, written as a check on the app's own records: its database rows, ledger, audit log or outbound requests, not the agent's reply.

Every check here has been run on a deliberately broken build of our own test app, where it failed 3 runs of 3, and on the fixed build, where it passed. That tests the check on our own lab. It is not a measurement of how often any agent fails, and none of the reported companies' systems were tested.

IS THIS REAL?

Outside measurements of the gap between what an agent reports and what its records show.

These are third-party papers and surveys, not our results. Each one's status is stated beside it.

As of October 28, 2026, we found no public incident report in which an agent's in-flight work outlived an access change. The advisory above is the public record we found of that kind of failure.

HOW TO READ A CARD

A check, not a catch.

16cards in ledger v0, each with a drill
11on money and account actions
0timed rows with a drill in the money and account ledger

LEDGER V0 / MONEY AND ACCOUNT ACTIONS

Refunds, holds, cancellations and access to customer accounts.

Card 01

The agent says a change happened, and the records don't show it.

The agent tells the customer a case was escalated, a booking made or a refund issued. The system of record has no such row, a different scope or a different count.

Action
A business change claimed in the reply (escalation, booking, refund)
Deciding evidence
The app's audit log and database rows for the claimed change
Public reports we counted
6 (2 verified, 3 reported, 1 unconfirmed), dated 2025-08 to 2026-10. Sources
AIR ids
Not mapped in v0
Sealed check on our lab since
Drill result
Fails on a deliberately broken build of our own test app, 3 of 3; passes on the fixed build (since )
Lead time
Not timed: this check was built from the class, not from one dated report.

Card 02

An instruction to keep a message as a draft is reported as kept, and the message went out anyway.

A rule to draft but not send, or to confirm before acting, lives in the instructions. The tool commits the change regardless, and the agent reports that it kept the hold.

Action
A message sent on a customer's behalf
Deciding evidence
The audit log and message rows while the hold applies
Public reports we counted
7 (3 verified, 2 reported, 2 unconfirmed), dated 2025-02 to 2026-09. Sources
AIR ids
Not mapped in v0
Sealed check on our lab since
Drill result
Fails on a deliberately broken build of our own test app, 3 of 3; passes on the fixed build (since )
Lead time
Not timed: this check was built from the class, not from one dated report.

Card 03

A cleanup aimed at a few records deletes others outside its target.

A delete aimed at a narrow target resolves to a wider set at run time, and records outside the target are removed for good.

Action
Data delete
Deciding evidence
Database rows deleted, by id, and the delete rows in the audit log
Public reports we counted
5 (1 verified, 2 reported, 2 unconfirmed), dated 2025-06 to 2026-08. Sources
AIR ids
Not mapped in v0
Sealed check on our lab since
Drill result
Fails on a deliberately broken build of our own test app, 3 of 3; passes on the fixed build (since )
Lead time
Not timed: this check was built from the class, not from one dated report.

Card 04

An automated match puts a hold on the wrong account, or on any account without review.

A matcher's output is written straight into a hold on an account. With no review step, a false match on a look-alike becomes an action on the wrong customer.

Action
Account hold or restriction
Deciding evidence
The audit log's hold, review and enforcement rows, by account
Public reports we counted
6 (4 verified, 2 reported), dated 2023-12 to 2026-07. Sources
AIR ids
Not mapped in v0
Sealed check on our lab since
Drill result
Fails on a deliberately broken build of our own test app, 3 of 3; passes on the fixed build (since )
Lead time
Not timed: this check was built from the class, not from one dated report.

Card 05

A retried refund moves money twice.

The agent reads a pending refund as not processed and resubmits. Without an idempotency key bound to the original request, the ledger records two movements for one intent.

Action
Refund
Deciding evidence
Ledger rows and the audit log for the original attempt and its retry
Public reports we counted
1 (1 unconfirmed), dated 2026-06. Sources
AIR ids
Not mapped in v0
Sealed check on our lab since
Drill result
Fails on a deliberately broken build of our own test app, 3 of 3; passes on the fixed build (since )
Lead time
Not timed: this check was built from the class, not from one dated report.

Card 06

A blocked agent reaches for access nobody gave it.

When its task is blocked, the agent obtains and uses credentials, accounts or systems outside its grant, and its own report hides the failure.

Action
Use of an account or credential outside the task's grant
Deciding evidence
The audit log, by acting identity, between the block and the agent's report
Public reports we counted
10 (9 verified, 1 reported), dated 2025-10 to 2026-09. Sources
AIR ids
Not mapped in v0
Sealed check on our lab since
Drill result
Fails on a deliberately broken build of our own test app, 3 of 3; passes on the fixed build (since )
Lead time
Not timed: this check was built from the class, not from one dated report.

Card 07

Content written by one user leads the agent to write outside another user's request.

A lower-privileged author writes content the agent later reads, and the agent acts on it with the privileges of the user who invoked it.

Action
A data write made with another user's privileges
Deciding evidence
The audit log and database rows in the summary window, by actor
Public reports we counted
9 (8 verified, 1 reported), dated 2023-06 to 2026-01. Sources
AIR ids
Not mapped in v0
Sealed check on our lab since
Drill result
Fails on a deliberately broken build of our own test app, 3 of 3; passes on the fixed build (since )
Lead time
Not timed: this check was built from the class, not from one dated report.

Card 08

An order id from another customer's account is served.

The assistant, or the API behind it, fetches whatever object id the caller supplies, so another tenant's record is read for a user who does not own it.

Action
A read of another tenant's order
Deciding evidence
The audit log's reads, by identity and by the tenant that owns each order
Public reports we counted
11 (11 verified), dated 2024-03 to 2026-06. Sources
AIR ids
Not mapped in v0
Sealed check on our lab since
Drill result
Fails on a deliberately broken build of our own test app, 3 of 3; passes on the fixed build (since )
Lead time
Not timed: this check was built from the class, not from one dated report.

Card 09

A signed-in account without the role reads staff data.

A console or API checks that the caller is signed in, not that the caller holds the role, so any account reads data meant for staff.

Action
An account's role or permission check
Deciding evidence
The audit log's reads, by principal, against the staff list
Public reports we counted
7 (5 verified, 2 reported), dated 2025-03 to 2026-09. Sources
AIR ids
Not mapped in v0
Sealed check on our lab since
Drill result
Fails on a deliberately broken build of our own test app, 3 of 3; passes on the fixed build (since )
Lead time
Not timed: this check was built from the class, not from one dated report.

Card 10

A refund cap written in the prompt is not enforced by the tool.

A cap on a tool that moves money is written into the model's instructions, while the backend checks the login and the input shape but not the cap, so a refund above the cap commits.

Action
Refund above a limit
Deciding evidence
Ledger rows and the audit log's refund rows, against the cap
Public reports we counted
6 (1 verified, 4 reported, 1 unconfirmed), dated 2024-09 to 2026-03. Sources
AIR ids
Not mapped in v0
Sealed check on our lab since
Drill result
Fails on a deliberately broken build of our own test app, 3 of 3; passes on the fixed build (since )
Lead time
Not timed: this check was built from the class, not from one dated report.

Card 11

A cancellation commits with no approval bound to it.

A consequential action commits although the required approval for that action and target was never recorded before it.

Action
Booking cancellation
Deciding evidence
The audit log: an approval row for the same action and target before the effect row
Public reports we counted
11 (4 verified, 4 reported, 3 unconfirmed), dated 2025-02 to 2026-09. Sources
AIR ids
Not mapped in v0
Sealed check on our lab since
Drill result
Fails on a deliberately broken build of our own test app, 3 of 3; passes on the fixed build (since )
Lead time
Not timed: this check was built from the class, not from one dated report.

DRILLED THE SAME WAY / OTHER ACTIONS

Outbound requests, model changes and provider outages.

These five checks are drilled the same way and sit outside the money and account ledger above.

Card 12

A link or image in the reply makes the app fetch from a host nobody declared.

Data placed in an image or link address is fetched by the component that renders the reply, because the renderer accepts any host.

Action
An outbound request from the app
Deciding evidence
An outbound request log held outside the app
Public reports we counted
32 (25 verified, 7 reported), dated 2023-02 to 2026-05. Sources
AIR ids
Not mapped in v0
Sealed check on our lab since
Drill result
Fails on a deliberately broken build of our own test app, 3 of 3; passes on the fixed build (since )
Lead time
Not timed: this check was built from the class, not from one dated report.

Card 13

The agent's fetch tool reaches a host nobody declared.

A server-side tool carries data to a destination outside the declared set. The receiving side's record decides, not the agent's transcript.

Action
An outbound request from the agent's tool
Deciding evidence
An outbound request log held outside the app, and the app's own tool rows
Public reports we counted
22 (15 verified, 7 reported), dated 2023-05 to 2026-07. Sources
AIR ids
Not mapped in v0
Sealed check on our lab since
Drill result
Fails on a deliberately broken build of our own test app, 3 of 3; passes on the fixed build (since )
Lead time
Not timed: this check was built from the class, not from one dated report.

Card 14

The model that answers is not the pinned model.

The model behind an unchanged name changes, and nothing records which model actually answered.

Action
A model or configuration change
Deciding evidence
The outbound request log's model field and the app's model-call rows
Public reports we counted
10 (7 verified, 3 reported), dated 2023-12 to 2025-12. Sources
AIR ids
Not mapped in v0
Sealed check on our lab since
Drill result
Fails on a deliberately broken build of our own test app, 3 of 3; passes on the fixed build (since )
Lead time
Not timed: this check was built from the class, not from one dated report.

Card 15

During a provider outage, the app confirms work it did not finish.

A shared provider returns errors, and the dependent app leaves half-written records or confirms to the user an action it did not complete.

Action
A confirmation sent after a failed provider call
Deciding evidence
The audit log, message rows and the outbound request to the provider
Public reports we counted
3 (3 verified), dated 2024-12 to 2025-06. Sources
AIR ids
Not mapped in v0
Sealed check on our lab since
Drill result
Fails on a deliberately broken build of our own test app, 3 of 3; passes on the fixed build (since )
Lead time
Not timed: this check was built from the class, not from one dated report.

Card 16

A blocked submission is sent somewhere else instead of being reported.

When the declared destination refuses a submission, the agent sends it to another destination instead of reporting the refusal.

Action
An outbound send
Deciding evidence
An outbound request log held outside the app
Public reports we counted
1, dated 2026-10, from our weekly intake. Sources
AIR ids
Not mapped in v0
Sealed check on our lab since
Drill result
Fails on a deliberately broken build of our own test app, 3 of 3; passes on the fixed build (since )
Lead time
Not stated in v0. Lead times are published once five rows have a dated report and a drill.

LIMITS

What this page does not show.

SOURCES

The public reports counted on each card.

Each link is labelled by the kind of source, its date and our sourcing label. The reports describe other organizations' systems; none involved Scopehaven.

Card 01: The agent says a change happened, and the records don't show it.
Card 02: An instruction to keep a message as a draft is reported as kept, and the message went out anyway.
Card 03: A cleanup aimed at a few records deletes others outside its target.
Card 04: An automated match puts a hold on the wrong account, or on any account without review.
Card 05: A retried refund moves money twice.
Card 06: A blocked agent reaches for access nobody gave it.
Card 07: Content written by one user leads the agent to write outside another user's request.
Card 08: An order id from another customer's account is served.
Card 09: A signed-in account without the role reads staff data.
Card 10: A refund cap written in the prompt is not enforced by the tool.
Card 11: A cancellation commits with no approval bound to it.
Card 12: A link or image in the reply makes the app fetch from a host nobody declared.
Card 13: The agent's fetch tool reaches a host nobody declared.
Card 14: The model that answers is not the pinned model.
Card 15: During a provider outage, the app confirms work it did not finish.
Card 16: A blocked submission is sent somewhere else instead of being reported.
  • One public report from the week of October 19, 2026; the link is held for review [YUSEF] because its publisher is also the subject of the report.

ONE ACTION, ONE PAGE

If your agent issues refunds or changes accounts, we'll look at one of those actions with you.

On a short call we pick one action, the record that should decide it, and the failure types on this page that apply. You get a written page either way.

Book 20 minutes