> ## Documentation Index
> Fetch the complete documentation index at: https://docs.istravex.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Replay

> Run the corpus through two indexers, one naive and one reference, and score every record.

The replay harness answers a narrow question: if you index this fixture, do you store what the ledger supports?

It runs every fixture that has `expected_indexed` through two small indexers and compares what each produces with the fixture's expectations:

* **naive** derives effects from the transaction envelope. It's written to make exactly the mistakes that show up in real indexers: muxed IDs through `Number()`, fees and payers from the envelope, trustlines only from `changeTrust`.
* **reference** derives effects from ledger metadata, the way the [hardening guide](https://docs.istravex.com/guide/overview.md) says to.

## Results

| Fixture | Indexer | Verdict | Fields that differ |
| - | - | - | - |
| `cap15-fee-bump-pubnet-0001` | naive | incorrect | `fee_charged`, `fee_paid_by` |
| `cap15-fee-bump-pubnet-0001` | reference | correct | — |
| `cap27-muxed-payment-pubnet-0001` | naive | incorrect | `recipient_muxed_id` |
| `cap27-muxed-payment-pubnet-0001` | reference | correct | — |
| `cap73-sac-trust-local-0001` | naive | dropped | — |
| `cap73-sac-trust-local-0001` | reference | correct | — |
| `cap73-sac-trust-testnet-0001` | naive | dropped | — |
| `cap73-sac-trust-testnet-0001` | reference | correct | — |

The naive indexer is wrong on every case, in all three ways an indexer can be wrong:

* **Incorrect** on the muxed payment: it stores `1764988090084626400`.
* **Incorrect** on the fee-bump: it records 46,341 stroops (the bid) paid by the inner source.
* **Dropped** on both SAC trustlines: no `changeTrust`, so as far as it's concerned no trustline exists.

The reference indexer gets all four right. It also records `feeMetaDebit` on the fee-bump (46,340 stroops) to show that reading fees from balance deltas over-counts Soroban fees. See [Fees](https://docs.istravex.com/guide/fees.md).

## Why two toy indexers?

Because the point isn't the indexers, it's the scoring. The harness shows that the corpus *discriminates*: a fixture that both indexers passed would be decoration. Every fixture with indexed expectations here separates a known-wrong reading from a known-right one.

For scoring a real indexer, see the [wallet-backend pilot](https://docs.istravex.com/pilots/wallet-backend.md) and [Replaying into your indexer](https://docs.istravex.com/pilots/your-indexer.md).

```bash theme={null}
npm run corpus:replay   # → corpus/results/replay.json
```


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.