fix(mocknet): RDY - establish shared signer and simulation readiness

Series context

This is RDY, the shared readiness prerequisite for the XMR S-series tracked in !4983 (closed). It gives the startup, signer configuration and simulation changes already cherry-picked into multiple series branches one delivery and review owner.

RDY targets develop. After it merges, dependent MRs should rebase onto the updated base and remove equivalent copies, preserving their own changes and regression coverage.

XMR keygen enablement and ceremony hardening remain in S00/!5026. RDY does not enable XMR keygen by itself.

Purpose

Mocknet registration can advance before its transactions commit, and the XMR profiles have inconsistent signer authentication, seed assignments and image defaults. Cluster simulation also repeats churn work and can submit swaps before the committed XMR network fee is available.

The registration fix addresses failed simulation job 16406550354, where account-sequence errors left joining validators without registered IPs and blocked churn. The fee-readiness check addresses failed simulation job 16458122251, where XMR outbound scheduling ran before the network fee was committed.

This MR establishes one shared readiness prerequisite for the dependent XMR changes. It does not enable XMR keygen on develop.

Changes

  • Wait for committed bond, node-key, IP and version transactions; retry only recognized sequence failures and stop on failed or uncertain registration. Install the required test tooling in CI.
  • Align all three XMR profiles on explicit signer authentication/network configuration, per-validator seeds and an immutable signer image. Add a fifth mocknet validator so a leave scenario retains four participants.
  • Set shared mocknet signing to 45 seconds with a 60-block jail. These two settings affect all mocknet chains. Configure the XMR scanner backoff for simulation.
  • Share cluster churn with the XMR replacement-vault check. Require the correct active membership, funded/spendable replacement vault and an outbound from that vault. Preserve the old bond-yield stage selector as an alias.
  • Wait for committed XMR fees before depositing, preserve source refund addresses through quotes/requotes, size refund deposits against current fees and distinguish pending outbounds from terminal failures.
  • Require producer connectivity in the TRON fixture. In the simulation client, retain the original signed transaction through ambiguous broadcast responses and same-byte retries. Only a verified rejection of the first submission permits another signing; unresolved inclusion stops the submitting actor with an explicit uncertainty error.
  • Retain XRP ledger history for standby catch-up, reserve distinct ports in the P2P communication regression, align the Solana startup test and declare the direct mnemonic dependency.

Dependencies and limits

The default remains TEST_SIMULATION_REQUIRE_XMR=0: develop still unconditionally skips XMR keygen. The mandatory test-simulation-xmr-readiness run must execute on a descendant containing the enabled/hardened keygen path from S00(!5026), using a dedicated Compose project because the target resets its volumes.

Production TRON receipt validation, whole-block retries, vault filtering and scanner-health fixes are maintained separately in !5114.

Keep equivalent prerequisites in dependent branches until they inherit this change. The common signing configuration also appears in !5059 and !4597: whichever lands first, omit the equivalent hunk from the remaining MRs. Their other solvency changes remain separate.

Validation

Validated locally at d35709361b:

  • Passed 30 startup/fixture tests and nine rendered Compose tests.
  • Passed the affected simulation actor, runner, TRON client, THORNode API, retry-helper and spent-reference consensus tests.
  • Passed scoped TRON/retry-helper race checks, targeted vet, gofumpt and repository-configured Trunk lint.

An unfiltered simulation pkg/types run encounters the unchanged ActorSuite.TestNewUser configuration-initialization failure. All native package tests and the retry/other actor gocheck tests pass separately.

Edited by ZlyDevMaya

Merge request reports

Loading
Loading