Skip to content

feat(flow): add 10x10 ETH-to-SOL epoch stress test - #65

Open
joshglogau wants to merge 14 commits into
masterfrom
feature/swap-epoch-stress-flow
Open

feat(flow): add 10x10 ETH-to-SOL epoch stress test#65
joshglogau wants to merge 14 commits into
masterfrom
feature/swap-epoch-stress-flow

Conversation

@joshglogau

@joshglogau joshglogau commented Aug 11, 2026

Copy link
Copy Markdown

Summary

Adds the opt-in flow-swap-epoch-stress FlowScenario for concurrent Ethereum-to-Solana settlement and post-load epoch liveness.

Behavior

  • Provisions 10 indexed actors through the shared SwapUserIdentities tooling.
  • Submits 10 attributable swaps concurrently, with one write per Step.
  • Verifies depot ingestion, underwriting, destination payout, and 15 post-load epoch advances.
  • Preserves the platform's fail-fast orchestration.
  • Records normalized Solana ProgramFailedToComplete evidence through a tested cluster-tool helper.

The companion Wire-Network/wire-platform-build-system#26 keeps this long-running flow opt-in.

Review state

Jon's two requested changes are addressed in 94a081f5: the flow now reuses shared identities and removes unreachable aggregate failure checks. GitHub CI is green. Re-review and a live E2E rerun remain outstanding.

Execution

FLOW_INCLUDE=flow-swap-epoch-stress
FLOW_EXCLUDE=

@joshglogau joshglogau changed the title Add a manual 10-actor concurrent Ethereum-to-Solana swap FlowScenario with 21-producer/21-batch-operator settlement, Solana-memory, and post-load epoch-stall diagnostics Add a manual 10x10 Ethereum-to-Solana swap epoch stress FlowScenario with 21-producer/21-batch-operator load and invariant-based terminal reporting Aug 12, 2026
@joshglogau joshglogau changed the title Add a manual 10x10 Ethereum-to-Solana swap epoch stress FlowScenario with 21-producer/21-batch-operator load and invariant-based terminal reporting Add a new swap epoch stress FlowScenario, 10x10 Ethereum-to-Solana concurrent swaps Aug 12, 2026
@siliconswampio
siliconswampio force-pushed the feature/swap-epoch-stress-flow branch from 8e6a8f4 to a09e7ce Compare August 12, 2026 15:32
@joshglogau
joshglogau marked this pull request as ready for review August 12, 2026 17:10
@joshglogau

Copy link
Copy Markdown
Author

Verified: new flow catches Solana epoch OOM error, replicated from frontend testing https://github.com/Wire-Network/wire-platform-build-system/actions/runs/31613002567

  • 10 Ethereum actors submitted 10 concurrent swaps to 10 Solana actors.
  • All 10 requests reached sysio and remained PENDING.
  • Solana reached consensus for epoch 4, then EpochIn reported: memory allocation failed, out of memory
  • The SBF program panicked with ProgramFailedToComplete.
  • Epoch progression stopped at 4 instead of reaching 18.
  • Confirmed requests: 0/10.
  • Completed Solana payouts: 0/10.
  • The report recorded 476 memory-failure lines.

This reproduces the known runtime symptom cleanly. It does not prove whether the underlying cause is heap design, stored-data growth, or validator configuration—but it proves the Solana program fails during loaded epoch settlement and blocks the swaps.

@joshglogau
joshglogau requested a review from jglanz August 12, 2026 17:12
@joshglogau joshglogau changed the title Add a new swap epoch stress FlowScenario, 10x10 Ethereum-to-Solana concurrent swaps Add opt-in 10x10 Ethereum-to-Solana swap epoch stress flow Aug 18, 2026
@joshglogau

Copy link
Copy Markdown
Author

Addressed the orchestration feedback in 7a46293.

The separate per-step AbortController existed only to let a timed-out step fail without aborting the phase in collect mode, and the new failure-mode enum existed only to enable that collect-all behavior. That was scenario-specific behavior and did not justify expanding shared cluster-tool orchestration.

The redesign now:

  • restores the existing fail-fast ClusterBuildPhase and ClusterBuildPhaseGroup behavior;
  • removes ClusterBuildFailureMode and the per-step controller split;
  • keeps each of the ten source submissions as its own concurrent step, so submission failures remain attributable;
  • replaces the duplicate request-lifecycle and payout phases with one terminal diagnostic that observes all UWREQs, payouts, epoch progression, and Solana runtime evidence after successful submission.

This removes 311 net lines while preserving the stress flow goal and the terminal evidence needed to diagnose epoch settlement failures. Focused source typecheck, ESLint, and diff checks pass.

@jglanz jglanz 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.

I suspect the changes from removing the FailureMode enum created some runtime errors that need to be solved (rerun e2e-tests) based on these critiques from OMC

1. The terminal diagnostic can't run after the failures it exists to diagnose. The orchestration engine aborts on first phase failure, so TerminalDiagnostics is skipped exactly when StressActors/ConcurrentRequests fail — making the ACTOR_PROVISIONING_FAILED and REQUEST_SUBMISSION_FAILED checks unreachable dead code, contradicting the "preserve stress diagnostics after failures" commit.
2. SwapUserIdentities was re-implemented line-for-line (identity derivation verified byte-equivalent) instead of reused — dropping the keygen report records the harness version emits. Both lanes found this independently.

@joshglogau

Copy link
Copy Markdown
Author

@jglanz Addressed both requested changes in 94a081f5:

  • Replaced the flow-local actor provisioning with indexed reuse of SwapUserIdentities, preserving the shared keygen report records.
  • Removed the unreachable provisioning/submission aggregate checks. Failures remain fail-fast at the exact Step; the terminal diagnostic is now explicitly post-submission only.

Also added indexed identity regression coverage. Focused TypeScript, ESLint/Prettier, 13 Jest tests, and git diff --check pass.

@joshglogau
joshglogau marked this pull request as draft August 27, 2026 15:38
@joshglogau
joshglogau marked this pull request as ready for review September 2, 2026 13:54
@joshglogau joshglogau changed the title Add opt-in 10x10 Ethereum-to-Solana swap epoch stress flow feat(flow): add 10x10 ETH-to-SOL epoch stress test Sep 2, 2026
@joshglogau
joshglogau requested a review from jglanz September 2, 2026 15:18
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.

2 participants