Skip to content

ingest,network,xdr: zero-copy XDR view extractors for full-history ingestion - #5949

Merged
chowbao merged 8 commits into
mainfrom
ingest-view-extractors
Jun 12, 2026
Merged

ingest,network,xdr: zero-copy XDR view extractors for full-history ingestion#5949
chowbao merged 8 commits into
mainfrom
ingest-view-extractors

Conversation

@chowbao

@chowbao chowbao commented Jun 11, 2026

Copy link
Copy Markdown
Contributor

What

Adds the view-based, zero-copy twins of the parsed transaction path, for the full-history ingestion / read use case. Each one reads directly off the generated XDR *View accessors (which alias the source buffer) and never calls UnmarshalBinary.

New View twin of Package
LedgerCloseMetaViewDispatch (DispatchLedgerCloseMetaView) — version dispatch over V0/V1/V2: Header(), TxProcessing() (unified TxResultMetaView iterator), Envelopes(), TxProcessingHash the V-switch inside LedgerTransactionReader ingest
TransactionEventsView + TransactionEventsFromMeta / DiagnosticEventsFromMeta LedgerTransaction.GetTransactionEvents / GetDiagnosticEvents ingest
TransactionView + TransactionViewByHash / TransactionViewRange (by-hash envelope pairing, V3 soroban gate) LedgerTransaction / LedgerTransactionReader ingest
TransactionViewHasher + HashTransactionInEnvelopeView HashTransactionInEnvelope network
LedgerCloseMetaView.LedgerCloseTime LedgerCloseMeta.LedgerCloseTime xdr
TransactionResultView.Successful TransactionResult.Successful xdr

TransactionEventsView mirrors ingest.TransactionEvents but carries raw wire bytes ([][]byte / [][][]byte) instead of decoded values, and omits DiagnosticEvents (returned separately, because the two sets gate differently — see below).

Why

