Introduction
A test kit for software that reads the Stellar ledger: a corpus of rare but valid XDR shapes produced by a real stellar-core, a replay harness that feeds them to an indexer, a conformance runner that feeds them to the JavaScript, Go and Rust SDKs, a linter for Go indexer code, and an indexer-hardening guide.
Indexers and SDKs keep breaking on shapes that are valid but rare: signed-payload signers, muxed accounts, deep Soroban authorization trees, trustlines created by the Stellar Asset Contract, maps whose keys collide after conversion. Each team finds the same bugs on its own. shapekit is the shared set of those shapes plus the tools to run them. It is built in response to the SDF RFP "XDR/CAP-Coverage Audit Tool and Indexer-Hardening Guide", and covers protocol 30 (stellar-core 30.0.0, stellar-xdr v30.0).
The dated log of what has landed is STATUS.md.
What is in it
| Part | Where | Documentation |
|---|---|---|
Corpus: XDR files plus a language-neutral manifest with expected decoded values, generated under both the testnet and mainnet passphrases, checked against stellar-core's --check-lcm goldens | corpus/ | coverage per CAP, adding a shape |
| Generator: recipes recorded on a private standalone stellar-core | crates/shapekit-gen, crates/shapekit-core-driver | adding a shape |
| Replay harness and the wallet-backend reference adapter | crates/shapekit-harness, adapters/ | adapter interface, replay server |
| SDK conformance runner and the Rust, Go and JavaScript testees | crates/shapekit-conformance, testees/, conformance/ | testee protocol, running it in an SDK's CI |
| Linter for Go indexers built on go-stellar-sdk | lint/ | indexerlint |
| Indexer-hardening guide, written for developers.stellar.org; a draft until a stellar-core or platform engineer has reviewed it (see the publication gate in STATUS.md) | docs/guide/ | the guide |
| Findings from running the corpus | findings/ | |
| CI, releases, maintenance | .github/workflows/ | infrastructure, maintenance, protocol upgrade runbook, security policy |
Infrastructure and privacy
shapekit collects no telemetry. The few commands that use the network, and everything the project runs on, are listed in docs/infrastructure.md.
Maintenance
Maintained by ErenTopaal through the first protocol upgrade after delivery (protocol 31). The
rules for changes, triage and how SDKs pin corpus releases are in
docs/maintenance.md.
License
This page is generated from README.md in the repository.