All updates

Out of alpha: we published 139 defects in our own code, then closed 116

Up to this point, our release history was reactive — the community found a break, we patched it. Good responsiveness, wrong posture: our users were our QA. So we audited ourselves in four parallel tracks, ranked every finding by how badly it could lie to a user, and published the whole register before fixing any of it.

139
DEFECTS FOUND & PUBLISHED
116
CLOSED IN THIS RELEASE
553
TESTS GREEN
9
SITES IN THE QA MATRIX

Publishing a list of everything wrong with your own product, in public, before you have fixed it, is not a normal marketing decision. It is the right one for this product specifically — because PaperTrench's entire value proposition is that its numbers are true, and a claim like that is worthless from anyone who has not shown you their failures.

The register is DEFECTS.md. It sits in the repository, linked from the README, one entry per defect: severity, affected sites, reproduction, root-cause hypothesis, and the exact file:line.

Ranked by how badly it can lie to you

Standard severity scales rank by crash impact. Ours ranks by dishonesty, because in a trainer a wrong number is more dangerous than a crash — a crash tells you something is broken, and a wrong number teaches you a lesson you will act on with real money later.

S1
Lies
A number displayed wrong — P&L, average fill, balance, marker position. The class that does real damage.
S2
Silent death
A feed, fill or render stops without telling the user. You keep trading against a frozen screen.
S3
Wrong presence
The overlay appearing where it should not, or missing where it should be.
S4
Friction
Can't move, resize or find things. Confusing states.
S5
Polish
Looks bad, inconsistent, unfinished.

Every fix ships with a test that failed before the fix. No fix without a lock.

Numbers you can trust (the S1 class)

The headline one: fills could no longer execute at stale prices. The order of preference is now chain state, then the click-time snapshot, then a fresh page tick, then one resolver refresh — with a 3-second last resort for every source, aligned with the header's own staleness mark. Beyond that the trade is refused with a visible reason. The old default path filled at prices up to ten seconds old.

Feeds that survive volume (the S2 class)

The GMGN high-volume fix from v1.2.14 turned out to be one instance of a class: frame-size guards, tick budgets and parse assumptions that break exactly when volume peaks — which is exactly when you need them.

Those fixes are now the contract for every site: a bigger parse guard with a bounded collector walk, per-mint throttling, and a 10× stress harness in CI that replays recorded real frames at ten times observed peak rate. The contract per adapter: never silently die, always recover, and the watched mint always ticks.

An overlay that behaves (S3 / S4)

PaperTrench now runs ONLY on the nine supported trading sites — never anywhere else. Wallet, portfolio and EVM routes never mount the panel. Pump.fun became a first-class site with its own adapter.

Navigation is instant (SPA route hooks instead of an 800ms poll) and can never trade the previous token on a new page. There is now one drag system: panel, positions bar, minimized pill and collapsed tab all drag with touch support, both-bounds clamps, and positions that can never be lost off-screen. Disabling the overlay removes everything, including chart drawings; reloading the extension leaves nothing behind.

And the dashboard stopped fighting you: tables keep their scroll position, async results survive refreshes, settings saves cannot clobber your layout, and every failure says so out loud.

New in the same release: the graduation bar

The coach view evaluates a seven-criterion bar — expectancy that survives removing your best round, loss sizing, hold symmetry, revenge re-entries, thesis coverage, cold-streak discipline — against your own journal.

Missing evidence never counts as a pass. That single rule is what separates a graduation bar from a participation trophy. Paper failure is definitive; clearing the bar earns a small, careful start.

What did not get fixed

23 of the 139 did not close in v2.0.0. Four carry explicit engineering dispositions — reasoned decisions not to fix, written down — and the rest sat on an enumerated v2.1 backlog of friction and polish only.

They stayed in the public register the whole time. An open defect you can read beats a closed one you were never told about.

And the infrastructure to keep it that way

A structured bug-report form, a nine-site release QA matrix, a preflight script that gates every tag, a full permissions audit (docs/PERMISSIONS.md), and the public roadmap plus defect register linked from the README.

Everything since — The After, fees, the Flex Pack, X-Ray, the vault-feed fix — has shipped through that path.

Patch notes v2.0.0 August 5, 2026 · out of alpha

The production release

A full four-track code audit produced a public, ranked defect register (DEFECTS.md, 139 findings); v2.0.0 closes 116 of them — every wrong number, every silent death, every wrong presence — each with a regression test that fails on the old code. The rest carry explicit engineering dispositions or sit on an enumerated v2.1 backlog (friction and polish only). Suite: 553 tests, green.

Numbers you can trust (the S1 class)

Fills can no longer execute at stale prices: chain state first, then the click-time snapshot, then a fresh page tick, then one resolver refresh — and a 3-second last resort for every source, aligned with the header's own staleness mark. Beyond that, the trade is refused with a visible reason. The old default path filled at prices up to 10 seconds old.

Price collection is per-token: a batched frame can never attribute one coin's price to another, and trade arrays are read newest-first. The average-entry line finally HOLDS YOUR ENTRY — it used to ride the candle on market-cap charts. GMGN markers and lines are corrected against the chart's own candle scale; a fill without a genuine USD price waits for one instead of drawing ~150× low. Sites without a native chart hook get an honest marker rail. Dashboard accounting is unified: the equity curve converges exactly to equity, realized P&L includes partial exits everywhere, the verification chain agrees with an honest wallet by construction, and open/closed % share one basis.

Feeds that survive volume (the S2 class)

The high-volume fixes that used to exist only for GMGN's trade feed are now the contract for every site: bigger parse guard with a bounded collector walk, per-mint throttling, and a 10× stress harness in CI. A fast runner no longer freezes the feed. The RPC pool stops eating itself: vault discovery costs one round trip (and is cached), and a fully benched pool cools down instead of hammering dead endpoints. Screener quick-buy chips fill on the first tap, price from fresh quotes only, never stick busy, and step aside when the panel covers them.

An overlay that behaves (the S3/S4 classes)

PaperTrench now runs ONLY on the nine supported trading sites — never anywhere else. Wallet, portfolio, and EVM routes never mount the panel. Pump.fun is a first-class site with its own adapter. Navigation is instant (SPA route hooks instead of an 800 ms poll) and can never trade the previous token on a new page. One drag system: panel, positions bar, minimized pill, and the collapsed tab all drag with touch support, both-bounds clamps, and positions that can never be lost off-screen. The dashboard stops fighting you: tables keep their scroll position, async results survive refreshes, settings saves can't clobber your layout, and every failure says so out loud.

New: the graduation bar

The coach view now evaluates the seven-criterion bar from docs/GRADUATION.md against your own journal — expectancy that survives removing your best round, loss sizing, hold symmetry, revenge re-entries, thesis coverage, cold-streak discipline — and missing evidence never counts as a pass. Paper failure is definitive; clearing the bar earns a small, careful start.

Also

Structured bug-report form, a 9-site release QA matrix, a preflight script that gates every tag, a full permissions audit (docs/PERMISSIONS.md), and the public roadmap + defect register linked from the README.

Read it yourself: DEFECTS.md ↗ · ROADMAP.md ↗
← Newer The After: what happened once you sold