The outcome vocabulary these classes report in
AER-1 Section 6 gives checks a fixed vocabulary, so an unevaluated check is never reported as an evaluated one:
- verified: the check was evaluated and passed.
- verification failed: the check was evaluated and did not pass.
- rejected: unresolvable record: the record could not be resolved into what the check needs, so there was nothing complete to evaluate.
- not checked: the check exists but was not evaluated. The only honest report for an unevaluated check.
- absent: the thing a check would evaluate is not on the record at all, for example a receipt with no anchor.
The five classes
1. Wrong digest
Outcome: verification failed. The recomputed SHA-256 does not match the hash the receipt carries. Evidence: the corpus vectors hash-mismatch.json ("output_hash does not match sha256(canonical_bytes)") and input-hash-mismatch.json, plus commit-digest-mismatch in the commitment set. Read the wrong digest page.
2. Missing field
Outcome: rejected: unresolvable record. A required member is absent, so the record cannot be reconstructed and the verifier must fail closed. Evidence: missing-output-hash.json ("missing required member: output_hash"), missing-inputs.json, and a workflow vector rejected because the missing output_hash means a leaf cannot be formed. Read the missing field page.
3. Expired time window
Outcome: the server refuses the payment and orders a fresh challenge. An x402 authorization presented after validBefore, or past the challenge's 900 second maxTimeoutSeconds, is refused and nothing activates. Evidence: the live challenge fetched from zambo.dev/api/x402/day-pass on 2026-10-24 and its verbatim retry policy. Read the expired time window page.
4. Bad chain link
Outcome: verification failed. An entry's prev_digest does not match the digest of the previous entry's bytes. Evidence: chain-vectors.json (chain-tampered-middle, expected failure "link broken") and the 28 vector v07 chain file. The same page records an honest limit: hosted receipt verification reports the chain as not checked. Read the bad chain link page.
5. Unknown or wrong version
Outcome: rejected under the declared rule, or not checked when the version is not implemented. A record relabeled, or a workflow close evaluated under the other merkle_version rule, must be rejected. Evidence: the two cross-version must-fail workflow vectors, version-downgrade.json, and anchored-bad-id-version.json. Read the version page.
Documented, with no standalone page: the quota wall and the other x402 refusals
The quota wall is a limit, not a verification outcome
Zambo's free tier is 20 free calls per day, then they upgrade. That is documented behavior, and it is visible on a real record: the live verify record for receipt ad57d3ca-2561-4aaa-b51e-dd6367888eac carries the fields free_limit 20, free_used 0, and free_remaining 20. When the day's free calls are used, the documented next step is a pass: the Day Pass is $0.99 for 24 hours, and the Zambo Pass options are on the day-pass page at zambo.dev/day-pass. No quota-error receipt is exhibited in this page set, so the quota wall is documented in this section, from Zambo's own pages and that live record, and gets no page that pretends to evidence it does not have.
The other documented x402 refusal reasons
The hub's x402 guide documents a fixed refusal reason list for the Day Pass payment: malformed payload, wrong amount, wrong asset, wrong network, expired challenge, duplicate payment, and policy blocked, with a retryable flag that decides whether a corrected retry is allowed. Only expired challenge is one of the five verifier classes above, so only it has its own page here. The wrong network, wrong asset, and wrong amount classes are documented server refusals with a plain fix each: sign for the network, asset, and amount the live challenge names (eip155:8453, the USDC contract the challenge quotes, and 990000 atomic units), as laid out on x402 agent payments. No causes beyond that documentation are claimed for them.
Method note
Every exhibit in this set was fetched first-hand on 2026-10-24: the corpus files from zambo.dev/aer1/corpus/v1.5.7/ (the local copies of the chain, commitment, anchored, and missing-inputs files recompute to the exact SHA-256 values in the published corpus index), the x402 challenge from the live endpoint, and the receipt verify record from the public v2 verify endpoint. A pattern with no first-hand evidence was not built. Nothing in this set invents a failure cause for any third-party tool.
Put your own calls on a checkable record
Start at zambo.dev/add
Add Zambo to your AI at https://zambo.dev/add/. The free tier is 20 free calls per day, then they upgrade. A Day Pass is $0.99 for 24 hours. Every call returns a verifiable receipt, including a call that is rejected, so a failure like the ones on this page leaves a record you can open, check, and learn from instead of a claim you have to trust.
A verifiable receipt proves the saved result was not changed since it was saved. It does not prove the result was right.
Questions
What are the five AER-1 failure classes?
Wrong digest (verification failed), missing field (rejected: unresolvable record), expired time window (the x402 server refuses and orders a fresh challenge), bad chain link (verification failed), and unknown or wrong version (rejected under the declared rule, or not checked when a verifier does not implement the version). Each class on this index is supported by first-hand evidence fetched from zambo.dev.
What does not checked mean, and how is it different from absent?
Not checked means the check exists and was not evaluated: the only honest report for an unevaluated check. Absent means there was nothing to evaluate, for example a receipt carrying no anchor. AER-1 Section 6 keeps verified, verification failed, rejected: unresolvable record, not checked, and absent as separate reports so a reader can tell them apart.
Why is there no page for the quota wall?
The quota wall is documented behavior, not a verifier outcome: the free tier is 20 free calls per day, then they upgrade, and a Day Pass at $0.99 covers 24 hours. It is documented in full on this index, from Zambo's own pages and the quota fields on a live receipt record. No quota-error receipt is exhibited in this set, so no standalone page claims evidence it does not have.