Skip to content

docs(testnet): diagnostic runbooks for passphrase, reserve, event, and contract-ID failures - #762

Merged
phertyameen merged 1 commit into
bridgelet-org:mainfrom
Muhammadjazuli:feature/testnet-runbook-diagnostics
Oct 15, 2026
Merged

phertyameen merged 1 commit into
bridgelet-org:mainfrom
Muhammadjazuli:feature/testnet-runbook-diagnostics

Conversation

@Muhammadjazuli

Copy link
Copy Markdown
Contributor

Summary

Adds four operational runbooks under testnet/runbooks/ following the template documented in testnet/runbooks/README.md (symptom, prerequisites, diagnosis, common causes, resolution, prevention checklist), and indexes all four in the runbooks README table.

wrong-network-passphrase.md (Closes #690)

Documents the exact error signature of signing/submitting with the wrong network passphrase: transaction-level tx_bad_auth (Horizon 400 / RPC sendTransaction ERROR), simulation passes while submission fails, and no Error(Contract, #N) is ever produced. Includes an explicit comparison table against contract-level authorization failures (UnauthorizedDestination 13, sweep-digest ed25519_verify traps) so the two are not conflated, plus the common config hides (copied .env, SDK Networks.PASSPHRASE, whitespace in the passphrase).

insufficient-reserve-errors.md (Closes #691)

Separates Stellar's network minimum base reserve (0.5 XLM/entry; op_low_reserve, op_underfunded, tx_insufficient_balance) from EphemeralAccount's internal reserve tracking (BASE_RESERVE_STROOPS = 1 XLM, reclaim_reserve, get_reserve_remaining/get_reserve_available/is_reserve_reclaimed, reserve events). Includes a layer-classification step so each family routes to the right fix, and notes ReserveContract is not deployed/wired.

event-not-appearing-in-horizon.md (Closes #692)

Troubleshooting steps for a successful transaction whose event is missing from Horizon: indexing lag (compare Horizon's ingested ledger to the tx ledger), exact topic-filter encoding per testnet/registry/event-topics.md (struct names vs. topic symbols, nested-array filter semantics), contract scoping (account vs. controller events), RPC getEvents retention, and a table of which success paths emit which events.

contract-not-found-error.md (Closes #693)

Covers the three causes of contract-resolution RPC errors: wrong/stale contract ID (testnet resets, conflicting artifacts, the 30-day staleness mechanism in last-verified.json), wrong network configured (valid strkey, no ledger entry on testnet), and genuinely never-deployed contracts — with account_factory called out as the canonical example, routed to the batch-creation stand-in example.

Checklist

  • Each runbook follows the structure in testnet/runbooks/README.md
  • New runbooks added to the runbooks index table
  • Cross-references use existing canonical docs (event-topics.md, network-config.md, contract-status.md, verify-contract-live.md)
  • No contract code, scripts, or CI touched

Closes #690
Closes #691
Closes #692
Closes #693

Add four operational runbooks under testnet/runbooks/ following the
existing runbook template, and index them in the runbooks README:

- wrong-network-passphrase.md: the tx_bad_auth signature of a transaction
  signed for the wrong network, and how to distinguish it from
  contract-level authorization failures
- insufficient-reserve-errors.md: separates Stellar's minimum base
  reserve (op_low_reserve/op_underfunded) from EphemeralAccount's
  internal reserve tracking (BASE_RESERVE_STROOPS, reclaim_reserve,
  reserve events)
- event-not-appearing-in-horizon.md: troubleshooting a successful
  transaction whose contract event is missing, covering indexing lag,
  topic-filter encoding per event-topics.md, and contract scoping
- contract-not-found-error.md: wrong/stale contract IDs, wrong network,
  and never-deployed contracts (e.g. account_factory) as causes of
  contract-resolution RPC errors

Closes bridgelet-org#690
Closes bridgelet-org#691
Closes bridgelet-org#692
Closes bridgelet-org#693
@drips-wave

drips-wave Bot commented Oct 15, 2026

Copy link
Copy Markdown

@Muhammadjazuli Great news! 🎉 Based on an automated assessment of this PR, the linked Wave issue(s) no longer count against your application limits.

You can now already apply to more issues while waiting for a review of this PR. Keep up the great work! 🚀

Learn more about application limits

@phertyameen
phertyameen merged commit 4404634 into bridgelet-org:main Oct 15, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

2 participants