Wick Crypto Engine
arrow_back Back to Bot Fleet Bot Detail · Prototype

Bot Titles

PLS-AGG-ARB-V5
compare_arrows
PLS-AGG-ARB-V7 PLS STOPPED · STOPPED_UNKNOWN
Cross-Aggregator Arbitrage · Multi-Aggregator
contract 0xCF74...673C
24h gas burn0
24h CB halts0
Cross-aggregator arbitrage on PulseChain. Polls five aggregators — 9X, Piteas, Switch.win, EmpSeal and SquirrelSwap — for the same pair and fires a single atomic, inventory-funded tx (no flash-loan fee) the moment a buy-on-one / sell-on-another spread clears gas + fees. Executes through the PulseDirectArbV7 contract (0xCF748Ba7…), which patches the sell amount to the exact tokens received and forwards any native sell-leg protocol fee. Every trade gated by an AI token classifier; probation cap of 50K WPLS on fresh tokens. White/black lists at /bots/PLStokens.

Performance So Far

PLS-AGG-ARB-V5
Execution Funnel · last 24hdetect → validate → fire → land → profit
updown (14)external/static·upper-left = inputs · upper-right = outputs · hover for role
0
Signals
→
0
Sims
→
0
Broadcasts
→
0
Mined
→
0
Wins
Net P&L (USD)
+$5.89
Wins
702
Losses
92
Total Trades
794
Win Rate
88.4%
Gas Spent
1.0M WPLS
Contract Balance
3.4M WPLS
+ AtomicArb 150K WPLS (V2V3 + direct-pair)
cross-agg arb executor (contract: PulseDirectArbV7)

Future Performance Expectations · 7d / 30d / 90d

PLS-AGG-ARB-V5
Baseline · 2026-05-21
Lifetime champion of the fleet — the only consistently-earning bot, ~97-99% landed win-rate, not bleeding. All 5 aggregators (9X, Piteas, Switch, EmpSeal, Squirrel) fire live via the PulseDirectArbV7 executor (0xCF748Ba7…, ~2.6M WPLS). Cents/day in USD: it is WPLS-denominated (~$7.6e-6) on shallow pools, so it is at its market ceiling — profit is capped by opportunity supply, not code. Daily net has fallen with that supply (~30-80K WPLS/day mid-June → ~5-16K now); per-win edge is flat (~1,800-2,700 WPLS). Recent Jun30→Jul5 win slide (15→1) was mostly a capture outage (9mm moved the 9X API, fixed V7.5); watching 24-48h for win-count recovery. Remaining on-bot drags are capture-rate only: ~20s tx-land latency + contested-race land-rate. Real upside is off-bot (x402 USD) or structural (validator-direct inclusion, parked). Governed by BOT_DIRECTION_REVIEW.md kill-metric ($1/day×7d, else maintenance).
WindowNet USDFiresTier / stateShape · what has to happen
7d$0.70 – $1.4025–45Hold 50K-100K notionalLATENCY step-1 (FIRE_REUSE_CALLDATA, live 2026-07-02) measured in l4-timing — expect ranking→sim ~10s→~0, total ~39s→~29s, and more gasblock candidates converting to fires as spreads are hit fresher. V4_ERR histogram fills to 200+ samples → top-2 revert categories → auto-blacklist drops revert rate ~5%→<2%.
30d$12 – $25120–200Ladder to 200K if drift stays cleanNotional ladder test 50K → 100K → 200K complete. Per-route sim-discount retune on 60+ post-V6 fires. If 9x median sim→actual drift settles within ±15% (today: -22.2%), strategy is durable at 4× current size. Mid-tier diagnostics: identify ONE secondary winning route to diversify off piteas-only concentration.
90d$90 – $270450–750200K-500K sustainedTwo distinct winning sub-paths characterized. Sentinel/private-relay integration on the table (would unlock 1M+ notional). Real growth lever is moving from "we filter aggregators well" to "we participate in mempool consensus" — turns the bot from price-taker to price-maker on its specific routes.
Kill condition
Standard-path fire count drops below 30 in any 30-day window OR revert rate climbs above 10% after auto-blacklist ships. Either means the edge is decaying, not infrastructure failing.
Scaling behavior
Linear in notional up to ~200K (proven). Sub-linear above as pool-depth interactions kick in. Capital ceiling: ~500K-1M before sentinel integration unlocks larger sizes.
Ranges are expectation, not commitment. Lower bound: code stays as-is + market delivers its average. Upper bound: full sprint moves shipped + favorable market state. Decommission deadline 2026-06-04 is binary — kill conditions above are the threshold.

Recent Fire Attempts

PLS-AGG-ARB-V5
Token
HEXDC
Size
500K
Txn Type
crossArb
Sim Profit
+1,111 WPLS
Timestamp
13:11:18 UTC+8
Status
WIN
Gas Price
491K
Token
HEX
Size
500K
Txn Type
crossArb
Sim Profit
+2,692 WPLS
Timestamp
13:04:04 UTC+8
Status
WIN
Gas Price
688K
Token
HEX
Size
750K
Txn Type
crossArb
Sim Profit
+2,377 WPLS
Timestamp
12:22:38 UTC+8
Status
REVERTED
Gas Price
526K
Token
HEX
Size
750K
Txn Type
crossArb
Sim Profit
+2,052 WPLS
Timestamp
12:00:53 UTC+8
Status
WIN
Gas Price
531K
Token
HEX
Size
500K
Txn Type
crossArb
Sim Profit
+2,410 WPLS
Timestamp
11:59:09 UTC+8
Status
WIN
Gas Price
541K
Token
PRVX
Size
300K
Txn Type
crossArb
Sim Profit
+3,278 WPLS
Timestamp
04:20:47 UTC+8
Status
WIN
Gas Price
609K
Token
DAI
Size
500K
Txn Type
crossArb
Sim Profit
+945 WPLS
Timestamp
03:32:07 UTC+8
Status
WIN
Gas Price
618K
Last 7 TX_SEND events (newest left). Outcome stitched from log within ~80-line window after broadcast. Empty boxes = no recent fire to show.

Per-Size Breakdown

PLS-AGG-ARB-V5
SizeTradesWinsLossesWin RateNet (WPLS)Avg NetGas Spent
750K WPLS48272156%+37,875+78965,568
500K WPLS1751591691%+349,810+1,999255,835
300K WPLS1731512287%+326,277+1,886241,802
200K WPLS1421281490%+197,780+1,393192,813
150K WPLS550100%+0+010,094
100K WPLS113106794%+146,450+1,296143,540
75K WPLS54180%+0+06,450
50K WPLS127122596%+148,571+1,170121,308
Lifetime breakdown by trade amount. Sourced from logs/pulse-arb-combined-trades.ndjson. Reverts that never made it to the trade log (broadcast then dropped, gas-cap bails) are NOT counted here.

Token Reverters (24h)

PLS-AGG-ARB-V5
No on-chain reverts in last 24h.
White / black lists are located at /bots/PLStokens.

Biggest Block

PLS-AGG-ARB-V5

The biggest block is the MARKET, not the code — profit is capped by opportunity supply. P&L is driven by WIN COUNT, and win count is exogenous: it's set by how many real arb gaps appear on-chain × how many we out-race, neither of which our code controls. Per-win edge is intact and flat (~1,800-2,700 WPLS all period); daily net tracks supply (~30-80K WPLS/day mid-June → ~5-16K now). Everything is WPLS-denominated (~$7.6e-6) on shallow pools where a 750K trade already drains real depth, so the honest ceiling is cents/day. No amount of bot-level tuning escapes that base-token ceiling.

The actionable on-bot sub-constraint is CAPTURE — land-rate + latency. We fire a median ~20-39s (2-4 blocks) after detecting a spread and lose most contested races to a faster incumbent, so we mostly collect decayed remnants and burn gas on races we can't win. Tightening the pre-broadcast race-skip (using the sentinel competitor feed we already ingest) and shaving the detect→fire tail are the only levers that lift how many of the existing gaps we actually convert — but they're capture-rate hygiene on a low ceiling, not a new earner.

What's already solved (context, not open work): aggregator breadth — all 5 sources (9X/Piteas/Switch/EmpSeal/Squirrel) fire live since the PulseDirectArbV7 cutover (2026-06-23, 0xCF748Ba7…, forwards the sell-leg native fee); the engine is healthy at ~97-99% landed win-rate with atomic/principal-protected reverts (gas-only). The recent Jun30→Jul5 win slide was a capture outage (9mm moved the 9X API), fixed in V7.5.

