# Checkpoint 2026-04-03 This checkpoint captures the latest live state of the local instant-swap E2E bring-up. ## What Is Working - Clean end-to-end bootstrap through `./local-e2e-up.sh` after resetting local state. - `wire-nodeop` comes up cleanly and the Wire batch operator services stay running. - Real `Eth -> Wire` delivery is working through the live ETH batch operator. - The Wire depot emits a real outbound `Wire -> Sol` epoch for the instaswap settlement. - Solana `ingest_epoch` succeeds for that outbound epoch on the fresh chain. ## Current Blocker The Solana batch operator fails on `process_messages` for the first live `instaswap_settlement` message. Observed error: ```text Transaction simulation failed: Error processing Instruction 1: custom program error: 0xbc4 ``` `0xbc4` is decimal `3012`, which maps to Anchor `AccountNotInitialized`. ## Current Diagnosis The transport path is not the blocker anymore. What we proved on the fresh cluster: - ETH emits `OPPMessage` / `OPPEpoch` - ETH batch operator ingests that epoch into Wire - Wire depot creates the `xswap` - Wire depot emits outbound Solana epoch `0` - Solana `ingest_epoch` accepts that epoch The remaining failure is inside Solana settlement execution for `handle_instaswap_settlement()` in: - `capital-staking/programs/liqsol-core/src/instructions/opp/yield_hub.rs` The most likely issue is one missing or wrongly-derived account in the batch-operator `process_messages` remaining account list, or one account that the live deploy path did not initialize even though the test harness does. Primary suspects: - `extra_account_meta_list` - `distribution_state` - `bridge_vault_ata` - `bucket_token_account` - `liqsol_mint` ## Reproduction Fresh bring-up: ```bash ./local-compose.sh down -v rm -rf .local/wire-node .local/wire-batch-operators .local/e2e ./local-e2e-up.sh ``` Trigger the live ETH instaswap: ```bash ./local-compose.sh exec -T hardhat bash -lc \ 'cd /workspace/wire-ethereum && \ HH_SCRIPT_ARGS="instaswap 5.0000 1.0000 B3bVKtqAJxRp4RUbzmUXVUdF4CRtaHfjnNfKzCd9Fy7T" \ npx hardhat run src/scripts/outpost/wire_yield_hub_live.ts --network anvil_local' ``` Inspect the Solana batch operator log: ```bash tail -n 120 .local/wire-batch-operators/sol/1/log/relay.log ``` Expected current failure: ```text Submitting solana process_messages for epoch 0 with 1 message(s) and 15 remaining account(s) batch operator pass failed: -32002 ... custom program error: 0xbc4 ``` ## Useful Live Checks Wire chain health: ```bash ./local-compose.sh exec -T wire-nodeop clio -u http://127.0.0.1:8887 get info ``` Wire ETH depot inbound epochs: ```bash ./local-compose.sh exec -T wire-nodeop \ clio -u http://127.0.0.1:8887 get table sysio.dpeth ............2 oppepochin --limit 20 ``` Wire xswap rows: ```bash ./local-compose.sh exec -T wire-nodeop \ clio -u http://127.0.0.1:8887 get table sysio.iswap sysio.iswap xswaps --limit 20 ``` Wire Sol outbound epochs: ```bash ./local-compose.sh exec -T wire-nodeop \ clio -u http://127.0.0.1:8887 get table sysio.dpsol ............3 oppepochout --limit 20 ``` ## Suggested Next Step Reproduce the failing Solana `process_messages` call with the same 15 remaining accounts in a TypeScript helper or test so the full simulation logs identify the exact uninitialized account. Once that account is known, patch either: - the local Solana deploy/bootstrap path, or - the batch operator account derivation / account ordering.