SPIKE: Protocol 29 (CAP-0088) - #227
Conversation
Repin go-stellar-sdk to the CAP-0088 XDR regeneration (stellar/go-stellar-sdk#5998, e66bca6a) and bump MaxSupportedProtocolVersion to 29. The regen is what makes the new STELLAR_VALUE_SIGNED_MS / STELLAR_VALUE_EMPTY_TX_SET_MS StellarValue.ext arms decodable; the SDK's ValidEnum and view types reject unknown discriminants, so every LedgerCloseMeta consumer needs it. Horizon has no switch on the StellarValue ext discriminant. Its only two reads of scpValue are the whole-second closeTime (db2/history/ledger.go, trades_processor.go), which CAP-0088 leaves unchanged, so closeTimeMs is deliberately not plumbed through or exposed. The pin is a replace directive to the fork because #5998 is unmerged and e66bca6a is not reachable from any ref in stellar/go-stellar-sdk. CI: roll the integration window to {28, 29}. P29 builds core from stellar-core#5423 (refs/pull/5423/head) since no -vnext image or deb is built from it; Dockerfile.testing enables the next protocol version, which is what makes 29 reachable. Its stellar-rpc image is empty (none published for 29), so guard the pull step and let NewTest()'s AMBER skip fire rather than run against a P28 RPC that cannot ingest P29. Re-baseline internal/ingest/testdata/test-lcms/ from stellar-core#5423's test-lcm-next, adding the BumpSequenceTests, ClaimableBalanceTests and HerderTests suites. 807 of these fixtures currently fail to decode; see the PR discussion for the upstream defect this surfaces. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
|
What's wrong. stellar-xdr changed the MS arms between two commits:
stellar-core#5423 has 3 commits. Byte-level proof —
Under the new layout the reader consumes 8 bytes at Blast radius: 807 of 1134 fixtures. The 327 that decode carry only Fix (upstream, not here): re-run the Verified independently of the DB harness with a decode-only scan against the pinned SDK; all other Horizon tests pass ( |
Changes
MaxSupportedProtocolVersionto 29 and repin go-stellar-sdk to the CAP-0088 XDR regen (Protocol 30 (CAP-0088) go-stellar-sdk#5998,e66bca6a), which adds theSTELLAR_VALUE_SIGNED_MS/EMPTY_TX_SET_MSarms. No Horizon code switches on that discriminant; close times stay whole-second andcloseTimeMsis not exposed.internal/ingest/testdata/test-lcms/from stellar-core#5423test-lcm-next(+3 suites, +279 fixtures).refs/pull/5423/headsince no-vnextartifact exists, with an empty stellar-rpc image (guarded pull → AMBER skip).Deferred
TestCoreLCMIngestionis RED: 807/1134 fixtures fail to decode — a stellar-core#5423 defect, left failing deliberately. That PR's head bumped its XDR submodule to03cbf40c(closeTimeMsuint32→uint64) but did not re-recordtest-lcm-next/. See comment below.MAX_SUPPORTED_PROTOCOL_VERSION28+1. Needs a ruling; renumbering is an upstream core change.load-test-{ledgers,fixtures}-v29.xdr.zstdare copies of the v28 recordings; they pass but do not exercise ms close times. Regenerate once a P29~vnext~buildtestscore image exists.Upstream: stellar/go-stellar-sdk#5998, stellar/stellar-core#5423