The only real growth lever is OFF this bot: USD-denominated income via the x402 API (onchain.wick.pics safety/MEV/data engines), which sidesteps the WPLS ceiling entirely.

Fantasy

PLS-AGG-ARB-V5
If we had some way to...

Half-real already: the sentinel INBOUND feed works; the OUTBOUND edge does not yet. The inbound half is live (V6.1/6.2): pulse-mempool-layer.js resolves the sentinel hash stream via rpc.pulsechain.box, and the bot uses it — dynamic GAS_CAP_FRAC 1.30→3.30 with simNet, sentinel-aware competitor outbid (+5% above competitor gp), and the COMP_RACE_OUTBID/SKIP flip. So we are no longer a pure public-mempool price-taker on gas. But the outbound dual-broadcast is currently OFF — USE_SENTINEL_SUBMIT was flipped on 2026-07-05 and its watchdog auto-reverted it the same day (a same-nonce collision made both paths fail). The real fantasy remains orderflow exclusivity: our txs reaching validators directly, top-of-block, bypassing the public gas auction — which would turn the frequent lost races into lands. PulseChain has no Flashbots-equivalent relay market yet, so there is no clean API to buy this today; the honest path is (1) fix the dual-broadcast nonce collision to reclaim the ~50-200ms devp2p edge, then (2) a validator/pre-conf relationship if a PulseChain relay market ever emerges or capital justifies a colocated pre-warmed node like the incumbents run.

Suggestions for Improvement

PLS-AGG-ARB-V5
  • 01
    CRITICAL
    ★ FLAG-GATED BUILD BOARD (2026-07-06; states updated 2026-07-07 V7.12 — each turns on independently): ① BACKRUN_PENDING_FIRE — DARK, STAYING DARK: first scorer run 07-07 = GO gate NOT met (2/20 scorable rows, 0% win, simulated net −291 WPLS; the one scored would-fire overshot prediction +4851 → actual −1529). V7.12 widens scorable accrual (was ~1.5/day, gate ~13d out): scorer whale_reverted split, BACKRUN_SKIP_SYMBOLS=pTGC (3/3 SwapFailed_asm — fee-on-transfer, can never fire), dark-only BACKRUN_PENDING_MAX_GP_K 2000→50000 K-gwei (captures the 38-47M-gwei USDT whale cluster; MUST be re-lowered toward 2000 before any live flip — warning comment in .env). GO = `node scripts/score-backrun-dark.js` at ≥20 scorable rows, ≥60% win, net>0. ② GAS_CHECK_CALIB — INERT at 1.0, HELD in V7.12 per plan; enable via bot-overrides.json combined.GAS_CHECK_CALIB (hot-reload, 0.70-1.0); recommended 0.90 AFTER V7.9 landed-loss rate proves flat ~1 week (~Jul 13). ③ USE_SENTINEL_SUBMIT — ✅ LIVE since 2026-07-06 16:01Z; 15.7h review 07-07: 40/60 submits via=sentinel med 7ms vs 353ms RPC, ALL four watchdog trip classes at zero, 6 DUAL_NONCE_CLASS all benign, peers 70-76 vs floor 30 — recommend close PASSED at the 07-08 review (Chef-gated); watchdog cron stays armed permanently either way. V7.12 [E] stacked on top: dual-loser nonce answers are now mined-signals ([DUAL_LOSER_NONCE]) that stop the bump ladder + trigger a receipt sweep ([TX_RECOVERED] — 3 recoveries in the first 9 min after the 08:27Z respawn). ④ ATOMIC TOP-UP — HOLD by its own gates: 0/5 wins, ZERO atomic-path executions since the 150K refund (balance verified on-chain intact at exactly 150K WPLS); new [DIRECT_HB] heartbeat (V7.12) proves direct-pair is RUNNING-but-idle (5m beats calls=2-5, all no_cand), feeding an honest ~07-09 no-edge-at-current-sizes verdict. `node scripts/atomic-topup.js` = verdict; live run needs ATOMIC_TOPUP_LIVE=1 AND --live. ⑤ x402 USD API — NOT BUILT (no repo exists; separate product: API + payment rails + deploy — the only lever that escapes the WPLS base-token ceiling). Enable order when ready: ① → ② → (③ done) → ④, ONE at a time for clean attribution. Multicall3 cold-start (old item) was found already shipped 2026-07-02.
  • 02
    HIGH
    LATENCY — V7.9 ALT_PRELAUNCH MEASURED (through 07-07 08:00Z, n=6 fired piteas rows, all 6 wins): detect→fire med 34.6s → 25.4s (−27%) — real gain but SHORT of the 20-22s target, and the rank stage did NOT collapse (t3→t4 med 12.0 → 11.1s vs the ≤6s hope). Stage math attributes the residual ~9-11s to Piteas server latency itself (health RTT 5.5-8s, piBuy 13-20s) — no prelaunch scheduling removes it; the Piteas SDK option from dev-intel is the only path past it (Chef-gated). V7.12: the miscalibrated tripwire (fired "NOT confirmed" 07-06 23:30Z at n=3 against the ≤6s rank bar) re-armed with the honest bar — detect→fire med ≤26s on n≥10 FIRED piteas rows (6/10 at re-arm) — and the prelaunch path finally logs itself: [PI_PRELAUNCH] launch-offset + duration lines live since the 08:27Z respawn (first beats: offsets ~2-4s, durations 0.3-5.7s). Do NOT touch SELL_QUOTE_DEADLINE_MS — no longer the binding constraint once piBuy overlaps it.
  • 03
    HIGH
    REVIVED PATHS — WATCH WINDOW (opened 2026-07-06 15:09Z with the 150K WPLS refund; first verdicts 07-07, V7.12 instrumentation now closes the idle-vs-broken ambiguity): ① direct-pair V2↔V2 — ZERO fires, but the new [DIRECT_HB] 5-minute heartbeat proves the path is RUNNING-but-idle (first beats calls=2-5, all no_cand), not dead — feeds the ~07-09 atomic decision honestly; ② V2V3 probes — pure churn pre-V7.12 (364/366 callStatic fails; WAIT/EVDR/FIRE = 65% of them with impossible 85-191% spreads) → V2V3_SKIP_SYMBOLS=WAIT,EVDR,FIRE shipped, [V2V3_SIM_FAIL] ~22/h → ~0 since the 08:27Z respawn; ③ backrun DARK — raw accrual healthy (16 rows/16.1h) but only ~1.5 scorable/day; first scorer verdict NO-GO (see Build Board ①). AtomicArb balance verified on-chain: exactly 150K WPLS, 0 spent. If direct-pair + V2V3 + backrun all still show zero evidence by ~07-09, the honest verdict is "no edge at current sizes" — write it down and sweep the 150K back.
  • 04
    HIGH
    OFF-BOT USD income (x402) — NOT STARTED; the only lever that escapes the WPLS base-token ceiling. No code exists yet (the planning docs are ~/projects/AGENT_X402_MONETIZATION_PLAYBOOK.md + X402_PRICING_ANALYSIS.md). v0.1 scope per the playbook: wrap the already-running burned-LP DB + rug/honeypot moats as a paid HTTP API (free tier + $0.01-1.00/call), add the x402 middleware (USDC on Base, HTTP 402 flow), publish the 3 discovery files (/.well-known/x402.json, openapi.json, llms.txt), register on x402scan + 402index. Agent-buildable end to end EXCEPT the human items: a Base receiving wallet, Coinbase CDP account (or self-hosted settlement + gas), and the price call. Separate product build — own service + subdomain, not a bot flag.

Conclusion

PLS-AGG-ARB-V5

Healthy and safe, but at its market ceiling — the constraint is the pond, not the code.

State (2026-07-06): ~97-99% landed win-rate on what it fires; not bleeding (revert gas stays gas-only, phantom spreads correctly rejected); all 5 aggregators firing. Nothing is broken.

Why profit isn't rising despite the fixes: P&L is driven by WIN COUNT, and win count is exogenous — it's set by how many real gaps appear on-chain × how many we out-race, not by our code. Per-win edge is intact and flat (~1,800-2,700 WPLS/win all period). Daily net has fallen with opportunity supply: ~30-80K WPLS/day mid-June → ~5-16K/day now. Our improvements (V7.5/7.6/7.7) cut COST and restore CAPTURE — they don't manufacture gaps.

