AER-1 corpus vectors / Anchor vectors
anchor-verification-failed
Family: Anchor vectors. Source: base/anchor-vectors.json in the AER-1 corpus published at zambo.dev/aer1/corpus.json (kit 1.5.7, draft-zambo-aer1-26), file SHA-256 fa3c8380003acba7c42a5e34783a8ac8840ac42f31cf4e0485f66791d2caf9a7.
Rule it exercises
draft-zambo-aer1-23 anchor outcome reporting: a verifier response carries a machine-visible per-anchor report that keeps three states distinct. 'absent': the receipt carries no anchor member. 'not checked': an anchor is present but the verifier did not evaluate it; this state MUST NOT collapse into an evaluated outcome. Otherwise the evaluated outcome of draft Section 6 step 5: 'verified' (anchor evaluates clean), 'verification failed' (a recomputed or stored anchor value does not match what was committed), or 'rejected: unresolvable record' (the anchor's record cannot be resolved at all, a resource outcome). The gap this pins: an independent validator exercised on the anchored-unresolvable-anchor fixture had no 'not checked' state, so a verifier that never attempted resolution was indistinguishable from one that attempted and failed (Skitter's finding against the independent validator; a-messenger sharpened it into the reporting rule). The report is scoped to the Section 3.3 profile: an anchor member carrying none of the profile's members is a different anchoring record under the same member name (production receipts carry a Nostr publication record there) and reports 'absent', while a partial profile anchor is present and fails evaluation. Fixtures are the existing anchored corpus, one unanchored valid receipt, and one valid receipt carrying the production Nostr-shaped anchor member inline; resolvability is decided offline by construction (RFC 2606 .invalid hosts never resolve), as in the anchored corpus itself.
Input
The vector input, exactly as published in the corpus:
{
"evaluate": true,
"file": "test-vectors/anchored/anchored-bad-leaf-hash.json"
}
The corpus entry points at the receipt file base/test-vectors/anchored/anchored-bad-leaf-hash.json, whose exact contents are:
{"id":"b6c63ac5-f324-4fa7-ad58-c4bf83faa86a","receipt_schema_version":"0.3","created_at":"2026-09-27T09:00:00.000Z","tool":{"name":"live_price","version":"4.0.0","scope":"public"},"provenance_class":"EXECUTED BY ZAMBO","canonical_bytes":"eyJ0b29sIjoibGl2ZV9wcmljZSIsImlucHV0cyI6eyJwYWlyIjoiQlRDL1VTRCJ9LCJvdXRwdXRzIjp7InByaWNlX3VzZCI6OTc0MTIuNTV9LCJtcyI6MTA4fQ==","output_hash":"sha256:c2258bdf9c34813a70166bc0e2d79b167f22f51a0adb67e218b5c868b911dca7","verification_status":"verified","anchor":{"log":"https://ots.example/calendar","leaf_hash":"sha256:0000000000000000000000000000000000000000000000000000000000000000","anchored_at":"2026-09-28T12:00:00Z","proof":{"type":"opaque"}}}
Expected result
expected_anchor_outcome: verification failedexpected_evaluated: trueexpected_present: true
Checks it exercises
| Check | Requirement | Why |
|---|---|---|
| anchor outcome | must-fail | The corpus records expected_anchor_outcome as verification failed for this vector. |
| evaluated | expected: true | The corpus records expected_evaluated as true for this vector. |
| present | expected: true | The corpus records expected_present as true for this vector. |
Try Zambo free: add Zambo to your AI to run this kind of check on your own agent work, with 20 free calls per day and a Day Pass at $0.99 for 24h when you need more. Every call returns a verifiable receipt, and a receipt proves the saved result was not changed.
See the full set in the AER-1 corpus vectors index and the AER-1 corpus checks index, or read the standard itself: draft-zambo-aer1-26.