Sierpe 1.6.0 — the raw event on every movement, and registering the archived

September 7, 2026

Two changes, both forced by the same real-world job: collecting eleven months of mainnet history for a production escrow protocol (the case described in the upcoming use-case post).

Movements carry the raw event. A movement is usually emitted by a token contract nobody registered — a payment into your contract comes from the asset’s own SAC — so there was no events row to join to and the original ContractEvent bytes were unrecoverable from the database. That is fine for reading, and not fine for building: a consumer that re-emits movements into its own pipeline needs the event itself, not our decode. Every movement row now stores and serves rawXdr, captured at the only moment in the pipeline where those bytes exist. Rows ingested before the migration have no stored event to backfill from and simply omit the field — absence stays honest.

Archived contracts register. A Soroban contract whose instance TTL expired vanishes from the RPC, and registration answered 404 — even though the contract’s entire history sits in the public History Archives and the archive leg reconstructs it regardless. Now POST /v1/contracts with explicit kinds accepts it: classification comes back unknown, a new warnings array on the response says exactly what was accepted unverified, and the backfill anchors as usual. Without explicit kinds the 404 stands — the kinds default is derived from the on-chain classification, and with no instance there is nothing honest to default to. Re-registering after a restore re-classifies.

One honest caveat, because the RPC cannot tell an archived contract from one that never existed: a typo that survives the strkey checksum registers too. The failure mode is deliberate — an empty history under honest coverage, one DELETE to clean up.

Also in this release: the Go toolchain moved to 1.25.13 and the reachable dependency findings govulncheck reported against 1.25.0 binaries are cleared.

Upgrade: pull ghcr.io/zkcaleb-dev/sierpe:v1.6.0 (or v1.6.0-full for the archive leg); migration 0011 applies itself at boot.