Recent slide root-caused + fixed: the Jun 30→Jul 5 win drop (15→1) was mostly a capture-rate outage — 9mm silently moved the 9X quote API (V7.5 fix), starving ~70% of winning routes for ~3 days. Watching 24-48h: if wins climb back toward ~15/day the outage was the driver; if they stay 4-6 the pond genuinely shrank.

Scale honesty: cents/day in USD — everything is WPLS-denominated (~$7.6e-6) on shallow pools where a 750K trade already drains real depth. The only needle-movers left are OFF this bot (x402 USD income) or structural (validator-direct inclusion, parked until a PulseChain relay market exists). Governed by BOT_DIRECTION_REVIEW.md kill-metric ($1/day×7d, else maintenance).

Remaining on-bot drags: ~20s median tx-land latency (2 blocks late) and land-rate on contested races. Both are capture-rate levers on a low ceiling — hygiene, not a new earner.

What it does, in one sentence: it constantly compares PulseChain token prices across five route-finders (9X, Piteas, Switch.win, EmpSeal and SquirrelSwap), and when the same token is cheaper on one route than the other, it buys low and sells high in a single all-or-nothing transaction — if the profit vanishes mid-trade, the transaction cancels itself, so the main pot is never at risk and a failed attempt only costs a small gas fee.

How it's doing (updated 2026-07-05): the trades it does land are still ~97% winners, but the daily count collapsed — 15 net wins Jun 30 → 9 → 5 → 6 → 4 → 1 (Jul 5), and the route mix tells the real story: piteas→9x, the pair behind ~70% of all wins, produced ZERO wins after Jul 2. The 07-04 Piteas + nonce fixes were real but insufficient — the dominant cause turned out to be 9X's quote API silently moving house (old URL 404s on everything since ~Jul 2-3; see the 2026-07-05 verdict above). That's fixed as of tonight: the bot quotes 9X on its new path again, verified byte-compatible end-to-end, and the boot self-test guards the calldata layout. The recovery bar is simple and pre-registered: piteas→9x / 9x→* wins reappearing in the ledger within 24-48h and the daily count climbing back toward the 9-15 band. It never lost money during the outage — a dead quote source just means fewer fires (reverts still cost only gas; the latest sessions kept rejecting phantom spreads correctly). The other two drags stand: ~20s median tx-land latency (~2 blocks), and residual [PI_NULL] aborts on tokens with no on-chain V1/V2 sell pair (HEXDC-class) where the OC_SELL_PRIMARY fallback can't quote either.

The honest limitation: profit is real but tiny — roughly $0.10 to $0.80 a day, and lately at the low end of that. Three things cap it: the trading pot is only ~$165 of WPLS; the bot is slow to pull the trigger (~20–39 seconds from spotting a price gap to landing the trade, by which time faster bots have often taken it); and (surfaced 2026-07-03) its sell-price check keeps returning empty — 432 "no sell data" aborts in one session — so it repeatedly lines up a good buy then cancels at the sell step. The first speed fixes went live 2026-07-02 (cutting a redundant ~10-second re-quote and reusing quotes), but the single highest-value fix is still open: quote the sell leg on-chain instead of over HTTP, which kills the slow ~14s sell stage AND the empty-quote aborts at once. More capital moves the pot ceiling; faster + more-reliable sell quoting moves how many gaps we actually catch.

One accepted risk: the whole pot sits behind a single private key. We've deliberately chosen not to add multisig protection until the amount of money justifies the hassle — that's a standing decision, not an oversight.

Bottom line: this is a finished machine that quietly earns pocket change with very little supervision. The way to make real money is NOT more work on this bot — it's the paid data/API products (selling our safety checks and trading signals to other AI agents for dollars). Leave the experimental trade modes (2-step, V2V3, bypass) switched off; they never won and only chase traps.

Active Tests & Monitors

