Test results

Four layers are tested: the Robinhood Chain contracts on a fork of the real chain, the Solana transactions by simulation on live mainnet state, the engine and the keeper's logic in node, and the whole launch pipeline in dry run.

Robinhood Chain contracts on a mainnet fork

11 tests, all passing, against the real Pons V2 contracts. Run forge test in contracts/.

TestWhat it proves
Keeper launches and wires the vaultOne call launches the coin on Pons, creates the vault, funds it, and the coin opens at 1.68 ETH of virtual quote
Only the keeper launches, inputs are checkedFee above 10 %, share above 100 %, a deposit below the Pons fee, a caller that is not the keeper: all revert
Keeper buy matches the curve mathsThe tokens received match the constant-product formula within 0.3 %
Keeper sell returns ETH and cashHalf the tokens return a bit over half the ETH, as a convex curve should, and the proceeds are added to the vault's cash
Keeper cannot spend more than the cashA buy above the maker cash reverts
Only the keeper can tradebuy, sell, sweep and retire revert for anyone else
Sweep only goes to the poolETH and tokens reach the pool address and nowhere else
Fees split between creator and poolAfter 2 ETH of trades at a 3 % creator fee and a 50 % payout share: 0.037 ETH to the creator's address, 0.037 ETH to the pool
Without a creator address all fees go to the poolThe pool receives all of it
Retire after graduationCannot retire early, retire after a 5 ETH buy sends the cash and inventory to the pool, buy then reverts
Initialize twiceReverts, only the launcher can initialize a vault

Keeper path on a fork

node keeper/test-rh-fork.mjs runs the keeper's own Robinhood code against an anvil fork:

Solana transactions on live state

node keeper/check-solana.mjs reads a live pump.fun curve and simulates, with signatures disabled and nothing sent:

All four simulate without error. The script also checks that the curve is a constant product on the initial invariant and that the supply is one billion.

The whole pipeline in dry run

node keeper/launch.mjs keeper/sample-launch.json against an anvil fork and live Solana state: the Pons launch is simulated by the real launcher, the pump.fun creation is simulated on mainnet, the alignment is computed (4.79 SOL on pump.fun), the fee sharing is planned and the coin is registered, in the order Pons, pump.fun, alignment, fee sharing, register.

Engine, keeper and pipeline in node

38 tests, all passing. Run npm test.

Engine (14):

Keeper logic (6): plans become raw transaction arguments with slippage on the right side, the alignment is a pump.fun buy of a few SOL.

Operations (18):

What the tests do not cover