Skip to content

v0.2.9

Latest

Choose a tag to compare

@github-actions github-actions released this 11 Sep 18:07

Release 012 · September 11, 2026 · Current

VEX 0.2.9

Your Lighter trades, on your own screen - the AgentScan feed inside VEX (Settings and the Studio Activity card) now lists every Lighter perpetual and spot fill next to your swaps and bridges, with the whole record the venue wrote: what the fill did to the position, size, price, the settled dollar notional, both fees with their provenance, realized PnL, the leverage in force before the fill, and the market's last observed position beside it. Underneath, the fill ledger stops blaming itself under concurrent observers, and the leverage a fill was made at is recorded from the venue's own trade record rather than guessed later.

Since 0.2.8, 2 pull requests and 10 commits landed, both on the Lighter arc.


01 · Lighter in the local AgentScan

One feed, two ledgers.

Until now the in-app AgentScan feed read the swap and bridge ledger only. A
Lighter deposit showed, the fill it funded did not, and a coding agent asking
VEX for its own history was told, wrongly, that nothing had happened. The feed
now reads the venue's fill ledger as a second arm and interleaves both by time
in one page.

01 · Every fill, with its position detail. A row reads PERP·OPEN (or
INCREASE, REDUCE, CLOSE, FLIP; SPOT for a spot market), the Lighter
mark, "Buy 0.0050 ETH @ 2,598.09", the venue's settled notional as a plain
dollar figure, a leverage chip such as 10.00x when the ledger holds the
fraction, and the time. Expanding it lists the side, size, price, quote
notional and the whole dollar figure on lines that wrap, then the position
before the fill, the entry quote before it, the realized PnL on a reducing
fill, the leverage before the fill, the Vex fee and the exchange fee, the trade
type, the venue, the block height, and the order, trade and intent ids.

02 · Fees keep their provenance. A charged amount the venue has proven is
shown as the charge, in its own asset; until then the fill's own estimate is
shown with the estimate marker, the basis it was computed on and the tick it
used. The two are never added, an unproven charge is never printed as zero,
and a recorded charge is never replaced by an estimate, whatever its asset's
decimals. An exchange rebate is called a rebate.

03 · Position now, as a fact about then. Each perpetual fill carries the
market's last observed position: signed size, entry price, unrealized and
realized PnL, liquidation price, and the margin mode and leverage when the
observation recorded them, always beside the time VEX last observed it. A
market observed closed says closed; an observation whose stored details cannot
be read says so instead of hiding. A spot fill shows no leverage and no
position, because it has none.

04 · Liquidations are named. A fill the venue made on the account, a
liquidation, a deleverage or a market settlement, carries a chip that says so.
It is not a trade you or the agent placed, and the feed does not dress it as
one.

05 · Scope stays with VEX. A fill is listed only when a Lighter onboarding
of one of your inventory wallets resolved to the fill's account, and only when
VEX has attributed the fill to an order it placed; a fill VEX observed but has
not yet attributed is held back rather than shown as yours. Filters gain a
"Lighter fills" kind and the lighter protocol.

02 · The fill ledger

Recorded, not guessed.

01 · The leverage a fill was made at. The venue's trade record carries the
account's initial margin fraction before the fill. VEX read it and dropped it;
it is now stored on the fill, on the venue's own scale, and shown as the
leverage before the fill. A value outside the venue's range is stored as
unknown rather than clamped, and never lets a fill fail to record. Fills
recorded before this release show "unknown" until a later observation of the
same trade carries the fraction; nothing is backfilled by guessing.

02 · Position observations carry the margin terms. The periodic position
observation now records each position's initial margin fraction and margin
mode, cross or isolated, alongside size, entry and PnL. What reaches AgentScan
is unchanged and pinned by a test.

03 · Two observers of one fill no longer argue. The order's own follow-up
read and the account stream can observe the same fill milliseconds apart. The
ledger keyed its conflict clause on one of the fill's two identities, so the
second writer could hit the other and log a failed ledger write for a fill the
ledger already held. Every identity now arbitrates, the loser resolves to
"already held", and an observation that only enriched a held fill is counted
as such rather than as a failure.

03 · Everything else

A link that resolves.

01 · Your data stays yours, at a real address. The privacy link under the
Superboard key and in the setup wizard pointed at a host that never existed.
It now opens the privacy page of the public documentation, which says what
stays on your machine, what leaves it and what is opt-in, and the desktop's
external-link allowlist carries exactly that address and nothing wider.

02 · Delivery to the public AgentScan. VEX has been holding every Lighter
fill and position observation for the public AgentScan because the deployed
server did not answer the capability check at the address the contract names.
That is a routing fix on the server, submitted alongside this release; once it
is live, every held row goes out on its next attempt with no action on your
side.

04 · Before you update

Upgrade notes.

One new database migration runs automatically on first start, taking the
schema from 161 to 162. Two changes you will feel: Lighter fills appear in the
in-app AgentScan feed and in the Studio Activity card, and fills made before
this release show their leverage as unknown until a later observation of the
same trade carries it. No manual action is required.