AER-1 corpus vectors / Chain vectors v07
v07-bad-genesis
Family: Chain vectors v07. Source: base/chain-vectors-v07.json in the AER-1 corpus published at zambo.dev/aer1/corpus.json (kit 1.5.7, draft-zambo-aer1-26), file SHA-256 d72b815585afdb075311da892f54041c9ffd5e7d875afbf32bd8165c3ca9ea94.
What this vector covers
Entry 0 prev_digest is not the 64-zero genesis digest.
Rule it exercises
draft-zambo-aer1-07 Section 7: entry digest = SHA-256 over the UTF-8 bytes of the canonical JSON object {prev_digest, seq, job_id, close, id, tool, provenance_class, output_hash} (keys sorted by Unicode code point, no whitespace), where output_hash = lowercase hex SHA-256 of the base64-decoded canonical_bytes. Entry 0: prev_digest is 64 zeros and seq is 1. seq contiguous from 1. One job_id per chain. close is boolean, true only on the last entry. Honest limit: truncation of either end with re-linking is not detectable by chain mechanics alone; it needs an anchored endpoint.
Input
The vector input, exactly as published in the corpus:
{
"timeline": [
{
"id": "r-job-7a1f-0",
"seq": 1,
"job_id": "job-7a1f",
"tool": "price_lookup",
"provenance_class": "LOGGED BY AGENT",
"canonical_bytes": "eyJqb2IiOiJqb2ItN2ExZiIsImVudHJ5IjowLCJ0YWciOiJyIn0=",
"prev_digest": "1111111111111111111111111111111111111111111111111111111111111111"
},
{
"id": "r-job-7a1f-1",
"seq": 2,
"job_id": "job-7a1f",
"tool": "price_lookup",
"provenance_class": "LOGGED BY AGENT",
"canonical_bytes": "eyJqb2IiOiJqb2ItN2ExZiIsImVudHJ5IjoxLCJ0YWciOiJyIn0=",
"prev_digest": "380d45c6575bdb648e5723adee5a049ff212574d4c6d5dd8ad4cabcc54b6aa56"
},
{
"id": "r-job-7a1f-2",
"seq": 3,
"job_id": "job-7a1f",
"tool": "price_lookup",
"provenance_class": "LOGGED BY AGENT",
"canonical_bytes": "eyJqb2IiOiJqb2ItN2ExZiIsImVudHJ5IjoyLCJ0YWciOiJyIn0=",
"prev_digest": "c225aa2256e7984575f5a664b690f2b06c86abddc528def6164fb1bbb0aa4cba"
},
{
"id": "r-job-7a1f-3",
"seq": 4,
"job_id": "job-7a1f",
"tool": "price_lookup",
"provenance_class": "LOGGED BY AGENT",
"canonical_bytes": "eyJqb2IiOiJqb2ItN2ExZiIsImVudHJ5IjozLCJ0YWciOiJyIn0=",
"prev_digest": "4c56c96378cea5939ad61d082fff24d075649ca888b0c61308307d14034a204a"
},
{
"id": "r-job-7a1f-4",
"seq": 5,
"job_id": "job-7a1f",
"tool": "price_lookup",
"provenance_class": "LOGGED BY AGENT",
"canonical_bytes": "eyJqb2IiOiJqb2ItN2ExZiIsImVudHJ5Ijo0LCJ0YWciOiJyIn0=",
"prev_digest": "5dd618b1b3b904a92261bb747f8c4511b0882e1454fc41f20a59fa5bd0ded778",
"close": true
}
]
}
Expected result
expected_verdict: invalidexpected_failure: not 64 zero characters
Checks it exercises
| Check | Requirement | Why |
|---|---|---|
| verdict | must-fail | Entry 0 prev_digest is not the 64-zero genesis digest. The corpus records expected_failure: not 64 zero characters |
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.