Release 004
Release 004 · VEX 0.2.1 · Chronos, refined
Chronos with its promises kept.
Where 0.2.0 rebuilt the surfaces, 0.2.1 makes them tell the truth under load. What the agent executed, what it charged, what it still cannot prove, and whether Stop actually stops it: every one of those is now a mechanical fact rather than an inference.
22 commits and 5 pull requests since 0.2.0, merged between July 31 and August 5.
Headline venue · Trench Express on Robinhood Chain
0
Fee taken when a sale's proceeds cannot be decoded. VEX charges nothing rather than a percentage of a guess.

01 · Headline venue
The agent as a launcher.
The launchpad promised in 0.2.0 shipped. Trench Express is a bonding curve launchpad on Robinhood Chain, integrated as a first class venue.
Launch a token from a form. The launch flow is a structured form with a preview: exact spend, VEX fee, estimated gas, predicted address. The form itself is the approval, and nothing signs without it. A consent matrix governs who may authorize a launch, whether the form was user submitted or the session runs at full autonomy, and the answer is recorded per intent.
Trench Photos. Launch images live in a locker on the BOOK panel. VEX square crops and auto downscales every image and reports the resulting byte size, because the picture is stored inside the launch transaction and its size is gas you pay.
Curve trading with two honest fees. Buys and sells on the curve go through ordinary approval cards and price checks. Two separate fees apply to the ETH leg and both are named in the quote: Trench's own 1% curve fee, and the VEX 0.25%. On a sell whose proceeds cannot be decoded, VEX takes no fee at all rather than charging a percentage of a guess.
In flight truth. My Launches shows a broadcast but unconfirmed launch as in flight, no token address yet. A launch whose nonce was used by another transaction is classified superseded and reported for what it is, never silently dropped and never faked into a failure.
02 · Tooling
Rebuilt around full contracts.
The largest engineering block of the release. The old flow, a generic execute_tool taking a toolId, is gone from the model's surface. In its place:
Manifests as real functions. Discovered tools inject as complete function schemas: parameters with types and units, enums, required flags, examples, constraints. The agent sees exactly what it can set and how. Since the change, live sessions have produced zero invalid parameter tool calls.
List, describe, call. Listing a protocol stays a cheap index of names and descriptions, with a nextStep pointer heading every listing. A hidden describe_tools turns chosen toolIds, up to 40 exact ids, into full manifests that are callable on the very next step, and a schema fetched this way is byte identical to one reached through ranked discovery, pinned by an equivalence test. Anything displaced by the session cap is named, never silently dropped.
Errors with the real cause. A failed tool call states what actually happened: sanitized, classified by name, with a remediation such as top up the wallet or use dexscreener.search for that chain. Never a generic unexpected error that sends the agent retrying blind. Slippage defaults to 1% with a hard 10% ceiling that rejects by name and never silently clamps.
Approvals survive the rebuild. Queued approvals resume through a durable envelope fingerprinting the exact tool contract they were approved against, so a changed contract fails closed instead of executing something you never saw.
03 · Execution honesty
Provenance in the ledger.
Agent Scan rows now carry proof rather than vibes.
Executed amounts from the source. The moment a mutating tool returns with evidence, the row records the amounts that actually moved, with the status provenance and the amount provenance tracked separately (migration 067), so confirmed can never quietly borrow an estimate's numbers.
A settlement decoder for the gaps. When a response cannot prove amounts, a fallback decodes the receipt itself: a correlated router event plus a required same value unwrap corroboration, proven against the exact live receipt the old logic returned null for. Unmapped venues decline by name, and nothing generically guesses.
The VEX fee reaches the row. Fee legs project onto their parent operation from one whole source and fail closed on ambiguity, and a fee that was genuinely charged stays visible even when its parent operation failed. Revenue accounting is untouched: the projection reads, never writes.
Contradiction quarantine. If stored and decoded evidence disagree about money, the row is quarantined with the conflict named, never merged into a plausible looking hybrid.
04 · The pending lane
Real time, durably owned.
Five seconds, then thirty. In flight transactions are re checked every 5 seconds for their first ten minutes, phased from the immutable broadcast time, then every 30 seconds, with a durable claim lease (migration 068) so no two workers can ever race one row, and a token fence so a stale worker that comes back from the dead writes zero rows.
Live pushes. A dedicated progress bus streams pending updates to the Activity panel as they happen. The renderer no longer waits out a 60 second poll.
An honest terminal state. A transaction the network no longer knows about transitions to superseded, outcome unproven, behind a bounded clock and the standing money gate. It sets no failure code, preserves its evidence, and releases the portfolio snapshot freeze that one stuck row used to inflict on everything else.
Repair loops that converge. The verifiers that warned every 30 seconds forever now classify their reasons (in mempool, RPC unreachable, chain echo mismatch, unreadable receipt), log once per change, back off on a schedule, and treat not yet mined as the quiet null it always should have been.
05 · Control
Stop means stop.
The deepest fix wave of the release. The Stop control was audited from the button to the database and back.
Visible whenever it works. The button renders off a six fact engine aggregate (active run, live lease, pending wake, pending approval, incomplete approval lifecycle, outstanding user form) pushed over IPC, so a session sleeping between timed checks shows Stop, and pressing it cancels the pending wake instead of letting the agent rise again.
Effective everywhere. Three engine paths that could outrun a Stop are now gated behind it under one lock discipline: approval resumes, the reconciler's own chat continuations, and launch form continuations, whose durable consumption marker (migrations 069 and 070) survives crashes, recovers orphans, and closes a deleted session's continuation exactly once. Interleavings, such as a Stop after the result lands but before the turn, or a Stop inside the lease release window, are pinned by real database tests.
Starts respect stops. Starting or recovering a mission with an operator Stop outstanding refuses cleanly instead of creating a run the Stop could never reach.
Launch outcomes by status, not by hash. A pending broadcast wakes the agent with an honest not confirmed, do not retry. Only a proven receipt says launched. The launch dialog auto dismisses only on that proof, holds on a revert, and refuses Escape or a backdrop click while a signature is in flight.
06 · Fees
The fee, stated plainly, everywhere.
Itemised on approval cards. Every swap and bridge approval shows VEX fee (0.25%) as its own labelled line, computed from the engine's own constants on the same amount being signed and injected through the unspoofable channel. The model structurally cannot supply or alter it. Bridge cards also gained the moved amount itself, which had never been projected.
The guide finally says it. How VEX works was rewritten top to bottom: 354 lines with a costs section (model tokens, gas, and the fee's three rules), the backup flow, a chains at a glance table, a UI states table, an FAQ, a glossary, and every number verified against the shipping constants. The 60 minute approval TTL replaces a wrong roughly 5 minutes, and the retired plan mode and tool names are gone from the text. The word fee appeared zero times in the old guide.
Treasury addresses, buyback and burn, and the charge only after success rule are unchanged from 0.2.0. Now they are simply visible.
07 · The desk
Quieter chrome, truer marks.
vexing. The word Working is retired. A fresh message conjures the VEX mark from a feathered radial cloud of particles in the centre of the chat, assemble, hold, disperse, with the elapsed counter beneath. Mid turn rounds show a compact vexing pill that never covers the transcript, and everything goes still while a signature awaits. The scene shows only over a provably empty viewport, latched on real transcript evidence, so it structurally cannot cover streamed content.
Quieter chrome. Messages slide into the transcript iOS style. Scrollbars are macOS style overlays that appear only while scrolling and sit at the panel's true edge beside the BOOK rail, and the draft field's own scrollbar got the same treatment. BOOK cards drag into any order with a soft settle animation and remember it. The session list dropped its redundant mode glyphs. Trench Photos and Launch a token merged into one Trench Express card.
Tool calls wear their venues again. Retiring execute_tool had silently stripped venue marks from chat. Every protocol call now canonicalizes to its venue at the main process boundary and renders its mark and a human title, and a dry run or preview can never render as an execution.
Icons that tell the truth. The icon layer was renamed to Lucide's own names, including the three arrows that were chevrons and the Bitcoin wallet that was a generic wallet, with zero visual change, proven by identity of the exported glyphs.
08 · Engineering
How this release was built.
The release was driven by live trading sessions: real funds on the shipping build, every break or lie filed, and every filed item closed with a named fix, an adversarial review, and a regression pinned in tests.
Two full multi agent cycles ran end to end before merge: six research agents with individually verified plans, seven builders with exclusive file ownership, six delta review arcs, and a three turn adversarial final review whose every finding landed as a fix with a failing test written first.
The suite stands at 11,474 root and 4,855 app tests, all green at the tag. The test type ratchet improved 310 baseline fingerprints, and the escape checker's blind spot for brand new test files was found and emptied.
Engine workers no longer race database migrations at boot, behind a startup ordering gate, and nine oversized modules were split along responsibility seams during the wave with imports left stable.
Numbers worth quoting
22 commits, 5 pull requests, 9 migrations (062 to 070), roughly 24k insertions net across the waves.
Pending lane: 5 second cadence for 10 minutes, then 30 seconds, with a durable claim lease and a token fence.
Approval TTL 60 minutes, now documented truthfully. Two step confirm window 4 seconds. Prepared send 10 minutes.
Session tool capacity: 40 injected manifests, with displacements named. Worst legal context envelope measured at 34.3% of 256k.
Slippage: default 100 bps, ceiling 1000 bps, rejection rather than clamping. VEX fee 25 bps. Trench curve fee 1%, which is the venue's own.
Invalid parameter tool calls since manifest injection: zero.
09 · Roadmap
What comes next.
The funded verification wave. Every fix in this release passed tests and adversarial review. The next step is the standing live probe suite: re running the original failure scenarios with real funds across all six venues, including the paths only a live chain can prove, such as a genuinely superseded launch and a live Uniswap fee leg capture.
Tool retention. Discovered tools currently leave a session oldest first when the 40 slot cap fills. The planned change evicts least recently used and pins anything the agent touched in its last ten turns, so a tool never vanishes mid workflow.
Hardened input boundaries. A root guard for all internal tool handlers, after an audit found 15 sharing a pre parse dereference pattern, is specified and awaiting the go.
Still on the roadmap from 0.2.0: price based Wake Up, Telegram remote control, perpetuals via Lighter, the white paper, and Windows builds. The launchpad line item is done, and it shipped as Trench Express.
10 · Before you update
Upgrade notes.
Nine migrations (062 to 070) apply automatically on first launch. Nothing is removed in 0.2.1 and no manual action is required. Two things will look different on purpose: the VEX fee now appears as a line on approval cards, where it was always charged and is now always shown, and the separate LAUNCH FEE row is gone from Activity, because the fee rides its parent operation instead.