Repository navigation
cluster-tool: retarget the Solana outpost to liqsol_core + agave 4.0.3 fixes - #27
Merged
Merged
Conversation
…3 fixes - SolanaOutpostProgramTool: single source of truth for the wire-solana artifact layout (program name, keypair/.so/IDL subpaths, programId / assertProgramId, readIdl); the validator preload, outpost bootstrapper, daemon artifact preparation, and the flow Anchor loader all resolve through it. Daemon arg builders pass --solana-outpost-program-name liqsol_core; the IDL copies VERBATIM with a structural required-instructions guard. - SolanaOutpostBootstrapper: initialize -> initializeOutpost; registers the native-SOL zero-mint binding + its 9-dec precision. - SolanaYieldEmitterTool: AddAttestation account list matches the cleanroom (3 accounts, no system_program). - agave 4.0.3: the test validator binds gossip at its FIXED default instead of carving from --dynamic-port-range, so BindConfig resolves a per-cluster gossip port through the file-locked registry (a plain claim like every other port) and SolanaValidatorProcess passes --gossip-port. --limit-ledger-size defaults to agave-validator's MAINNET default (DEFAULT_MAX_LEDGER_SHREDS = 200_000_000) — the test validator's 10k-shred default prunes the blockstore to a ~90s window, which broke the underwriter's SwapDeposit source-deposit verify mid-flow. - PersistedClusterConfig exported; test fixtures typed against it (kills a literal-narrowing latent tsc error); requireOption -> assertOption per the assert* naming standard. - Docs: the canonical flow-run pattern (scripts/run-flow.mjs + scripts/flow-heartbeat-monitor.mjs, one monitor instance per run) written through CLAUDE.md, README (new "Monitoring a live flow run" section), and the flow READMEs; stale WIRE_CHAIN_DIR / WIRE_BUILD_DIR rows corrected to the standard WIRE_CLUSTER_PATH / WIRE_BUILD_PATH contract; soak default corrected to 30 min. Requires the wire-sysio companion branch (same name) for the --solana-outpost-program-name option. cluster-tool suite 511/511; all 13 flows green locally, including two-cluster parallel runs on the registry-resolved ports. Co-Authored-By: Claude Fable 5 <[email protected]> Change-Id: I5e52eb2ffff0ecd50608b9f3ba143a23bf8bdf14
…ator startup ceiling - ManagedProcess.awaitReady: a child that exited can never become ready — surface its exit code immediately instead of burning the whole verify budget. A crashed daemon and a slow boot previously produced the IDENTICAL 'did not pass verifyReady within Nms' line (2026-07-14 e2e gate: solana-test-validator start failures were undiagnosable from the message alone). - SolanaValidatorProcess.StartupTimeoutMs 180s -> 480s: the gate bootstraps several clusters concurrently; simultaneous agave genesis + PoH initialization on a shared runner exceeds 180s. The readiness poll returns early on healthy hosts, so the ceiling costs nothing there. Co-Authored-By: Claude Fable 5 <[email protected]> Change-Id: Ie6abc68bdc26cbbac14c635faa76cb1b198b1053
Contributor
Author
|
e2e gate GREEN over this branch: all 13 flows passed — run: https://github.com/Wire-Network/wire-platform-build-system/actions/runs/29368882980. Companions: Wire-Network/wire-sysio#517 (merge first — the --solana-outpost-program-name option), Wire-Network/wire-solana#374 (rebase-merged into next). The branch additionally carries the fail-fast-on-child-exit verify + validator startup ceiling landed from the run's failure analysis (three transient CI port-squat validator crashes, all retried green). |
qhool
added a commit
that referenced
this pull request
Aug 13, 2026
THREE things, all downstream of the #27 review and the master merge. 1. GAS CEILING IS NOW A BOOLEAN. The two-member enum had one member (`mainnetParity`) that meant "do what AnvilProcess already does unconditionally" — a no-op wearing a type. Replaced by `ethereumGasUncapped: boolean` / `--ethereum-gas-uncapped` / `WIRE_ETHEREUM_GAS_UNCAPPED`, default false. AnvilProcess.gasArgs takes the boolean. An unrecognised env value resolves FALSE rather than throwing: silently enabling an unrealistic gas regime would make a run look like it proved something about mainnet when it proves nothing, so the safe direction is "stay realistic". 2. MASTER-INTEGRATION BREAKS, found by a real recompile. Master split the durable operator LABEL from the generated ACCOUNT, so `underwriterAccountName(index)` is gone: the flow now takes the label for plan-time text and resolves the account from `ctx.keyStore.assertOperator(label).account` inside the predicate, where provisioning has run. `NodeConfig.batchOperatorAccount` -> `batchOperatorLabel`. `resolveLatestNonce` lost its count parameter when master centralised nonce authority for the shared ETH signer. These were latent behind a STALE INCREMENTAL BUILD: `tsc -b` considered the flow package current, so the post-merge "green" build never rechecked it. Editing a comment invalidated the tsbuildinfo and they surfaced. Verified now with `clean.sh && pnpm -r run clean` and a from-zero rebuild — the check that should have been run the first time. 3. LOCAL-ONLY DOCS, per the #27 review ("the flow should be standalone and can not accept outside config, running LOCALLY - CAN accept the outside config"). Four places claimed the e2e gate wires these env vars in shared job env; the gate now sets neither. Corrected in LoadProfile, the scenario Constants, ClusterConfigProvider, and CLAUDE.md's env table + CLI sentence. Clean build, eslint 0, 280 suites / 2,146 tests. Co-Authored-By: Claude <[email protected]>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Harness retarget for the wire-solana cleanroom (
liqsol_core-hosted OPP outpost) + agave 4.0.3 fixes.SolanaOutpostProgramTool— single source of truth for the wire-solana artifact layout (program name, keypair/.so/IDL subpaths,programId/assertProgramId,readIdl). The validator preload, outpost bootstrapper, daemon artifact preparation, and the flow Anchor loader all resolve through it. Daemon arg builders pass--solana-outpost-program-name liqsol_core; the IDL copies verbatim with a structural required-instructions guard.SolanaOutpostBootstrapper—initialize→initializeOutpost; registers the native-SOL zero-mint binding + its 9-dec precision.SolanaYieldEmitterTool—AddAttestationaccount list matches the cleanroom (3 accounts).--dynamic-port-range→BindConfigresolves a per-cluster gossip port through the file-locked registry (a plainclaimlike every other port) andSolanaValidatorProcesspasses--gossip-port;--limit-ledger-sizedefaults to agave-validator's mainnetDEFAULT_MAX_LEDGER_SHREDS(200,000,000) — the test validator's 10k-shred default prunes the blockstore to a ~90s window, which broke the underwriter's SwapDeposit source-deposit verify mid-flow.PersistedClusterConfigexported; test fixtures typed against it;requireOption→assertOptionper theassert*naming standard.scripts/run-flow.mjs+scripts/flow-heartbeat-monitor.mjs, one monitor instance per run) written through CLAUDE.md, README (new "Monitoring a live flow run" section), and the flow READMEs; staleWIRE_CHAIN_DIR/WIRE_BUILD_DIRrows corrected; soak default corrected to 30 min.Merge order
Requires the wire-sysio companion (
--solana-outpost-program-name): merge Wire-Network/wire-sysio#517 (chained onto Wire-Network/wire-sysio#511) before or with this PR — an updated harness against an older nodeop fails withUnknown option.Companions
Wire-Network/wire-sysioPR #517 (plugin option + required token custody; chained onto #511)Wire-Network/wire-solanaPR #374 (cleanroom parity port; held for the e2e gate, then rebase-merged)Validation
fix/solana-opp-integrationin wire-sysio/wire-tools-ts/wire-solana (FLOW_MAX_CONCURRENCY=4)🤖 Generated with Claude Code