manifest.json that describes the fixture and points to its XDR files. Manifests are validated against corpus/manifest.schema.json (JSON Schema 2020-12) on every run of the verifier.
Here’s a real one, for the muxed-payment fixture:
manifest.json
Fields
cap<NN>-<pattern>-<network>-<NNNN>. Stable forever: results, docs and the API refer to it.The CAPs whose XDR the fixture exercises, as
CAP-NNNN. The first one is the fixture’s primary CAP.pubnet, testnet, or local (a standalone network built by the generator).Where in that value the interesting part lives, e.g. the muxed destination inside a fee-bump. For humans; tools don’t parse it.
Where the fixture came from:
kind (captured or generated), network_endpoint, ledger, tx_hash, closed_at. Generated fixtures add generator: the stellar-core version, binary sha256, build and Soroban limits factor that produced them.true only for hand-built XDR that never appeared on any network. Every fixture today is false.What an SDK must extract from the bytes. Values come from an independent source (Horizon, or the transaction as built), never from an SDK under test.
One entry per XDR value:
name, xdr_type, path (base64 file in the fixture directory), sha256 and bytes of the decoded value.Conventions
- Every 64-bit integer is a JSON string. IDs, amounts, fees and limits are strings so that no consumer’s
JSON.parsecan round them. This isn’t style: the kit’s own pilot driver hit that exact bug before it was fixed. - Files are base64 of raw XDR, one value per file, with a trailing newline. Decode them with any SDK’s
fromXDR(..., 'base64'). - Amounts in
expected_decodeduse the human decimal form Horizon uses (59.5110803); amounts inexpected_indexeduse stroops when the indexer stores stroops.