These are general-purpose XDR navigation primitives — turning a raw LedgerCloseMeta into per-transaction events, hashes, and details without a full decode. They were first written inside stellar-rpc's full-history work (stellar/stellar-rpc#778), which initially concluded "nothing belongs in the SDK." This PR reverses that call: the navigation is not RPC-specific, it's the zero-copy counterpart of what the SDK already ships for the parsed path, and the import graph (xdrnetworkingest) places each piece at the layer its dependencies require. stellar-rpc full-history (stellar/stellar-rpc#778, stellar/stellar-rpc#779) becomes a thin consumer.

Design notes

  • Zero-copy: every returned byte slice aliases the source LedgerCloseMetaView; callers copy what they retain. The hasher reuses one sha256 state + scratch buffers, so hashing allocates nothing per envelope.
  • Single meta walk: metaEventRaws is the one version-dispatched pass shared by both event extractors and the read path, so contract events and diagnostics can't drift on version support; a future TransactionMeta V5 is added in exactly one switch.
  • V3 gating split (deliberate): TransactionEventsFromMeta emits SorobanMeta.Events whenever SorobanMeta is present (the events-index path relies on the trusted-input invariant "SorobanMeta present ⟺ soroban tx"); the read path re-applies the IsSorobanTx gate downstream, where the paired envelope is in hand — matching GetTransactionEvents. Diagnostics are ungated, matching the standalone GetDiagnosticEvents.
  • Legacy tolerance: TransactionMeta V0 (pre-Soroban) is treated as event-free rather than rejected, because full-history backfills from genesis.

Testing

Differential tests assert the view path is wire-identical to the parsed reference (LedgerTransactionReader, HashTransactionInEnvelope, GetTransactionEvents / GetDiagnosticEvents, TransactionResult.Successful) across:

  • LCM V0/V1/V2 and TransactionMeta V0–V4
  • all envelope types incl. legacy TX_V0 and fee-bump
  • reversed-TxSet hash pairing (agreed-set order ≠ apply order — positional pairing would mispair)
  • the V3 soroban contract-event gate (classic-envelope V3 → contract events gated off, diagnostics retained)
  • getTransactions cursor edges (start/limit slicing, past-end, negative, extreme limit)

go test ./ingest/... ./network/... ./xdr/..., go vet, gofmt — green.

Notes

  • ingest.TransactionView is the zero-copy read-path detail; it's distinct from the parsed ingest.LedgerTransaction (doc comments cross-reference).
  • No changes to the parsed path or any existing API.

Add view-based twins of the parsed transaction path for full-history
ingestion that avoid UnmarshalBinary by reading directly off the
generated XDR view accessors:

- ingest: LedgerCloseMetaView dispatch (header / TxProcessing / envelope
  enumeration over V0 TransactionSet + V1/V2 GeneralizedTransactionSet),
  TransactionEventsView with TransactionEventsFromMeta /
  DiagnosticEventsFromMeta, and a zero-copy Transaction read path
  (TransactionViewByHash / TransactionViewRange, by-hash envelope
  pairing) — the view analogs of LedgerTransaction /
  LedgerTransactionReader.
- network: TransactionViewHasher, the view twin of
  HashTransactionInEnvelope, hashing straight from envelope wire bytes
  (incl. the TX_V0 -> V1 conversion). Shares the empty-passphrase guard
  with hashTx via validatePassphrase.
- xdr: LedgerCloseMetaView.LedgerCloseTime and
  TransactionResultView.Successful, beside their parsed twins.

Validated wire-identical against the parsed path (LedgerTransactionReader,
HashTransactionInEnvelope, GetTransactionEvents / GetDiagnosticEvents)
across LCM V0/V1/V2 and TransactionMeta V0-V4 via differential tests,
including reversed-TxSet hash pairing and the V3 soroban contract-event
gate.
Copilot AI review requested due to automatic review settings June 11, 2026 21:36

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR adds zero-copy, view-based XDR navigation and extraction primitives that operate directly on generated *View accessors (aliasing the source buffer) to support full-history ingestion/read paths without UnmarshalBinary.

Changes:

  • Add view-based helpers in xdr for LedgerCloseMetaView.LedgerCloseTime and TransactionResultView.Successful.
  • Add a zero-allocation transaction hasher in network that hashes directly from TransactionEnvelopeView wire bytes.
  • Add ingest view-based transaction read/extraction APIs (LCM dispatch + per-tx materialization + event extractors) with differential tests against the parsed reader path.

Reviewed changes

Copilot reviewed 11 out of 11 changed files in this pull request and generated 1 comment.

Show a summary per file
File Description
xdr/transaction_result_view.go Adds TransactionResultView.Successful() to match parsed success semantics using only view discriminants.
xdr/ledger_close_meta_view.go Adds LedgerCloseMetaView.LedgerCloseTime() helper for header navigation from views.
network/transaction_view.go Introduces TransactionViewHasher and HashTransactionInEnvelopeView for zero-copy hashing from envelope views.
network/transaction_view_test.go Verifies view hashing matches parsed hashing across envelope types and edge cases.
network/main.go Refactors passphrase validation into a shared helper used by both parsed and view hashing paths.
ingest/transaction_view.go Adds zero-copy transaction materialization and range/by-hash retrieval using view dispatch + by-hash envelope pairing.
ingest/transaction_view_test.go Differential tests ensuring view-based transaction materialization matches parsed LedgerTransactionReader outputs wire-identically.
ingest/transaction_events_view.go Adds view-based raw event extractors with shared version-dispatched traversal for consistency across callers.
ingest/transaction_events_view_test.go Differential tests ensuring view event extraction matches parsed GetTransactionEvents / GetDiagnosticEvents behavior (including the deliberate V3 gating split).
ingest/ledger_close_meta_view_nav.go Adds LedgerCloseMetaViewDispatch and generalized TxSet envelope iteration to unify LCM version handling for view extractors.
ingest/CHANGELOG.md Documents the new zero-copy view extractor APIs in the ingest changelog.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread ingest/transaction_view.go
Distinguish the zero-copy read-path detail struct from the parsed
LedgerTransaction (and the generic 'Transaction' name): TransactionView
matches the package's other view-suffixed types (TransactionEventsView)
and the TransactionViewByHash / TransactionViewRange constructors that
produce it.
Comment thread xdr/ledger_close_meta_view.go
Comment thread network/transaction_view.go
Comment thread ingest/transaction_events_view.go Outdated
@chowbao
chowbao force-pushed the ingest-view-extractors branch from f563e98 to 52c9fd0 Compare June 11, 2026 21:52
LedgerCloseMetaView.LedgerCloseTime and TransactionResultView.Successful
(both new in this PR) read their fields through the generated Must*
accessors inside Try — Must* panics with *ViewError on the first malformed
field and Try recovers it, so the chain needs only one error check instead
of a per-field ladder. (Addresses the per-property error-inspection feedback
on stellar-rpc#778; the SDK already provides this mechanism.)

Pre-existing accessors (LedgerSequence/LedgerHash/PreviousLedgerHash) are
left untouched.
@chowbao
chowbao force-pushed the ingest-view-extractors branch from 70ef282 to b376025 Compare June 12, 2026 00:00
chowbao added a commit to stellar/stellar-rpc that referenced this pull request Jun 12, 2026
The zero-copy XDR view extractors moved into the go-stellar-sdk
(stellar/go-stellar-sdk#5949): ingest.DispatchLedgerCloseMetaView,
ingest.TransactionEventsFromMeta / DiagnosticEventsFromMeta,
ingest.TransactionViewByHash / TransactionViewRange (+ ingest.TransactionView),
and network.TransactionViewHasher. The local views package collapses to thin
RPC adapters over those APIs:

- views.ExtractEvents composes the SDK extractor with the RPC events.Payload
  shape and the Stage->(TxIdx,OpIdx) cursor sentinels (events.StageSentinels).
- views.ExtractTxHashes wraps the SDK navigation into txhash.Entry.
- views.ExtractTxDetailsByHash / ExtractTransactions delegate to the SDK read
  path; views.Transaction aliases ingest.TransactionView.
- dispatch.go and envelopes.go are deleted (moved to the SDK).

Also drops the per-event index from events.Payload: it is positional and
reconstructed at read time, so the eventIdx slot is removed from the 0x01 wire
layout (unmarshalHeader now requires the declared length to consume every
remaining byte, failing loudly on a pre-removal record) and the
before/after/after-tx counters are gone from LCMToPayloads. Only the
Stage->(TxIdx,OpIdx) cursor sentinels remain, shared with the SQL path via
events.StageSentinels.

Pins go-stellar-sdk to the #5949 branch pseudo-version; bump to the merged
version once that PR lands.
…erage

Renames inner err declarations flagged by go vet shadow, and ports the
V=1 TransactionPhase (ParallelTxsComponent) differential test upstream
so enumerateParallelTxs is covered where it lives.

@tamirms tamirms left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

My main comment is the size of the public API. Besides the extractors themselves, the PR also exports the helpers they are built from — LedgerCloseMetaViewDispatch, DispatchLedgerCloseMetaView, TxResultMetaView, TransactionEventsFromMeta, DiagnosticEventsFromMeta. The only known consumer (stellar/stellar-rpc#779) needs a handful of complete functions, and once those exist nothing outside the SDK uses the helpers. Making something public later is easy; making it private later is impossible. Proposal:

  • Add ExtractTxHashes(lcm xdr.LedgerCloseMetaView) ([]xdr.Hash, error) — needed by the tx-hash index in stellar/stellar-rpc#779, missing today.
  • Add ExtractLedgerEvents(lcm xdr.LedgerCloseMetaView) ([]LedgerTransactionEvents, error), with LedgerTransactionEvents a flat {Hash [32]byte; TransactionEvents [][]byte; OperationEvents [][][]byte}. The hash belongs in this result: the events index needs hash + events per transaction, and getting hashes from a separate call would walk TxProcessing twice (sizing each element to advance the iterator is the dominant cost). With this in place, TransactionEventsView / TransactionEventsFromMeta / DiagnosticEventsFromMeta have no external callers and can be unexported.
  • TransactionViewByHash / TransactionViewRange stay public as-is.
  • network.TransactionViewHasher: Hash currently returns the hash, the envelope type, and an is-soroban flag. Return just ([32]byte, error) — the envelope-type and soroban reads don't involve hashing or the passphrase, and fit better as unexported helpers in ingest. The one-shot HashTransactionInEnvelopeView has no callers; drop it.
  • Everything else (LedgerCloseMetaViewDispatch, DispatchLedgerCloseMetaView, TxResultMetaView, the envelope enumerators) becomes unexported.

A smaller API is also easier to keep stable: these helpers put iter.Seq2 and the TxResultMetaView interface in public signatures, which are the most likely things to change as the views API matures. Worth marking the new functions as experimental in the doc comments and CHANGELOG either way.

Smaller items:

  1. Naming: ingest.TransactionView collides with the generated xdr.TransactionView (used as a parameter type in network/transaction_view.go in this same PR). LedgerTransactionView parallels LedgerTransaction and collides with nothing. +1 to Copilot's EventsDiagnosticEvents rename.

  2. TX_V0 coverage: both V0 fixtures have TimeBounds present, so the absent arm of the TimeBounds/Preconditions wire equivalence (stated in the doc comment) is untested. Add a txV0(t, nil, …) case to the hasher differential test.

  3. Real-ledger tests and benchmarks: using xdr/testdata/ledger_58752000.bin, add (a) equivalence tests asserting the four public extractors produce output identical to the eager-decode path (LedgerTransactionReader / GetTransactionEvents), and (b) benchmarks for the four on that ledger (for TransactionViewRange, both full-ledger and a small page — the small page is where the early-stop in envelope pairing shows up). The hand-rolled benchmarks in xdr on the same fixture (extract_tx_bench_test.go, event_extraction_bench_test.go, selective_decode_bench_test.go) prototype exactly the loops this PR turns into production code — delete them in favor of the new ones, keeping their full-decode arms as the A/B baseline. Where the equivalence tests end up duplicating existing synthetic differential coverage, prefer the equivalence tests; the synthetic fixtures still earn their place for shapes a modern ledger can't contain (LCM V0, older meta versions, the TX_V0 TimeBounds arms, the V3 soroban gate, cursor and error edges).

…tractors

Address review feedback: the public surface is now the complete
extractors only — the navigation scaffolding they are built from is
unexported, keeping iter.Seq2 and the per-version TxProcessing
interface out of public signatures.

- Add ExtractTxHashes (per-ledger tx hashes in apply order) and
  ExtractLedgerEvents (hash + contract events per transaction from a
  single TxProcessing walk, as flat raw-bytes LedgerTransactionEvents).
- Unexport DispatchLedgerCloseMetaView/LedgerCloseMetaViewDispatch/
  TxResultMetaView/TxProcessingHash and TransactionEventsView with
  TransactionEventsFromMeta/DiagnosticEventsFromMeta.
- Rename ingest.TransactionView -> LedgerTransactionView (parallels
  LedgerTransaction; no longer collides with the generated
  xdr.TransactionView) and its Events field -> DiagnosticEvents.
- network.TransactionViewHasher.Hash returns just ([32]byte, error);
  the envelope-type/soroban discriminant reads move to unexported
  ingest helpers; drop the unused one-shot HashTransactionInEnvelopeView.
- Mark the new extractors experimental in doc comments and CHANGELOG.
- Tests: TX_V0 absent-TimeBounds arm in the hasher differential;
  real-ledger (ledger_58752000) equivalence tests proving all four
  public extractors identical to the eager-decode reference path, and
  benchmarks with full-decode baselines superseding the hand-rolled
  xdr prototypes (extract_tx/event_extraction/selective_decode), which
  are deleted.
@chowbao

chowbao commented Jun 12, 2026

Copy link
Copy Markdown
Contributor Author

Implemented the API reduction in f92b870 — point by point:

Public surface. The package now exports exactly the complete extractors:

  • ExtractTxHashes(lcm) ([]xdr.Hash, error) — added; hashes in apply order straight off TransactionResultPair.
  • ExtractLedgerEvents(lcm) ([]LedgerTransactionEvents, error) — added, with the flat {Hash [32]byte; TransactionEvents [][]byte; OperationEvents [][][]byte} shape; hash + events come from one TxProcessing walk as you noted. Diagnostics deliberately excluded (read-path concern; available via LedgerTransactionView.DiagnosticEvents).
  • LedgerTransactionViewByHash / LedgerTransactionViewRange — unchanged semantics, renamed per the naming point.
  • Everything else is unexported now: DispatchLedgerCloseMetaView/LedgerCloseMetaViewDispatch/TxResultMetaView/TxProcessingHash, plus TransactionEventsView with TransactionEventsFromMeta/DiagnosticEventsFromMeta. iter.Seq2 and the TxProcessing interface no longer appear in any public signature.
  • network.TransactionViewHasher.Hash returns just ([32]byte, error); the envelope-type/soroban reads moved to unexported ingest helpers; HashTransactionInEnvelopeView is dropped.
  • The new functions are marked experimental in doc comments and the CHANGELOG entry.

1 — Naming: TransactionViewLedgerTransactionView (and Copilot's EventsDiagnosticEvents). Done.

2 — TX_V0 TimeBounds: added a TimeBounds-absent V0 case to the hasher differential test, pinning the absent arm of the wire-equivalence claim.

3 — Real-ledger tests and benchmarks: added equivalence tests on ledger_58752000.bin asserting all four public extractors produce output identical to the eager-decode path (hashes, per-tx envelope/result/meta bytes, Successful, apply order, transaction/operation/diagnostic event bytes), and benchmarks for the four with full-decode baselines — including the small-page LedgerTransactionViewRange arm where the envelope-pairing early stop shows up (~93µs vs ~1.6ms full ledger on my machine). The three hand-rolled xdr prototypes (extract_tx_bench_test.go, event_extraction_bench_test.go, selective_decode_bench_test.go) are deleted; their full-decode arms live on as the new baselines. The synthetic differential tests stay for the shapes a modern ledger can't contain (LCM V0, meta V0–V3, the V3 soroban gate, TX_V0 arms, cursor/error edges).

Downstream note: stellar/stellar-rpc#779 will need a small follow-up to consume ExtractTxHashes/ExtractLedgerEvents instead of the now-unexported helpers — that lands with its next SDK bump.

chowbao added a commit to stellar/stellar-rpc that referenced this pull request Jun 12, 2026
Bump go-stellar-sdk to f92b870f (stellar/go-stellar-sdk#5949 review
response), which shrank the public extractor surface:

- ExtractTxHashes now wraps ingest.ExtractTxHashes (the navigation
  scaffolding the old wrapper drove is unexported in the SDK).
- ExtractEvents now wraps ingest.ExtractLedgerEvents — hash + events
  from one TxProcessing walk; the V0 sentinel stays RPC policy, read
  off the discriminator locally.
- views.Transaction aliases ingest.LedgerTransactionView (renamed from
  TransactionView); the diagnostic field is now DiagnosticEvents.
- ExtractTxDetailsByHash / ExtractTransactions delegate to
  LedgerTransactionViewByHash / LedgerTransactionViewRange.
Carries over the position-spread dimension from the deleted xdr
selective-decode prototype: TxProcessing scan cost scales with apply
position and the envelope-pairing early stop with agreed-set position,
so a single mid-ledger sample under-describes the range.
@chatgpt-codex-connector

Copy link
Copy Markdown

Codex usage limits have been reached for code reviews. Please check with the admins of this repo to increase the limits by adding credits.
Credits must be used to enable repository wide code reviews.

@tamirms tamirms left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM once CI is green — staticcheck is flagging diagnosticEventsFromMeta as unused now that the read path goes through metaEventRaws directly; it can just be deleted.

staticcheck U1000: with the wrapper unexported, its only caller was a
test — the read path collects diagnostics through metaEventRaws'
wantDiag arm directly, and the test now does the same.
@chatgpt-codex-connector

Copy link
Copy Markdown

Codex usage limits have been reached for code reviews. Please check with the admins of this repo to increase the limits by adding credits.
Credits must be used to enable repository wide code reviews.

@chowbao
chowbao merged commit 1555ec5 into main Jun 12, 2026
11 checks passed
@chowbao
chowbao deleted the ingest-view-extractors branch June 12, 2026 17:06
chowbao added a commit to stellar/stellar-rpc that referenced this pull request Jun 13, 2026
…tructive opens

Address the remaining PR #779 review threads:

- All hot stores are chunk-bound (each accumulates one chunk before
  being frozen into cold artifacts), so make the binding explicit on
  the ledger and txhash hot stores too: their constructors now take a
  chunk.ID and expose ChunkID(), and RunHot validates every injected
  store's binding up front instead of only the events store's.
- Validate the probed first ledger IS the chunk's first before the
  destructive cold constructors run, so a corrupted/misrouted pack or
  a wrong-range ChunkSource cannot truncate a previously finalized
  chunk on its way to drain's rejection.
- Re-check ctx cancellation after the first-ledger probe: a sibling
  chunk worker's failure cancels gctx while this worker is blocked in
  the probe's I/O, and the replay wrapper would otherwise hand drain
  the cached ledger only after the constructors already truncated the
  existing artifacts.
- Extract the pre-build validation into probeChunkSource (keeps
  runOneChunkCold under the funlen limit and gives the probe a single
  home).
- Bump go-stellar-sdk to the post-merge commit of stellar/go-stellar-sdk#5949.
tamirms added a commit to tamirms/go that referenced this pull request Jun 13, 2026
…elds() for xdr views

Extends the shipped v1 xdr views API (stellar#5949) with four additive features,
without removing Iter()/All()/At()/Raw() or adding a Scan() cursor:

- Decoded union discriminants: the discriminant accessor (e.g. V()) now
  returns the decoded enum/int/bool directly instead of a leaf view, so
  callers drop the two-step V().Value(). Enum discriminants validate against
  the known case set; int discriminants do not (default arms stay reachable).

- Typed fixed-opaque Value(): returns the typed array (e.g. Hash, [N]byte)
  by value instead of []byte.

- Array count validation (OOM guard): Count()/All()/Iter() validate the wire
  element count against the remaining buffer up front, using a per-type
  minimum element wire size. size()/valid() keep the cheap unvalidated count
  because their per-element walk is already buffer-bounded, so the check is
  confined to the allocation/iteration entry points. Covered by
  view_count_validation_test.go.

- Fields(): a per-struct method that locates every field in a single walk
  and returns a bundle of trimmed sub-views, enabling fused advance+locate
  iteration (advance by len(bundle.View)) for single-walk materialization
  without a cursor. A randxdr differential (TestView_RandXDR_Fields) checks
  the located fields are trimmed to their exact wire extent.

The xdr-package view helpers are adjusted for the typed-opaque and decoded-
discriminant changes (LedgerCloseMetaView.LedgerHash/PreviousLedgerHash use
Raw() for zero-copy bytes; TransactionResultView.Successful uses the decoded
code), and views_api.md documents all four features.

Co-Authored-By: Claude Opus 4.8 <[email protected]>
tamirms added a commit to tamirms/go that referenced this pull request Jun 15, 2026
…elds() for xdr views

Extends the shipped v1 xdr views API (stellar#5949) with four additive features,
without removing Iter()/All()/At()/Raw() or adding a Scan() cursor:

- Decoded union discriminants: the discriminant accessor (e.g. V()) now
  returns the decoded enum/int/bool directly instead of a leaf view, so
  callers drop the two-step V().Value(). Enum discriminants validate against
  the known case set; int discriminants do not (default arms stay reachable).

- Typed fixed-opaque Value(): returns the typed array (e.g. Hash, [N]byte)
  by value instead of []byte.

- Array count validation (OOM guard): Count()/All()/Iter() validate the wire
  element count against the remaining buffer up front, using a per-type
  minimum element wire size. size()/valid() keep the cheap unvalidated count
  because their per-element walk is already buffer-bounded, so the check is
  confined to the allocation/iteration entry points. Covered by
  view_count_validation_test.go.

- Fields(): a per-struct method that locates every field in a single walk
  and returns a bundle of trimmed sub-views, enabling fused advance+locate
  iteration (advance by len(bundle.View)) for single-walk materialization
  without a cursor. A randxdr differential (TestView_RandXDR_Fields) checks
  the located fields are trimmed to their exact wire extent.

The xdr-package view helpers are adjusted for the typed-opaque and decoded-
discriminant changes (LedgerCloseMetaView.LedgerHash/PreviousLedgerHash use
Raw() for zero-copy bytes; TransactionResultView.Successful uses the decoded
code), and views_api.md documents all four features.

Co-Authored-By: Claude Opus 4.8 <[email protected]>
tamirms added a commit to tamirms/go that referenced this pull request Jun 15, 2026
…elds() for xdr views

Extends the shipped v1 xdr views API (stellar#5949) with four additive features,
without removing Iter()/All()/At()/Raw() or adding a Scan() cursor:

- Decoded union discriminants: the discriminant accessor (e.g. V()) now
  returns the decoded enum/int/bool directly instead of a leaf view, so
  callers drop the two-step V().Value(). Enum discriminants validate against
  the known case set; int discriminants do not (default arms stay reachable).

- Typed fixed-opaque Value(): returns the typed array (e.g. Hash, [N]byte)
  by value instead of []byte.

- Array count validation (OOM guard): Count()/All()/Iter() validate the wire
  element count against the remaining buffer up front, using a per-type
  minimum element wire size. size()/valid() keep the cheap unvalidated count
  because their per-element walk is already buffer-bounded, so the check is
  confined to the allocation/iteration entry points. Covered by
  view_count_validation_test.go.

- Fields(): a per-struct method that locates every field in a single walk
  and returns a bundle of trimmed sub-views, enabling fused advance+locate
  iteration (advance by len(bundle.View)) for single-walk materialization
  without a cursor. A randxdr differential (TestView_RandXDR_Fields) checks
  the located fields are trimmed to their exact wire extent.

The xdr-package view helpers are adjusted for the typed-opaque and decoded-
discriminant changes (LedgerCloseMetaView.LedgerHash/PreviousLedgerHash use
Raw() for zero-copy bytes; TransactionResultView.Successful uses the decoded
code), and views_api.md documents all four features.

Co-Authored-By: Claude Opus 4.8 <[email protected]>
hypekostas pushed a commit to stellar/stellar-disbursement-platform-backend that referenced this pull request Aug 17, 2026
… updates (#1185)

Yes — the previous response still rendered the Markdown. You want the **literal Markdown source**, with no HTML tags at all.

```markdown
Bumps the minor-and-patch group with 7 updates in the `/` directory:

| Package | From | To |
| --- | --- | --- |
| [github.com/aws/aws-sdk-go-v2](https://github.com/aws/aws-sdk-go-v2) | `1.43.0` | `1.43.5` |
| [github.com/aws/aws-sdk-go-v2/config](https://github.com/aws/aws-sdk-go-v2) | `1.32.31` | `1.32.36` |
| [github.com/aws/aws-sdk-go-v2/service/ses](https://github.com/aws/aws-sdk-go-v2) | `1.37.0` | `1.37.5` |
| [github.com/aws/aws-sdk-go-v2/service/sns](https://github.com/aws/aws-sdk-go-v2) | `1.42.0` | `1.42.5` |
| [github.com/stellar/go-stellar-sdk](https://github.com/stellar/go-stellar-sdk) | `0.6.0` | `0.7.2` |
| [golang.org/x/crypto](https://github.com/golang/crypto) | `0.54.0` | `0.55.0` |
| [golang.org/x/net](https://github.com/golang/net) | `0.57.0` | `0.58.0` |

Updates `github.com/aws/aws-sdk-go-v2` from 1.43.0 to 1.43.5

### Commits

- [`a14f5f1`](aws/aws-sdk-go-v2@a14f5f1) Release 2026-08-10
- [`339f0b6`](aws/aws-sdk-go-v2@339f0b6) Regenerated Clients
- [`0978e3d`](aws/aws-sdk-go-v2@0978e3d) Update API model
- [`3cc614d`](aws/aws-sdk-go-v2@3cc614d) Fix codegen mp ([#3508](https://redirect.github.com/aws/aws-sdk-go-v2/issues/3508))
- [`1434b18`](aws/aws-sdk-go-v2@1434b18) generate response snapshots for json ([#3507](https://redirect.github.com/aws/aws-sdk-go-v2/issues/3507))
- [`ad58f77`](aws/aws-sdk-go-v2@ad58f77) Checkout smithy-go on PRs at the commit pointed out by SMITHY_GO_CODEGEN_VERS...
- [`c002860`](aws/aws-sdk-go-v2@c002860) feat: move close-body, logger, and service-metadata work out of the middlewar...
- [`f152336`](aws/aws-sdk-go-v2@f152336) Release 2026-08-07
- [`37d88d7`](aws/aws-sdk-go-v2@37d88d7) Regenerated Clients
- [`c54b278`](aws/aws-sdk-go-v2@c54b278) Update endpoints model
- Additional commits viewable in [compare view](aws/aws-sdk-go-v2@v1.43.0...v1.43.5)

Updates `github.com/aws/aws-sdk-go-v2/config` from 1.32.31 to 1.32.36

### Commits

- [`a14f5f1`](aws/aws-sdk-go-v2@a14f5f1) Release 2026-08-10
- [`339f0b6`](aws/aws-sdk-go-v2@339f0b6) Regenerated Clients
- [`0978e3d`](aws/aws-sdk-go-v2@0978e3d) Update API model
- [`3cc614d`](aws/aws-sdk-go-v2@3cc614d) Fix codegen mp ([#3508](https://redirect.github.com/aws/aws-sdk-go-v2/issues/3508))
- [`1434b18`](aws/aws-sdk-go-v2@1434b18) generate response snapshots for json ([#3507](https://redirect.github.com/aws/aws-sdk-go-v2/issues/3507))
- [`ad58f77`](aws/aws-sdk-go-v2@ad58f77) Checkout smithy-go on PRs at the commit pointed out by SMITHY_GO_CODEGEN_VERS...
- [`c002860`](aws/aws-sdk-go-v2@c002860) feat: move close-body, logger, and service-metadata work out of the middlewar...
- [`f152336`](aws/aws-sdk-go-v2@f152336) Release 2026-08-07
- [`37d88d7`](aws/aws-sdk-go-v2@37d88d7) Regenerated Clients
- [`c54b278`](aws/aws-sdk-go-v2@c54b278) Update endpoints model
- Additional commits viewable in [compare view](aws/aws-sdk-go-v2@config/v1.32.31...config/v1.32.36)

Updates `github.com/aws/aws-sdk-go-v2/credentials` from 1.19.30 to 1.19.35

### Commits

- [`a14f5f1`](aws/aws-sdk-go-v2@a14f5f1) Release 2026-08-10
- [`339f0b6`](aws/aws-sdk-go-v2@339f0b6) Regenerated Clients
- [`0978e3d`](aws/aws-sdk-go-v2@0978e3d) Update API model
- [`3cc614d`](aws/aws-sdk-go-v2@3cc614d) Fix codegen mp ([#3508](https://redirect.github.com/aws/aws-sdk-go-v2/issues/3508))
- [`1434b18`](aws/aws-sdk-go-v2@1434b18) generate response snapshots for json ([#3507](https://redirect.github.com/aws/aws-sdk-go-v2/issues/3507))
- [`ad58f77`](aws/aws-sdk-go-v2@ad58f77) Checkout smithy-go on PRs at the commit pointed out by SMITHY_GO_CODEGEN_VERS...
- [`c002860`](aws/aws-sdk-go-v2@c002860) feat: move close-body, logger, and service-metadata work out of the middlewar...
- [`f152336`](aws/aws-sdk-go-v2@f152336) Release 2026-08-07
- [`37d88d7`](aws/aws-sdk-go-v2@37d88d7) Regenerated Clients
- [`c54b278`](aws/aws-sdk-go-v2@c54b278) Update endpoints model
- Additional commits viewable in [compare view](aws/aws-sdk-go-v2@credentials/v1.19.30...credentials/v1.19.35)

Updates `github.com/aws/aws-sdk-go-v2/service/ses` from 1.37.0 to 1.37.5

### Commits

- [`b4784c1`](aws/aws-sdk-go-v2@b4784c1) Release 2026-07-01
- [`97c0201`](aws/aws-sdk-go-v2@97c0201) Regenerated Clients
- [`6687238`](aws/aws-sdk-go-v2@6687238) Update endpoints model
- [`995297f`](aws/aws-sdk-go-v2@995297f) Update API model
- [`c26cfc6`](aws/aws-sdk-go-v2@c26cfc6) Fix bump smithy-go to cover multiple issues ([#3461](https://redirect.github.com/aws/aws-sdk-go-v2/issues/3461))
- [`fae66b8`](aws/aws-sdk-go-v2@fae66b8) Set transfer manager error as the first error seen, preventing race condition...
- [`cf0eabd`](aws/aws-sdk-go-v2@cf0eabd) Release 2026-06-30
- [`ad0c091`](aws/aws-sdk-go-v2@ad0c091) Regenerated Clients
- [`196e961`](aws/aws-sdk-go-v2@196e961) Update endpoints model
- [`1529ead`](aws/aws-sdk-go-v2@1529ead) Update API model
- Additional commits viewable in [compare view](aws/aws-sdk-go-v2@v1.37.0...service/pi/v1.37.5)

Updates `github.com/aws/aws-sdk-go-v2/service/sns` from 1.42.0 to 1.42.5

### Commits

- [`dcbed91`](aws/aws-sdk-go-v2@dcbed91) Release 2026-01-09
- [`08120e8`](aws/aws-sdk-go-v2@08120e8) Regenerated Clients
- [`1d7a925`](aws/aws-sdk-go-v2@1d7a925) Update endpoints model
- [`482067d`](aws/aws-sdk-go-v2@482067d) Update API model
- [`4662404`](aws/aws-sdk-go-v2@4662404) remove example ([#3282](https://redirect.github.com/aws/aws-sdk-go-v2/issues/3282))
- [`c28a6f4`](aws/aws-sdk-go-v2@c28a6f4) Release 2026-01-07
- [`2fa7a72`](aws/aws-sdk-go-v2@2fa7a72) Regenerated Clients
- [`077cbaa`](aws/aws-sdk-go-v2@077cbaa) Update endpoints model
- [`3282dbc`](aws/aws-sdk-go-v2@3282dbc) Update API model
- [`3daa74a`](aws/aws-sdk-go-v2@3daa74a) Release 2026-01-06
- Additional commits viewable in [compare view](aws/aws-sdk-go-v2@v1.42.0...service/amp/v1.42.5)

Updates `github.com/stellar/go-stellar-sdk` from 0.6.0 to 0.7.2

### Release Notes

Source: [github.com/stellar/go-stellar-sdk releases](https://github.com/stellar/go-stellar-sdk/releases)

#### v0.7.2

##### What's Changed

- xdr: compare assets by their XDR encoding, and use Equals for asset equality by [@karthikiyer56](https://github.com/karthikiyer56) in [stellar/go-stellar-sdk#5974](https://redirect.github.com/stellar/go-stellar-sdk/pull/5974)
- txnbuild: consolidate liquidity pool ordering guards; xdr and ingest cleanups by [@karthikiyer56](https://github.com/karthikiyer56) in [stellar/go-stellar-sdk#5978](https://redirect.github.com/stellar/go-stellar-sdk/pull/5978)
- strkey: enforce SEP-23 payload lengths in Decode and DecodeAny by [@karthikiyer56](https://github.com/karthikiyer56) in [stellar/go-stellar-sdk#5977](https://redirect.github.com/stellar/go-stellar-sdk/pull/5977)

**Full Changelog:** [v0.7.1...v0.7.2](stellar/go-stellar-sdk@v0.7.1...v0.7.2)

#### v0.7.1

##### What's Changed

- stellartoml: validate domain in GetStellarToml for parity with sibling by [@karthikiyer56](https://github.com/karthikiyer56) in [stellar/go-stellar-sdk#5970](https://redirect.github.com/stellar/go-stellar-sdk/pull/5970)
- ingest: one ledger walk — ExtractLedgerTxParts + EventsFromTxParts/FeesFromTxParts (supersedes the extractor bundles) by [@karthikiyer56](https://github.com/karthikiyer56) in [stellar/go-stellar-sdk#5966](https://redirect.github.com/stellar/go-stellar-sdk/pull/5966)

**Full Changelog:** [v0.7.0...v0.7.1](stellar/go-stellar-sdk@v0.7.0...v0.7.1)

#### v0.7.0

##### What's Changed

- ingest,network,xdr: zero-copy XDR view extractors for full-history ingestion by [@chowbao](https://github.com/chowbao) in [stellar/go-stellar-sdk#5949](https://redirect.github.com/stellar/go-stellar-sdk/pull/5949)
- xdr,xdrgen,ingest: extend xdr views (decoded discriminants, typed opaque, count validation, Fields) and rebuild the view extractors on them by [@tamirms](https://github.com/tamirms) in [stellar/go-stellar-sdk#5951](https://redirect.github.com/stellar/go-stellar-sdk/pull/5951)
- protocols/rpc: add UseUpgradedAuth flag to SimulateTransactionRequest by [@Ryang-21](https://github.com/Ryang-21) in [stellar/go-stellar-sdk#5948](https://redirect.github.com/stellar/go-stellar-sdk/pull/5948)
- protocols/rpc: Add LedgerCloseTime to GetHealthResponse by [@felixl256](https://github.com/felixl256) in [stellar/go-stellar-sdk#5958](https://redirect.github.com/stellar/go-stellar-sdk/pull/5958)
- ingest/loadtest: expand loadtest functionality to handle multiple ledger bundles by [@cjonas9](https://github.com/cjonas9) in [stellar/go-stellar-sdk#5959](https://redirect.github.com/stellar/go-stellar-sdk/pull/5959)
- ingest: expose fee-bump inner hashes on the view extractors by [@tamirms](https://github.com/tamirms) in [stellar/go-stellar-sdk#5964](https://redirect.github.com/stellar/go-stellar-sdk/pull/5964)
- ingest/ledgerbackend: Update captive-core-pubnet.cfg: swap SP with Obsrvr by [@drebelsky](https://github.com/drebelsky) in [stellar/go-stellar-sdk#5963](https://redirect.github.com/stellar/go-stellar-sdk/pull/5963)
- Protocol 28 (CAP-0085) by [@sisuresh](https://github.com/sisuresh) in [stellar/go-stellar-sdk#5965](https://redirect.github.com/stellar/go-stellar-sdk/pull/5965)

##### New Contributors

- [@Ryang-21](https://github.com/Ryang-21) made their first contribution in [stellar/go-stellar-sdk#5948](https://redirect.github.com/stellar/go-stellar-sdk/pull/5948)
- [@felixl256](https://github.com/felixl256) made their first contribution in [stellar/go-stellar-sdk#5958](https://redirect.github.com/stellar/go-stellar-sdk/pull/5958)

**Full Changelog:** [v0.6.0...v0.7.0](stellar/go-stellar-sdk@v0.6.0...v0.7.0)

#### v0.6.1

##### What's Changed

- Backports for Horizon 27.0.1 (release-0.6.1) by [@karthikiyer56](https://github.com/karthikiyer56) in [stellar/go-stellar-sdk#5979](https://redirect.github.com/stellar/go-stellar-sdk/pull/5979)

**Full Changelog:** [v0.6.0...v0.6.1](stellar/go-stellar-sdk@v0.6.0...v0.6.1)

### Changelog

Source: [github.com/stellar/go-stellar-sdk changelog](https://github.com/stellar/go-stellar-sdk/blob/main/CHANGELOG.md)

# Changelog

This repository adheres to [Go module Versioning](https://go.dev/doc/modules/version-numbers).

This monorepo contains a number of SDKs:

- `horizonclient` ([changelog](https://github.com/stellar/go-stellar-sdk/blob/main/clients/horizonclient/CHANGELOG.md))
- `txnbuild` ([changelog](https://github.com/stellar/go-stellar-sdk/blob/main/txnbuild/CHANGELOG.md))
- `rpcclient` ([changelog](https://github.com/stellar/go-stellar-sdk/blob/main/clients/rpcclient/CHANGELOG.md))
- `corelient` ([changelog](https://github.com/stellar/go-stellar-sdk/blob/main/clients/stellarcore/CHANGELOG.md))

Official project releases may be found here: [https://github.com/stellar/go-stellar-sdk/releases](https://github.com/stellar/go-stellar-sdk/releases)

## Pending

### New Features

- protocols/rpc: Add `LatestLedgerCloseTime` and `OldestLedgerCloseTime` to `GetHealthResponse`, exposing the latest and oldest ledgers' close times (unix seconds) on the `getHealth` response ([#5958](https://redirect.github.com/stellar/go-stellar-sdk/pull/5958))

### Breaking Changes

- strkey: `Decode` and `DecodeAny` now validate the payload length against the version byte per [SEP-23](https://github.com/stellar/stellar-protocol/blob/master/ecosystem/sep-0023.md). Fixed-length keys (account ID, seed, muxed account, contract, liquidity pool, claimable balance, hashTx, hashX) must decode to their exact canonical size, and signed payloads must carry a declared payload length of 1–64 bytes matched by their zero padding. Inputs with a valid checksum but a wrong-length payload — previously accepted by `Decode`, `DecodeAny`, and every `IsValid*` helper — are now rejected ([#5977](https://redirect.github.com/stellar/go-stellar-sdk/pull/5977)).
  - `NewSignedPayload` rejects empty payloads, matching CAP-40 (the protocol fails such signers with `SET_OPTIONS_BAD_SIGNER`/`txMALFORMED`) and keeping `SignedPayload.Encode` output decodable.
  - Length re-checks that `Decode` now subsumes were removed from `xdr.AccountId.SetAddress`, `xdr.MuxedAccount.SetAddress`, `xdr.SignerKey.SetAddress`, `xdr.ClaimableBalanceId.DecodeFromStrkey`, `strkey.DecodeMuxedAccount`, `strkey.MuxedAccount.SetAccountID`, and txnbuild contract-address parsing. For wrong-length inputs, the xdr and txnbuild callers now return strkey's `invalid payload length` error instead of their own; the strkey muxed-account helpers keep their generic `invalid muxed account` / `invalid ed25519 public key` errors; `xdr.MuxedAccount.SetAddress` is unchanged (it rejects on encoded string length before decoding).
  - `keypair.ParseAddress` wraps every decode failure with `ErrInvalidKey`, so `errors.Is(err, ErrInvalidKey)` keeps matching wrong-length keys (and now also matches checksum/encoding failures, which previously returned the bare strkey error).
  - `DecodeSignedPayload` delegates structure validation to `Decode`; structurally invalid inputs now uniformly error with `invalid signed payload` (previously `signed payload too short: ...` or `invalid signed payload padding`).
- xdr: `Asset.LessThan` now orders assets the way the protocol does — by the raw 32-byte issuer key — instead of by base32 strkey text, and `xdr.NewPoolId` requires strictly `a < b`, rejecting reversed and identical pairs ([#5974](https://redirect.github.com/stellar/go-stellar-sdk/pull/5974))
- txnbuild: liquidity pool operations reject asset pairs that are not strictly ordered; see the [txnbuild changelog](https://github.com/stellar/go-stellar-sdk/blob/main/txnbuild/CHANGELOG.md) ([#5974](https://redirect.github.com/stellar/go-stellar-sdk/pull/5974))

### Bug Fixes

- processors/token_transfer: trustline revocation now compares liquidity pool assets by value instead of pointer identity, fixing wrong-leg selection when burning pool shares ([#5974](https://redirect.github.com/stellar/go-stellar-sdk/pull/5974))

## [0.7.0]

### New Features

- xdr: Protocol 28 support (CAP-0083, CAP-0085). XDR regenerated from [stellar-xdr@9c9c1459](stellar/stellar-xdr@9c9c145), the commit stellar-core 28.0.0 pins; both CAPs are ungated upstream so `XDR_FEATURES` is now empty.

### Commits

- [`b46a463`](stellar/go-stellar-sdk@b46a463) strkey: enforce SEP-23 payload lengths in Decode and DecodeAny ([#5977](https://redirect.github.com/stellar/go-stellar-sdk/issues/5977))
- [`f8cd5df`](stellar/go-stellar-sdk@f8cd5df) txnbuild: consolidate liquidity pool ordering guards; xdr and ingest cleanups...
- [`d2f530f`](stellar/go-stellar-sdk@d2f530f) xdr: compare assets by their XDR encoding, and use Equals for asset equality ...
- [`3114a80`](stellar/go-stellar-sdk@3114a80) ingest: one ledger walk — ExtractLedgerTxParts + EventsFromTxParts/FeesFromTx...
- [`3c3872f`](stellar/go-stellar-sdk@3c3872f) stellartoml: validate domain in GetStellarToml for parity with sibling ([#5970](https://redirect.github.com/stellar/go-stellar-sdk/issues/5970))
- [`2b16db0`](stellar/go-stellar-sdk@2b16db0) Protocol 28 Support ([#5969](https://redirect.github.com/stellar/go-stellar-sdk/issues/5969))
- [`e5d0cb9`](stellar/go-stellar-sdk@e5d0cb9) Merge main into protocol-next ahead of the Protocol 28 GA merge
- [`149b994`](stellar/go-stellar-sdk@149b994) Finalize Protocol 28: pin stellar-xdr @ `9c9c1459` ([#5968](https://redirect.github.com/stellar/go-stellar-sdk/issues/5968))
- [`82df764`](stellar/go-stellar-sdk@82df764) Protocol 28 (CAP-0085) XDR regeneration ([#5965](https://redirect.github.com/stellar/go-stellar-sdk/issues/5965))
- [`8dd9cad`](stellar/go-stellar-sdk@8dd9cad) Update captive-core-pubnet.cfg: swap SP with Obsrvr ([#5963](https://redirect.github.com/stellar/go-stellar-sdk/issues/5963))
- Additional commits viewable in [compare view](stellar/go-stellar-sdk@v0.6.0...v0.7.2)

Updates `golang.org/x/crypto` from 0.54.0 to 0.55.0

### Commits

- [`f44d03d`](golang/crypto@f44d03d) go.mod: update golang.org/x dependencies
- [`5ed4944`](golang/crypto@5ed4944) crypto/internal/poly1305: provide optimised assembly for riscv64
- [`b07833c`](golang/crypto@b07833c) ssh: return window credit for discarded extended data
- [`d701c51`](golang/crypto@d701c51) acme: fix nil pointer dereference in pebble test error reporting
- [`999d053`](golang/crypto@999d053) ssh: fix parsing of GSSAPI payloads offering multiple mechanisms
- [`90f76b8`](golang/crypto@90f76b8) ssh: reject certificate signature keys before recursing
- [`b53964a`](golang/crypto@b53964a) ssh: permit empty but non-nil HostKeyAlgorithms, KeyExchanges, Ciphers, MACs
- [`626e40f`](golang/crypto@626e40f) ssh: drain stderr on forwarded TCP and Unix channels
- [`31914c6`](golang/crypto@31914c6) x509roots/fallback: update bundle
- [`f2135b8`](golang/crypto@f2135b8) all: clean up minor issues found by staticcheck
- Additional commits viewable in [compare view](golang/crypto@v0.54.0...v0.55.0)

Updates `golang.org/x/net` from 0.57.0 to 0.58.0

### Commits

- [`acc78e0`](golang/net@acc78e0) go.mod: update golang.org/x dependencies
- [`90d10f0`](golang/net@90d10f0) internal/http3: delete invalid Content-Length if declared in server handler
- [`08abf4d`](golang/net@08abf4d) internal/http3: infer headers when Content-Encoding is set but is empty
- [`8d10596`](golang/net@8d10596) http2: avoid deadlocks in wrapped ClientConn state callback
- [`99c3b0a`](golang/net@99c3b0a) http2/hpack: build the table lookup maps lazily, only for encoders
- [`5a920b1`](golang/net@5a920b1) http3: rework registration to allow using a fake network
- [`7fd2842`](golang/net@7fd2842) quic: return an error from Accept after PacketConn reader exits
- [`825111d`](golang/net@825111d) quic: avoid busy-loop when keep-alive is blocked by congestion control
- [`a02ddfa`](golang/net@a02ddfa) http/httpproxy: prioritize lowercase proxy environment variables
- [`574e5eb`](golang/net@574e5eb) quic: halt conn goroutines on close when listener exits early
- Additional commits viewable in [compare view](golang/net@v0.57.0...v0.58.0)

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.

---

You can trigger Dependabot actions by commenting on this PR:

- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency
- `@dependabot ignore <dependency name> major version` will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself)
- `@dependabot ignore <dependency name> minor version` will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself)
- `@dependabot ignore <dependency name>` will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself)
- `@dependabot unignore <dependency name>` will remove all of the ignore conditions of the specified dependency
- `@dependabot unignore <dependency name> <ignore condition>` will remove all of the ignore conditions of the specified dependency
```
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants