Stellar Index v0.45.0
[v0.45.0] — 2026-08-27
Tested against Stellar Protocol 28 (mainnet upgrade 2026-09-16).
Ships the P28 readiness pins — captive-core 28.0.1, galexie v28.0.0,
stellar-archivist 0.1.5-486 — plus the reactive ledger-meta decode
backstop that names "we are behind a protocol upgrade" instead of
surfacing it as generic tip-lag.
Added
- Testnet / Futurenet support — a one-line
stellar.networkswitch. The
indexer now runs correctly (without corrupting data) against Stellar
testnet and futurenet. Grounded in a cold adversarial hardcode audit +
an independent fix-verifier pass (2026-08-26). Pubnet behaviour is
byte-identical (every new default resolves to the old constant).- Config:
stellar.soroban_genesis_ledger/stellar.movements_floor_ledger
(pubnet values, or genesis=1 on test nets) so the SEP-41 supply and
CAP-67 real-time movements feeds don't floor above the whole chain;
timescale.MovementsFloor()+canonical.NetworkPassphrase()install
seams resolve leaf-package reads to the configured network. - Corruption guards:
SacContractIDis network-aware (was serving the
pubnet contract address on testnet/v1/assets); config validation
rejects a pubnet (core-live)history_archive_urlon a non-pubnet
network; the cross-anchor archive filler refuses to write pubnet
ledgers into a test-net archive; the SEP-41 supply genesis seed
defaults its boundary from the config's network value. - Ansible: the
archival-noderole is network-aware (single-source
stellar_passphrase— fixes the futurenet core.cfg bug — per-network
history archive, boundary knobs, cap67-floor-ledger); testnet +
futurenet inventory templates. - CI/CD:
deploy.ymlgainstestnet/futurenettargets; a fleet-model
design proposal (docs/operations/cicd-fleet-model.md). - Docs: testnet/futurenet deployment guide + reset runbook.
- Config: