All updates

The "instant +14%" is dead: fills land on the chart you are looking at

On migrated tokens, PaperTrench's on-chain price feed could silently lose one side of every trade it watched — and fill your paper buy up to ~13% away from the live chart, handing you instant profit you never earned. This is the worst class of bug this product can have, and it took two independent fixes to close.

The chart you clicked
0.00003412
what your eyes saw
▲ 13% apart
Where the paper fill landed
0.00003855
what the frozen vault implied
Position opens already showing +13% unrealised. You did nothing. The market did nothing. The feed was wrong — and it taught you that your entry was good.

Illustrative figures at the magnitude described in the defect (F-33).

A trading simulator that pays you profit you did not earn is not a broken feature. It is an anti-feature: it trains the exact instinct that empties a real wallet later. If PaperTrench tells you your entries are better than they are, the whole product is worse than useless.

So when this one surfaced — with video evidence doing the heavy lifting — it went straight to the top of the batch.

What was actually happening

Once a memecoin migrates to an AMM pool, its price comes from two vaults: one holding the token, one holding the wrapped SOL. The price is the relationship between them. Read one without the other and you are not reading a price, you are reading half of one.

PaperTrench watches both. Every on-chain update carries the slot it happened in, and a stale-frame guard drops anything older than what we have already seen — a completely reasonable defence against out-of-order updates.

Except: a trade changes both vaults in the same slot. The guard saw the first vault's update, recorded that slot, then looked at the second vault's update from the very same slot and discarded it as old.

VAULT A · TOKEN
Tracking the market
Its update arrives first, passes the guard, and updates the recorded slot.
VAULT B · WRAPPED SOL
Frozen at an old balance
Same slot, so the guard reads it as stale and throws it away — every single trade, forever.

One side of the ratio moved with the market. The other side stopped, permanently, at whatever it happened to hold when the feed started. The implied price drifted further from reality with every trade — and paper fills executed against that drift.

Not a rounding error. Double digits, in your favour, on a product whose entire job is to tell you the truth about your entries.

Fix one: the guard is per-vault now

The staleness rule was never wrong — it was applied at the wrong granularity. A slot is only "already seen" for a given vault. Two accounts changing in the same slot is normal; it is what a trade looks like.

The guard now tracks freshness per vault, so both sides of a same-slot pair land. It ships with a regression test that drives a real same-slot vault pair and fails on the old code.

Fix two: reconcile against what you were looking at

The first fix closes this bug. The second one closes the class.

At fill time, PaperTrench now reconciles the chain price against the price that was on your screen at the moment you clicked. If those two disagree by more than any real sub-second move could explain, the fill takes the on-screen price and logs the divergence.

Why bother, if the bug is fixed?

Because the next upstream break will not be this one. Vault feeds, RPC endpoints, and site adapters all fail in ways nobody has enumerated yet — and every one of those failures ends the same way if it is unguarded: a fill at a price you never saw.

A paper fill can no longer be double digits away from the chart you clicked, no matter what breaks upstream. That is a property of the system now, not a property of one fixed bug.

Where this fits

PaperTrench ranks its own defects by how badly they can lie to a user, and this is severity one: a number displayed wrong. The v2.0.0 audit closed 116 of those. F-33 is what the class looks like when a new code path — the on-chain vault feed — reaches production and meets a case the register did not yet cover.

The register is public. So is this write-up. If a wrong number ever reaches your screen, it should reach this page too.

Patch notes v2.7.0 August 5, 2026

Fills land on the chart you are looking at — the "instant +14%" is dead

On migrated (AMM) tokens, the on-chain price feed could silently lose one side of every trade it watched: both pool vaults change in the same slot, and the stale-frame guard threw the second one away as "old". One vault tracked the market, the other froze, and paper fills executed up to ~13% away from the live chart — booking instant fake profit that taught exactly the wrong lesson (F-33).

The guard is now per-vault, with a regression test driving a real same-slot vault pair. And belt-and-braces: at fill time the chain price is reconciled against the price on your screen from the moment you clicked — if they ever disagree by more than any real sub-second move, the fill takes the on-screen price and logs the divergence. A paper fill can no longer be double digits away from the chart you clicked, no matter what breaks upstream.

Close the hot X tab, it comes back

Accidentally closing the Instant X links viewer no longer degrades the feature until you rediscover the toggle: while the toggle is on and a trading tab is open, a fresh hidden viewer takes its place immediately. Turning the feature off remains the one way to not have a viewer (and a closing browser window never respawns anything).

Your own X tab IS the warm tab now

With no registered viewer, a clicked X link — post, profile, or a token's community — used to open a separate tab right next to the x.com tab you already kept. Now PaperTrench adopts your existing X tab as the viewer and routes into it, community links included. It will never claim a tab you are looking at, a pinned tab, or one playing audio — and adopted tabs are yours: toggling the feature off never closes them.

Quick settings in the popup

The knobs you actually re-tune mid-session — starting balance, quick-buy presets (SOL), quick-sell presets (%), and a fees profile (Axiom/Padre bot · aggressive sniper · no costs) — are now editable straight from the extension popup. Validation is the dashboard's, verbatim: a bad value keeps your saved value and says so; fee profile numbers are pinned by a test to match the dashboard's card. The full Fees & costs form stays on the dashboard.

Flex without leaving the terminal

The Flex button on the closed P&L card now opens the share composer as a floating window centered over the page — no more bouncing to a dashboard tab. It is the SAME composer, and the card math now lives in one shared derivation used by both, so a card can never show different numbers depending on where you opened it. Full story →

Terminal Turbo

The same release carried a whole speed pass: Instant terminal links for Axiom, Padre and GMGN, warm pump.fun and Solscan viewers, a feed-demand gate that donates zero parsing when PaperTrench is off, chips that stop thrashing layout, a dashboard that stopped re-reading everything every 4 seconds, and receipts measured on your own machine. Full story →

Get the complete build

v2.7.0 was tagged and published mid-batch, before the last five commits landed — so that zip is missing Instant terminal links, the dashboard refresh fix and an X-Ray dock fix. v2.7.1 is the complete batch, and nothing else changed between them. If you grabbed 2.7.0, update.

← Newer Terminal Turbo: every terminal, warm