PLS-AGG-ARB-V5
Test / MonitorStartedKey MetricDecision Criteria
ALT_PRELAUNCH latency verify (V7.9) — ⚠ SUPERSEDED 2026-07-072026-07-06(old bar) rank stage (t3→t4) med ≤6s on piteas-route l4-timing rows post-14:54ZSUPERSEDED by the V7.12 re-armed watch below. The cron fired "NOT confirmed" 07-06 23:30Z at n=3 — correctly, but against a bar that measured Piteas server latency (piBuy runs 13-20s regardless of when it starts), not the prelaunch mechanism. Measured through 07-07 08:00Z (n=6 fired): detect→fire med 34.6s → 25.4s (−27%), rank med only 12.0 → 11.1s. Verdict: mechanism works, gain is real, target 20-22s is capped by Piteas response time.
V7.9 gate-recalibration soak (headroom 1.0 + discounts 0.92/0.55/0.55)2026-07-06fires/day vs the 4-6 baseline; WR ≥95%; landed-loss rate vs the 3-per-14d baseline; ledgered revert rate vs ~22% of firesWindow to ~2026-07-13. The widened gates should convert part of the 539 gasblock-kills/14d into thin wins — success = MORE fires at flat landed-loss + revert rates. If landed losses climb, roll back per-lever (headroom 1.1, discounts 0.85/0.42/0.20 — each documented at its change site). PASS additionally unlocks the next step: GAS_CHECK_CALIB=0.90 via bot-overrides. ⚠ V7.12 (07-07): the 07-13 judge MUST merge the sidecar corrections ledger (logs/pulse-arb-combined-trades-corrections.ndjson, 6 receipt-verified ghost rows) — corrected 16.9h truth is 17 mined = 13W/2L/2R, WR 76.5%, ~+15.5K WPLS, NOT the main ledger's 11W/1L; the ledger is trustworthy going forward only while the 6-hourly chain-reconcile cron keeps reporting new=0 (see the ledger-truth row below).
Backrun pending-state DARK accrual (V7.10)2026-07-06rows in logs/backrun-pending-dark.ndjson (would-fires + guard-skips); expected ~10-20/dayAt ≥20 scorable rows (~07-08/09) run scripts/score-backrun-dark.js — it replays every would-fire at the whale's mined block and prints the gate (≥60% win-rate, simulated net>0). GO → Chef flips BACKRUN_PENDING_FIRE=1. Zero rows also carries information: no whale created a profitable post-whale arb at our probe sizes. ⚠ 07-07 first scorer run: NO-GO — 2/20 scorable rows, 0% win, simulated net −291 WPLS; 11/16 raw rows were unscorable whale_gp_above_cap skips and the one scored would-fire overshot prediction +4851 → actual −1529 (isCompetitor row). V7.12 widens scorable accrual (see the scorability-push row below); predGross calibration is the real open question.
Sentinel dual-submit live watch (V7.11)2026-07-06 16:01Z[SENTINEL_TX] via=sentinel share + submit-ms (was 5-8ms vs 325-540ms RPC when sentinel won on 07-05); [DUAL_NONCE_CLASS] handling bump-races; zero [DUAL_SUBMIT_FAIL]Self-guarding: the watchdog (cron */5) auto-reverts the flag + restarts the bot + TG-pages Chef on DUAL_SUBMIT_FAIL×2 / receipt-timeouts / nonce clusters / peers<30. Review at ~07-08: if no trips and sentinel wins a material share of submits, keep permanently; the nonce-class fix (V7.11) should have eliminated the 07-05 false-trip class entirely. ✅ 07-07 15.7h data: ALL four trip classes at zero, 40/60 submits via=sentinel med 7ms vs 353ms RPC, sentinel never lost on latency (its 20 losses were own-pool rejects covered by the RPC leg), 6 DUAL_NONCE_CLASS all benign, peers 70-76. Recommend close PASSED at 07-08 (Chef-gated); keep flag=1 + watchdog cron permanently. Remaining upside: the ~33% sentinel pool-reject rate.
Revived AtomicArb paths (V7.9b — 150K refund)2026-07-06 15:09Zfirst [DIRECT_WIN]/[DIRECT_REVERT] + [V2V3_*] outcomes; [BACKRUN_SIM] error mix shifting from SwapFailed_asm(0x3f9a44e0) to InsufficientProfit/OK; scripts/atomic-topup.js gate statusThe contract sat at 0 WPLS for weeks (every sim reverted at hop-1) — now funded, three paths are live again. If direct-pair/V2V3 print wins, the top-up stager gates capital 150K→300K→600K (≥5 wins, 0 landed losses, revert ≤30%, net>0). If zero evidence by ~07-09, the honest verdict is "no edge at current sizes" — write it down and sweep the 150K back. 07-07: still ZERO atomic-path executions; balance verified on-chain intact at exactly 150K WPLS. V7.12 [DIRECT_HB] settles idle-vs-broken: heartbeats show calls=2-5/5m all no_cand ⇒ direct-pair is running-but-idle, not dead; V2V3 churn silenced via skip list (rows below).
Ledger-truth: receipt sweep + chain reconcile (V7.12 A/D/E)2026-07-07 08:27Z[TX_RECOVERED] + [DUAL_LOSER_NONCE] lines in pulse-arb-combined.log (3 recoveries in the first 9 min post-respawn: n4656 PRVX, n4657 HEXDC, n4659 WAIT — the pre-V7.12 version of n4656's pattern was a 50s blind ladder + TX_DROP); new-ghost count from scripts/ledger-chain-reconcile.js (cron 17 */6, logs/ledger-reconcile.log); sidecar logs/pulse-arb-combined-trades-corrections.ndjson (6 receipt-verified backfilled rows)The ~20%-of-fires ledger blind spot (sendAndBump nonce-consumed path misclassified our own mined txs as external) counts as CLOSED if the reconcile cron holds new=0 through 07-13. Baseline run already classified 9 historical pre-V7.8-era ghosts (nonces 4456-4606) — baselined, not backfilled. The 07-13 soak judge must merge the sidecar. Rollback: restore the two .bak-v712-20260707 files, remove the cron line, delete the sidecar, one respawn.
ALT_PRELAUNCH re-verify — recalibrated tripwire (V7.12 C)2026-07-07detect→fire (t0→t6) med on FIRED piteas-route rows vs the ≤26s bar; needs n≥10 (6/10 at re-arm, med 25.4s on the 6); [PI_PRELAUNCH] launch-offset + duration lines now instrument the path directly (live since 08:27Z — first beats: offsets ~2-4s after sell-stage entry, durations 0.3-5.7s)The re-armed cron (scripts/verify-alt-prelaunch.js, */30, state file rm'd) TG-pages the verdict at n≥10. PASS ⇒ close the V7.9 latency lever as delivered (−27% and holding). FAIL ⇒ the residual is Piteas server latency (health RTT 5.5-8s), not scheduling — escalate the Piteas SDK evaluation (Chef-gated) instead of touching prelaunch further.
Backrun dark scorability push (V7.12 B/H/J)2026-07-07scorable would-fire accrual rate in backrun-pending-dark.ndjson (was ~1.5/day ⇒ 20-row gate ~13d out): pTGC skipped (BACKRUN_SKIP_SYMBOLS — 3/3 SwapFailed_asm, wasted rows), whale-gp cap raised 2000K→50000K gwei DARK-ONLY (11/16 rows were unscorable gp-cap skips; 50000 captures the 38-47M-gwei USDT cluster), scorer now splits whale_reverted (USDC row reclassified; net −291 unchanged)Re-run scripts/score-backrun-dark.js at ≥20 scorable rows. Watch predGross calibration on every new scored row — the model overshot +4851 → −1529 on row #1. HARD RULE (mirrored as a warning comment in .env): re-lower BACKRUN_PENDING_MAX_GP_K toward 2000 BEFORE any BACKRUN_PENDING_FIRE=1 flip — at 2000K the cap bounds a live revert to ~500 WPLS gas, at 50000K it does not.
V2V3 phantom-trio skip (V7.12 I)2026-07-07 08:27Z[V2V3_SIM_FAIL] rate: was ~22/h (WAIT/EVDR/FIRE drove 65% of 364 callStatic fails with impossible 85-191% spreads — gross up to 1.43M PLS on 750K notional); 1 in the first ~20 min post-respawnKeep while fail churn stays ~0 and no real V2V3 candidate is being missed. Remove a symbol from V2V3_SKIP_SYMBOLS only if its pool revives with a sane spread. Pure .env rollback.
Sim-phantom bench key restored to addr_route_amt (V7.12 F2)2026-07-07 08:27Zfalse-bench class: a (token,size) benched on ONE route blocking the SAME size on another — pre-fix evidence: HEXDC 500K benched on piteas→9x at 12:49Z, then WON +777 nine minutes after bench expiry; benched-entry count in logs/sim-phantom-bench.json (pre-V7.12 state parked at .bak-v712)HEXDC piteas→9x eligible again immediately. Judge: no repeat of the route-blind over-block and the bench population stays plausible (phantom UNITY-hop class only). Follow-up F1 still open: capture calldata at the next live 0x61e5a732 V4_ERR (4 offline capture attempts found no c70cf2 in current 9mm quotes) and add the phantom hop to BROKEN_POOL_TOKENS.

Compromises

PLS-AGG-ARB-V5
DecisionAggressive ←Current Position→ ConservativeNotes
Profit gate (MIN_NET_WPLS = 100, live override)
Aggressive · many fires, more reverts
Conservative · few fires, high quality
Ladder: 200 (drought) → 50 (CB trips) → 100 (2026-05-13) → 75 → **100 (live since the 2026-05-29 L3 cycle — bot-overrides.json is the truth)**. Corrected 2026-06-10: this page previously claimed 75. The L-cycle owns this knob; read the override file before quoting it.
Gas-margin floor (MIN_NET_GAS_RATIO = 0.10, live override)
Thin margin · sim/live drift bleeds through
Fat margin · only obvious arbs
Corrected 2026-06-10: the live override (set by the 2026-05-29 L3 cycle) is **0.10**, not the 0.15 this page previously claimed. Compensated by MIN_NET_WPLS at 100 — the absolute floor does the gating; the ratio floor is the looser of the two.
2-step risk (DISABLED — kept off, validated 2026-06-05)
Trust 2-step routes
Filter 2-step ruthlessly
2-step exec path entirely disabled via [V4_2STEP_DISABLED] log + continue. VALIDATED 2026-06-05 — KEEP DISABLED: telemetry shows 0 wins / 24 attempts (10 reverts, 6 send-errors, never a win). The +46-65% "spreads" it would chase (fDAI etc.) are honeypot mirages atomic correctly cannot execute (no flash-loan route / the token blocks the atomic leg). Re-enabling would re-expose half-trade principal loss (buy fills, sell reverts → holding a worthless bag) for ZERO historical upside. Atomic-only preserves all-or-nothing — only gas burns on revert. Re-evaluate only if a non-honeypot, atomic-incapable route with a real edge ever appears.
2-step sim discount (DORMANT)
Trust sim
Heavily discount sim
Multiply 2-step simNet by 0.35 before threshold. DORMANT 2026-05-13 since 2-step exec path is disabled. Value preserved for future re-enable.
Builder bribe (BUILDER_BRIBE_BPS = 1500)
Keep all profit · low inclusion priority
Bribe heavy · land first
15% of profit to validator. Was 9000 (90%, never fired). PulseChain has limited private-relay competition so 15% works.
Gas priority (GAS_MULT 3 fallback · dynamic cap · sentinel outbid)
Cheap gas · save on each tx
Priority gas · win the race
Live fallback override is GAS_MULT 3 (2026-05-29 L3 cycle, per bot-overrides.json). The fallback rarely matters — primary is mempool p85 (DYNAMIC_GAS), layered with sentinel-aware competitor outbid (+5%, wider 3× base ceiling); sendAndBump bump-cap dynamic (GAS_CAP_FRAC 1.30 → 3.30 with simNet). ABSOLUTE_MAX_GAS_COST_WPLS=10,000 remains the hard ceiling. Gas aggressiveness is the CONTESTED-RACE lever — the land-rate suggestion tunes the race-skip/outbid off this same path.
Rate limit (MAX_TRADES_PER_HOUR = 10, live override)
Strict cap · bounded downside
Uncapped · maximum opportunity capture
Ladder: uncapped (3 CB trips in 24h on 05-13) → 10 → 20 → **back to 10 (live, 2026-05-29 L3 cycle)**. Corrected 2026-06-10: page previously claimed 20. At ~5 clean fires/day the cap is not binding either way.
Anti-honeypot (PHANTOM_DRAIN_DIV = 5)
Permissive · trust the token
Aggressive · suspect everything
Divide signal strength by 5 for tokens with phantom-drain markers. Middle-of-road.
Scan cadence (SCAN_INTERVAL_MS ≈ 3000)
Fast · compete on latency, burn RPC
Slow · save quota, lose races
Default ~3s between scans. Faster = better signal capture but RPC pressure builds.
Mempool stance (sentinel inbound ACTIVE · race-skip + race-outbid · dual outbound)
Public · max visibility, frontrun-able
Private relay · hidden until inclusion
Outbound: dual-broadcast (sentinel + public RPC via Promise.any, first-success-wins). 2026-05-25: sentinel inbound feed (ws://9876) activated end-to-end — pulse-mempool-layer resolves the hash-only stream via rpc.pulsechain.box (~7,500 resolutions/1.5h post-deploy, swaps 5–10× richer per 5min). 2026-05-26: the inbound data now drives BOTH a defensive [COMP_RACE_SKIP] (low-EV, adjNet <500 WPLS) AND an offensive [COMP_RACE_OUTBID] / [GAS_COMP_OUTBID] (high-EV: bid 5% above the competitor at a wider 3× base ceiling). 2026-06-10: race window widened 5s → 10s (COMP_RACE_WINDOW_MS, env-tunable) per the documented rule after the 0x2694f6cb squeeze — at 5s the skip/outbid never even registered the competitor. Position shifted 25 → 40 — no longer a pure public-mempool price-taker. Full private relay would shift further right.
Doctrine — D-GLOBAL-7 freeze
Auto-tune · L6 changes parameters silently
Human-gated · Board approves trade-logic
Windowed 2026-05-25: freeze triggers on 7d net < -100K (was lifetime < -350K, which kept a recovering bot frozen on its defended 05-13 honeypot losses). PLS-AGG stays comfortably ELIGIBLE — ~97-99% landed win-rate, net-positive, not bleeding. Parameter lifts remain L6/L7-reviewed (not auto-approved); the L3 cycle owns the runtime knobs via bot-overrides.json.
Capital sizing ladder (50K → 750K · 6 tiers)
Small · safe per-tx max loss
Big · larger absolute wins, bigger revert pain
TRADE_AMOUNTS = [750K, 500K, 300K, 200K, 100K, 50K]; each candidate is evaluated at every size and the best is picked, gated by v4W*0.95 against the V7 contract balance (~2.6M WPLS, all tiers funded). Per-size records run ~98-99% WR across tiers. RESOLVED 2026-07-06: the 07-02 "plateau above 200K" finding did not survive fresh data — 7d per-size shows 750K at 7W/1L +14.1K and 500K at 25W/1L +54K, capital is unconstrained (~9 fires/day vs 2.6M book), and the plateau gross figures were selection-biased (best-size-per-candidate). All 6 tiers KEPT; re-open only if 750K W:L degrades.
Fire-time quoting (FIRE_REUSE_CALLDATA=1 · reuse ranking calldata)
Re-quote for freshness · +10s, but staler at sim
Reuse ranking calldata · faster AND fresher
Shipped live 2026-07-02. The URG-002 re-quote (2026-05-19) refetched IDENTICAL quotes the ranking stage produced <1s earlier (~8-10s round-trip), so by sim time its calldata was ~10s STALER than reusing the ranking objects — a freshness patch that outlived its problem once ranking got fast. Now reuses bestBuy/bestSellQ directly; the estimateGas sim + checkOnChainSpread phantom guard still validate every fill pre-broadcast, and the contract patches the real token balance at sellOffset(agg), so nothing downstream changes. FIRE_REUSE_MAX_AGE_MS=4s auto-falls-back if ranking quotes are ever old. Unset the flag for a byte-identical rollback.

Parameters

PLS-AGG-ARB-V5
ParameterValueReasoningPotential Adjustment(s)
MIN_NET_WPLS100 WPLSMin atomic net after gas. Live value per bot-overrides.json (the L3 cycle owns this knob): 100, set 2026-05-29. Ladder history: 200 (drought) → 50 (CB trips) → 100. Corrected 2026-06-24: this row previously showed a stale 75.Owned by the L-cycle override file — read bot-overrides.json before quoting. Drop toward 50 for more fire volume on a clean window; raise if drift losses return.
MIN_NET_GAS_RATIO0.10simNet must exceed simGas × this ratio. Live value per bot-overrides.json: 0.10 (set 2026-05-29). The absolute MIN_NET_WPLS floor (100) is the binding gate; this ratio is the looser of the two. Corrected 2026-06-24: this row previously showed a stale 0.15.Owned by the L-cycle override file. Raise to 0.15-0.20 if gas-bleed returns.
MIN_NET_WPLS_2STEP2000 (DORMANT)Higher threshold for 2-step (riskier) trades. DORMANT 2026-05-13: 2-step exec path disabled in atomic-only mode, so this threshold is not currently consulted.Only relevant if 2-step is re-enabled. Audit before that decision.
PHANTOM_DRAIN_DIV5Discount factor for phantom-drain detection (anti-honeypot guard). 5 = divide signal strength by 5 for tokens with phantom drain markers.Lower to 3-4 for less aggressive filtering if real signals are getting binned. Raise to 8-10 for stricter anti-honeypot.
TWO_STEP_SIM_DISCOUNT0.35 (DORMANT)Sim-discount applied to 2-step adjNet. DORMANT 2026-05-13: 2-step disabled in atomic-only mode.Only relevant if 2-step is re-enabled — recalibrate from drift data first.
BUILDER_BRIBE_BPS1500V3 private execution path bribe — 15% of profit goes to builder. Lowered from 9000 (90%) on 2026-05-11. Only applies to V3-Private bot path, not the V5 public-mempool path.Increase to 2000-3000 if landing rate is poor on the V3 path. Decrease toward 1000 if landing rate is good.
SCAN_INTERVAL_MS~3000 (default)Interval between scan cycles. Faster = more signal capture, more RPC pressure.Drop to 1500-2000 if RPC quota allows and competition is heating up. Avoid sub-1000 without txpool_content wiring.
MAX_TRADES_PER_HOUR10Rate cap on submissions per hour. Live value per bot-overrides.json (L3 cycle owns it): 10, set 2026-05-29. Ladder: uncapped (CB cascade 05-13) → 10 → 20 → 10 (current). At ~5 clean fires/day the cap is not binding either way. Corrected 2026-07-06: this row previously showed a stale 20.Owned by the L-cycle override file — read bot-overrides.json before quoting. Raise only if a clean window sustains >10 fires/hr with reverts flat.
GAS_MULT3 (fallback only)Static multiplier on baseGasPrice. Live value per bot-overrides.json: 3 (set 2026-05-29). This is the FALLBACK only — getTargetGasPrice first tries mempool p85 (DYNAMIC_GAS) layered with sentinel-aware competitor outbid (+5% above a pending competitor gp, wider 3× base ceiling). GAS_MULT fires only when neither dynamic-gas nor a competitor signal is available. Corrected 2026-07-06: this row previously showed a stale 2.Owned by the L-cycle override file. The outbid + dynamic GAS_CAP_FRAC do most cost control; touch this only if both dynamic paths go stale.
GAS_CAP_FRACdynamic 1.30 → 3.30 (scales with simNet)Bump-war ceiling as a fraction of expected gross. 2026-05-26 SHIPPED dynamic scaling in sendAndBump: frac = 1.30 + clamp((simNet−500)/1000, 0, 2.0). Low-EV trades (simNet ≤500) stay at the conservative 1.30 baseline (set 05-18 after PRVX hit cap on bump #1); high-EV trades (simNet ≥2500, eHEX +2,164 / PLSX +816 class) scale up to 3.30 so they land instead of bailing at GAS_CAP. ABSOLUTE_MAX_GAS_COST_WPLS=10,000 remains the hard ceiling regardless. Per-fire [GAS_DYNAMIC] log line shows the computed cap.Tune the slope: widen the simNet window (currently 500→2500) if the per-fire log shows the curve too steep. Lower the 1.30 floor only if drift losses return; raise the 3.30 cap only after observing W:L holds at the wider end.
GAS_EST_HEADROOM1.00 (1.10→1.00, 2026-07-06 V7.9)Multiplier on the sim-stage gas estimate (adjGas = gasEst × targetGasPrice × headroom) used ONLY for the profitability check, not submission. 30d ledger (n=381): actualGas/adjGas p10=0.714 med=0.725 p90=0.942 — the 1.10 headroom sat on top of an already ~25% structural over-estimate, so the check was killing real winners (539 gasblock kills/14d at nets −127…−1,422, many ~+150 WPLS true-net at the margin). At 1.00 even the p90 fire stays covered. Hot-reload via bot-overrides.json (validator floor is 1.0 — going lower needs a code change).Revert to 1.1 if landed_loss rate climbs above the 3/14d baseline. If reverts/losses stay flat for 2 weeks, the next unlock is calibrating the price term (targetGasPrice vs landed) in code.
ROUTE_SIM_DISCOUNTpiteas→9x 0.92 · 9x→piteas 0.85 · 9x→9x 0.55 · switch→9x 0.55 (recalibrated 2026-07-06)Per-route sim-to-actual net discount applied before the fire gates. Recalibrated on 30d landed drift: piteas→9x med 1.364 p10 1.018 (n=262) → 0.85→0.92; 9x→9x med 1.182 (50W/1L) → 0.42→0.55 (the 0.42 was calibrated on May's −22% 9x drift, a dead regime); switch→9x 8W/0L p10 1.057 at the 0.20 soft-block → promoted to 0.55 per the block's own re-evaluate rule; 9x→piteas p10 0.870 → 0.85 HELD (already correct). Gross estimates are exact (med actualGross/simGross 1.000) — the drift was all gas-side.Rollback per-route (0.92→0.85, 0.55→0.42, 0.55→0.20) if that route's WR drops or landed-losses climb. Recalibrate quarterly — discounts calibrated on a dead quote-path regime silently tax the funnel.
ALT_PRELAUNCH1 (LIVE 2026-07-06 V7.9; instrumented V7.12)Latency: launches the Piteas BUY (piteas→9x buy leg — the route behind ~70% of wins; a ~13-20s HTTP call) the moment the 9x sell quote lands, instead of after the 11s sell-quote deadline + alt-stage entry. Same precondition the alt stage checks, so Piteas call volume is ~unchanged (matters: they 403-banned this IP once) — only the start moves ~11-13s earlier. MEASURED (07-07, n=6 fired, 6/6 wins): detect→fire med 34.6s → 25.4s (−27%) — short of the 20-22s target because rank t3→t4 only moved 12.0 → 11.1s: the residual ~9-11s is Piteas server latency (health RTT 5.5-8s), not scheduling.Unset in .env for a rollback to the sequential alt-stage fetch. V7.12 added [PI_PRELAUNCH] launch-offset + duration lines (live 08:27Z) and re-armed the verify tripwire at the honest bar: detect→fire med ≤26s on n≥10 fired piteas rows. Zero genuine Piteas 403s observed in either window. Past ~25s the next lever is the Piteas SDK (Chef-gated), not this flag.
GAS_CHECK_CALIB1.0 (INERT — built 2026-07-06 V7.11, not enabled)Sub-1.0 calibration on the gas PRICE term of the profitability check — the second gas-calibration step after GAS_EST_HEADROOM hit its 1.0 validator floor. Even at headroom 1.0 the check overstates real landed cost ~25% at median (gasEst × targetGasPrice vs landed: med 0.797, p90 1.036, n=381/30d) because sendAndBump usually lands below the p85-target price and gasEst > gasUsed. Applied at all 5 gas-check sites (main adjGas, bypass, fallback, 2-step est, ranking estRouteGasWpls). At 1.0 the math is byte-identical to V7.9.ENABLE via bot-overrides.json combined.GAS_CHECK_CALIB (hot-reload, validated 0.70–1.0; hard floor 0.70 = the measured median — below it the check would UNDERSTATE typical cost). Recommended first step: 0.90, only after V7.9's landed-loss rate proves flat for ~1 week — never stack two loosenings of the same gate blind.
ATOMIC top-up stagerscripts/atomic-topup.js (dry-run default; live needs ATOMIC_TOPUP_LIVE=1 AND --live)Data-gated capital scaling for the revived AtomicArb paths (direct-pair/V2V3/backrun). Stages 150K → 300K → 600K; per-stage gates on post-funding-epoch ledger rows: ≥5 wins, 0 landed losses, revert rate ≤30%, net>0. Refuses to send if the EOA has a pending tx (shares the champion wallet). 600K is the hard cap — beyond that is a Chef decision. NOT cron'd; run manually.Run dry anytime for the verdict. When gates pass and Chef approves: ATOMIC_TOPUP_LIVE=1 node scripts/atomic-topup.js --live. Log every live run in MANUAL_NOTES (capital move). Gate status 07-07: 0/5 wins, ZERO atomic-path executions since the 15:09Z funding (contract balance verified intact at exactly 150K WPLS) — HOLD; [DIRECT_HB] shows the direct-pair path running-but-idle.
BACKRUN_PENDING_FIREunset (DARK — built 2026-07-06 V7.10, not enabled)The pending-state backrun fire path, built per Chef ("build #1, even if you dont turn it on"). The shadow math (simulateWhaleImpact + enumerateDirectPairs) already computes the POST-whale arb deterministically; this path trusts it and fires multiSwap at whale-gp−1gwei (same-block, ordered after the whale) with the CONTRACT minProfit gate (≥1.3× est gas) bounding every failure — wrong ordering / dropped whale / beaten ⇒ revert, cost = gas (~110-250 WPLS). Dark mode logs every would-fire + guard-skip to logs/backrun-pending-dark.ndjson. Guards: verdict/tax/honeypot, recently-reverting, hourly cap, loss-cap (backrun_pending), whale-gp cap (BACKRUN_PENDING_MAX_GP_K — see its own row), gross ≥500 WPLS AND ≥2× est gas.GO gate: run scripts/score-backrun-dark.js — replays each would-fire at the whale's MINED block; flip BACKRUN_PENDING_FIRE=1 only on ≥20 scorable rows, ≥60% win, simulated net>0. FIRST RUN 07-07: NO-GO (2/20 scorable, 0% win, sim net −291 WPLS; the one scored row overshot pred +4851 → actual −1529 — predGross calibration is the open question). Chef decision. Rollback = unset flag.
BACKRUN_PENDING_MAX_GP_K50000 (DARK-ONLY raise 2026-07-07 V7.12; live-safe value is ~2000)Whale gas-price cap (K-gwei) on the pending-backrun path. 11/16 dark rows were unscorable whale_gp_above_cap skips — the cap, not whale supply, was the scorable-accrual bottleneck (~1.5/day ⇒ 20-row gate ~13d out). 50000 captures the 38-47M-gwei USDT whale cluster so those become scorable would-fires. Safe ONLY while BACKRUN_PENDING_FIRE stays unset: at 2000K the cap bounds a live revert to ~500 WPLS gas; at 50000K it does not.HARD RULE (mirrored as a warning comment in .env): re-lower toward 2000 BEFORE any BACKRUN_PENDING_FIRE=1 flip. Pure .env rollback.
BACKRUN_SKIP_SYMBOLSpTGC (2026-07-07 V7.12)Backrun-path token skip list. pTGC failed 3/3 [BACKRUN_SIM] with SwapFailed_asm(leg=1) transfer-to-pair — fee-on-transfer semantics the Atomic contract cannot trade; each occurrence burned a dark row that can never fire, diluting the 20-row GO-gate budget.Comma-separated .env list. Remove a symbol only with a contract-side fee-on-transfer fix. Pure .env rollback.
V2V3_SKIP_SYMBOLSWAIT,EVDR,FIRE (2026-07-07 V7.12)V2V3 probe skip list. The trio drove 65% of 364 [V2V3_SIM_FAIL] callStatic failures in 16.8h with impossible 85-191% "spreads" (gross up to 1.43M PLS on 750K notional) — dead/manipulated V3 pools, pure RPC churn, zero fires ever, probes failed even downsized 750K→10K. Since the 08:27Z respawn: ~0 fails (was ~22/h).Remove a symbol only if its pool revives with a sane spread. Pure .env rollback.
Sell-executor pool9x · piteas · oc (squirrel OFF, empseal barred — 2026-07-06)SQUIRREL_SELL unset in run-pulse-bot.sh: squirrel sell fills landed at 5-24% of quote (9x→squirrel 0W/3L −1,560 WPLS + 4/34 mined reverts; the on-chain minProfit gate bounds each loss to ~gas but EV is negative). Empseal filtered from the executable sell pool in code (execSells): its sell quotes are phantom for execution (EmpsealRouter "Insufficient fee" revert; 0 sell-side wins lifetime, switch→empseal 3/34 reverts 14d) — quote still collected for screening intel, it just cannot win ranking and fire.Squirrel: re-enable only if fill-vs-quote parity is demonstrated externally. Empseal: remove the execSells filter only with a decoded fix for the fee-forwarding revert.
V4_*_BYPASSDISABLED (auto-killed 2026-05-20T12:43Z)Sentinel re-armed 2026-05-20 under stricter guards (BYPASS_CONSECUTIVE_REVERT_LIMIT 3→2, BYPASS_MIN_NET_MULT=2). 3 attempts followed → 1 nonce-race fail + 2 on-chain reverts (USDC "buy failed", HEX "sell failed"). 2-strike auto-kill fired at 12:43Z and re-wrote .state/v4-est-bypass.disable. V5.7 verdict: probe-OK gate is not reliable signal under current market.V6 returndata-bubble shipped 2026-05-20 (PulseDirectArbV6 at 0x4FaFD2C4…Bc36e). Sentinel re-arm now gated on a fresh post-V6 v4-err-histogram showing the bypass-revert category split, not on the contract change itself.
2-step fallbackDISABLEDSettled state since 2026-05-13. [V4_2STEP_DISABLED] log + continue replaces the execV4TwoStep call. Original trigger: half the 2026-05-13 reverts were 2-step buy legs (MASK, ♆). Atomic-only preserves all-or-nothing semantics — only gas on revert, never half-a-trade.Re-enable only after a fresh post-V6 atomic-only drift histogram justifies a recalibrated 2-step sim-discount.
COMP_RACE_WINDOW_MS10000 (code default)Window for competitor-race detection. Widened back to 10000 on 2026-06-10 (was narrowed to 5000 on 05-13 to encourage fires, but at 5s the skip fired 0× while we still lost races — the window was too narrow to even see the competitor). Feeds BOTH the [COMP_RACE_SKIP] guard (low-EV, adjNet <500 WPLS) AND the [COMP_RACE_OUTBID] path (high-EV, adjNet ≥500). Corrected 2026-07-06: this row previously showed a stale 5000.env-tunable. Narrow only if false-positive races trigger; this is the input the land-rate suggestion tightens.
Sentinel outbid (NEW)+5% premium · 3× base ceiling · 500 WPLS race-outbid floorThree constants in the dynamic-gas pathway shipped 2026-05-26: (1) when outbidding a competitor pending tx, we bid 5% above their gasPrice (in getTargetGasPrice); (2) the outbid path uses a wider 3× base ceiling vs the default 1.55× — bounded ultimately by sendAndBump dynamic GAS_CAP_FRAC × gross + ABSOLUTE_MAX_GAS_COST_WPLS (10,000); (3) COMP_RACE_SKIP only fires when adjNet <500 WPLS — at or above 500 we fall through to fire with the outbid applied (logged [COMP_RACE_OUTBID]). All three observable via [GAS_COMP_OUTBID] + [COMP_RACE_OUTBID] log lines.Bump premium 5→7-10% if 5% loses races measurably. Widen 3× ceiling to 4× only after the dynamic GAS_CAP_FRAC has been observed catching budget overruns. Lower the 500 WPLS threshold to 250 to outbid more aggressively, raise to 1000 to be choosier.
V3_SWAP_ROUTER0xf6076d61A0...Hardcoded router for V2V3 path. Changed 2026-05-13 from Ethereum UniV3 SwapRouter02 (factory mismatch with 9mm V3 pools scanner reads, 100% sim_fail) to 9mm V3 SwapRouter. PROVEN by LHEX broadcast 06:27Z.No tuning needed; router fix verified post-restart V2V3 attempts sim-pass.
TRADE_AMOUNTS[750K, 500K, 300K, 200K, 100K, 50K]Re-expanded to 6 tiers (was trimmed to [200K,100K,50K] on 2026-05-13). Each candidate is evaluated at every size and the best is picked. Current per-size records (sized trades, as of 2026-06-19): 500K 79W/2L (+175.5K), 300K 86W/1L (+190.6K), 200K 84W/2L (+137.1K), 100K 71W/1L (+108.0K), 50K 90W/1L (+99.8K) — all ~98-99% WR. 750K is the new top tier; no fills logged there yet.Watch the 750K tier as fills land — keep it only if its per-size win rate holds with the others. The largest tier stays active only while the V7 contract balance clears the v4W*0.95 gate at that size.
V7 contract balance2.6M WPLSLive on-chain balance of the V7 executor (0xCF748Ba7…673C), funded 2026-06-23 at cutover with 2.6M WPLS from the owner wallet (Ec5Df194) — matched to the prior V6 working capital so trade sizing is unchanged. The retired V6 (0x4FaFD2C4…Bc36e) keeps its ~2.6M as a one-step rollback. All 6 size tiers including 750K are well-funded; 750K is only ~29% of capital per trade.Maintain above ~790K WPLS (750K / 0.95) so the largest tier stays active. Top up from operator (Ec5Df194) if balance drops below. After parity is proven, V6 can be swept to the owner wallet or used to top up V7.
FIRE_REUSE_CALLDATA1 (LIVE 2026-07-02)Latency surgery step-1. When set, the fire path reuses the ranking-stage bestBuy/bestSellQ calldata instead of the redundant URG-002 speculative re-quote (~10s). That re-quote refetched IDENTICAL quotes ranking produced <1s earlier → sim calldata was ~10s STALER than reuse. Safety nets unchanged: estimateGas sim + checkOnChainSpread phantom guard validate every fill pre-broadcast; the contract patches the real token balance at sellOffset(agg). Companion FIRE_REUSE_MAX_AGE_MS (default 4000) auto-falls-back to the re-quote if ranking quotes are ever older than that.Unset for a byte-identical rollback to the re-quote path. Measure via l4-timing stage medians (ranking→sim should collapse ~10s→~0). Do NOT revert without re-measuring — the re-quote adds latency AND staleness now.
FIRE_PARALLEL_ALT1 (LIVE 2026-07-02)Latency surgery step-1b. When =1, the piteas→9x alt-combo reuses the already-fetched 9X sell (quoted on the 9X buy output) instead of a SEQUENTIAL nxSell on the piteas buy output — valid when the two buy outputs are within 30bps (they usually are; contract patches the real balance + 9X sell slippage is 10%). Saves ~8s on the piteas route (the dominant top-winner route). Off = the current sequential fetch, unchanged. Activated 2026-07-02 on Chef approval, stacked on step-1 (FIRE_REUSE_CALLDATA) WITHOUT the originally-planned 24h step-1 proof gate.Unset for an instant .env-only rollback to the sequential fetch. Conservative ranking bias on reuse = at worst a MISSED marginal win, never a bad fire (sim still gates). WATCH revert-rate in pulse-arb-combined-trades.ndjson vs the ~98-99% baseline; because #12 stacked on step-1 without its own proof window, a revert cluster points here first — unset before touching anything else.
HOT_TRIGGER_WPLS15000 (LIVE 2026-07-02)Win-list hot-trigger (fix #17). The mempool whale-trigger (≥75K WPLS) that force-rescans a touched token almost never fires on our thin win-list pools (2/124 events in a sample). This adds a lower, win-list-scoped trigger: a WPLS-in swap ≥15K touching a tier-1 token (HEX/DAI/INC/USDC/USDT/PLSX/eHEX…) fires the same priority-flag + forceNextScan (debounced HOT_DEBOUNCE_MS=8s; skips the direct-pair backrun — our edge is the aggregator scanCycle) → catches follow-on arbs faster. Does NOT change fire/action logic. Default unset/0 ⇒ whale-only path is byte-identical.Only triggers on WPLS-in BUYS (token→WPLS sells price as notional 0 — a v1 limitation). Do NOT lower without watching RPC/quote pressure — each trigger costs a scanCycle. Unset for an instant rollback to whale-only.
FAST_FIRE_GROSS_WPLS2000 (was code-default 2500)Minimum gross for the fast-fire path, trimmed 2500→2000 on 2026-07-02 (Chef tweak) so slightly-thinner-but-still-profitable gaps qualify. Keeps ~800 WPLS buffer over the ~1200 median gas (max gas seen 4456); the on-chain sim still gates net-losers, so this only widens the fast-path candidate set, it does not risk firing below gas. Deliberately NOT lowered to 800 (that would be below gas).Set 2500 (or unset) for rollback. Raise if fast-path reverts on thin gaps climb; do not drop below ~1200 (median gas floor).
SIM_PHANTOM_THRESHOLD / _BENCH_MS3 reverts → 6h bench (V7.7, 2026-07-06)Benches a (token, route, SIZE) after 3 consecutive REASONLESS estimateGas reverts (custom-error / empty-data — the phantom-quote class), then skips that candidate for 6h. Needed because post-V7.5 skipValidation=true means 9mm no longer filters unexecutable routes server-side, so phantom quotes (e.g. PLSX +7% via a UNITY MultiHop that always reverts, custom error 0x61e5a732) looped the full quote+estimateGas pipeline every scan — the auto-phantom blacklist only learns from MINED reverts, which these never reach. SIZE-keyed on hard evidence: HEXDC 750K sims reverted while its 500K sim WON 40s later. "insufficient profit" races + reasoned router errors excluded; any sim pass resets.SIM_PHANTOM_THRESHOLD=999999 disables (instant rollback, no code change). Shorten _BENCH_MS if benched routes recover fast. Persistence shipped V7.8 (logs/sim-phantom-bench.json, fail-open). V7.12 F2 restored ROUTE to the bench key (addr_route_amt) — a route-blind key had over-blocked: HEXDC 500K benched on piteas→9x at 12:49Z then WON +777 nine minutes after expiry; pre-V7.12 bench state parked at .bak-v712, HEXDC piteas→9x eligible again immediately.
USE_SENTINEL_SUBMIT1 (LIVE since 2026-07-06 16:01Z — Chef go; 15.7h review CLEAN)Dual-broadcast (sentinel + public RPC in parallel, same signed bytes, first-accept). The 07-05 watchdog auto-revert was a MISLABEL, fixed V7.11: sendAndBump gas-bumps raced their own already-mined approval; nonce-class RPC answers now rethrow to sendAndBump's resync, DUAL_SUBMIT_FAIL fires only on genuine transport double-failures. LIVE DATA (16:01Z → 07-07 07:45Z): 40/60 submits via=sentinel, median 7ms vs RPC 353ms (~346ms edge); ALL four watchdog trip classes at zero; 6 DUAL_NONCE_CLASS all benign; sentinel never lost on latency — its 20 losses were own-pool rejects covered by the parallel RPC leg; peers 70-76 vs floor 30. V7.12 [E] stacked on: dual-loser "nonce already used" is now a mined-signal ([DUAL_LOSER_NONCE]) that stops the bump ladder and sweeps receipts across all RPCs ([TX_RECOVERED] — proven on PRVX n4656 three minutes after the 08:27Z respawn; pre-V7.12 that class was a 50s blind ladder + TX_DROP).Watchdog (scripts/sentinel-submit-watchdog.sh, cron */5) stays armed permanently — a trip auto-flips the flag to 0, kills the bot and TG-pages. Recommend closing the live watch PASSED at the 07-08 review (Chef-gated). Remaining upside: investigate the ~33% sentinel pool-reject rate (gas-price floor / replacement policy on the sentinel node) to push fast-path coverage from 67% toward 100%.

Revisions

PLS-AGG-ARB-V5
RevisionSummary
V1–V4PulseX V1↔V2 arb → 9inch discovery → cross-agg Piteas/9X/Switch → Phux flash-loans + bribes (~152K WPLS).
V5EmpSeal oracle feed + private mempool relay; SIM-mode pre-funding under D-GLOBAL-7 (lifted 2026-05-13).
V5.1–V5.42026-05-13 unfreeze: 6-param batch, atomic-only, gas-cap 80→95%, [COMP_RACE_SKIP], dual-broadcast.
V5.5–V5.62026-05-13/19: COMP_RACE_WINDOW→5s, URG-002 parallel re-quote, GAS_MULT 1.55× cap, 9x discounts tightened.
V5.72026-05-20 V4_EST_BYPASS re-arm → 2-strike auto-kill; day net +2,516 WPLS — first profitable day.
V62026-05-21 PulseDirectArbV6 redeploy; _bubble() decodes inner reverts; V5 drained, V6 funded 1M WPLS.
V6.12026-05-25 mempool-awareness: sentinel hash stream resolved via box; comp detections 2-6 → 9-23/5min.
V6.22026-05-26 dynamic GAS_CAP_FRAC 1.30→3.30 + sentinel +5% competitor outbid + COMP_RACE_OUTBID (adjNet ≥500).
V6.32026-06-23 aggregator fixes: Switch unblocked (WPLS allowance), EmpSeal haircut, 429-backoff; first Switch win.
V72026-06-23 PulseDirectArbV7 forwards sell-leg native fee → Squirrel sells; staged cutover, 2.6M WPLS funded.
V7.12026-06-24 recovered from a 14h kill-storm outage, added auto-recovery watchdog, re-pointed funnel; all 5 aggs firing.
V7.22026-07-02 latency surgery: FIRE_REUSE_CALLDATA (live) cuts ranking→sim 10s→1s; step-1b + hot-trigger staged dark.
V7.32026-07-02 latency batch: FIRE_PARALLEL_ALT step-1b ~8s off piteas→9x; HOT_TRIGGER 15K, FAST_FIRE 2500→2000.
V7.42026-07-02 inclusion-latency: sentinel receipt-match gate now passes; dual-broadcast flip pending operator go.
V7.52026-07-05 9X quote API un-broke: 9mm moved quotes to a new path/proxy (404'd Jul 2, killed ~70% of sells).
V7.62026-07-05 "fire it up": PENDING_ARB retired (0 wins, 77K gas); SELL_QUOTE_DEADLINE 16K→11K; dual reverted.
V7.72026-07-06 sim-phantom bench: dead 9mm quotes (3 reasonless gas reverts) get benched off the scan pipeline.
V7.82026-07-06 funnel honesty: ledger now logs every revert + Broadcasts counts real crossArb sends (not approvals).
V7.92026-07-06 profit pass (Chef directive): GAS_EST_HEADROOM 1.10→1.00 + route discounts recalibrated on 30d drift (piteas→9x 0.92, 9x→9x 0.55, switch→9x 0.20→0.55) + ALT_PRELAUNCH (piteas buy launches at 9x-sell arrival, ~11-13s off detect→fire) + squirrel-sell OFF + empseal barred from executable sell pool.
V7.9b2026-07-06 backrun/direct-pair revival: root cause of lifetime-zero was PulseAtomicArb holding 0 WPLS (every sim reverted 0x3f9a44e0 = miscomputed SwapFailed assembly selector, hop-1 transfer). Refunded 150K WPLS; decoder + [ATOMIC_BAL_ZERO] alarm added; COMP_RACE zero-trigger mystery closed as structural (coincidence gate vs fire-after-us competitors).
V7.102026-07-06 pending-state backrun BUILT DARK (Chef: "build #1, even if you dont turn it on"): execBackrunPending trusts the post-whale shadow math and fires at whale-gp−1gwei for same-block-after-whale ordering, contract minProfit gate bounds failure to gas. BACKRUN_PENDING_FIRE unset ⇒ would-fires + skips log to backrun-pending-dark.ndjson; scripts/score-backrun-dark.js replays them at the whale's mined block and prints the GO gate (≥20 rows, ≥60% win, net>0). Flip is a Chef decision.
V7.112026-07-06 flag-gated build batch (Chef: "the other 4 items"): (1) GAS_CHECK_CALIB sub-1.0 gas-check calibration at all 5 sites, inert at 1.0, enable via overrides 0.70-1.0; (2) dual-submit nonce-collision FIX — NONCE_EXPIRED-class RPC answers rethrow to sendAndBump instead of mislabeling as DUAL_SUBMIT_FAIL + blind re-sign (the exact 07-05 watchdog trip), USE_SENTINEL_SUBMIT stays 0; (3) scripts/atomic-topup.js data-gated 150K→300K→600K capital stager, dry-run default; (4) Multicall3 cold-start batching found ALREADY shipped 07-02 — stale suggestion corrected.
V7.12 current2026-07-07 ledger-truth + dark-quality batch (one respawn 08:27:43Z): receipt-sweep on TX_DROP/nonce-consumed recovers our own mined txs ([TX_RECOVERED] — proven on PRVX n4656 3 min after boot), 6 receipt-verified ghost rows backfilled to a sidecar corrections ledger (true 16.9h soak: 13W/2L/2R, WR 76.5%, ~+15.5K WPLS), chain-reconcile cron (17 */6) guards new ghosts, ALT_PRELAUNCH tripwire re-armed at detect→fire ≤26s n≥10 + [PI_PRELAUNCH]/[DIRECT_HB] instrumentation, sim-phantom bench key restored to addr_route_amt, BACKRUN_SKIP_SYMBOLS=pTGC + V2V3_SKIP_SYMBOLS=WAIT,EVDR,FIRE, backrun dark gp-cap 2000K→50000K (DARK-only; re-lower before any live flip). F1 UNITY selector capture aborted after 4 attempts — pending the next live 0x61e5a732 V4_ERR.
RPC: connected
Scanner: 193d 18h 42m uptime
687,559 events indexed
WICK_CRYPTO_ENGINE // Built by Green Wick AI