> For the complete documentation index, see [llms.txt](https://docs.trover.tech/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.trover.tech/engineering/verify-2026-09-13-fees-round-1.md).

# Verify 2026-09-13: 1% fee on every Robinhood token trade (round 1), bridge fixes

Migration status: **none**. Plan: `PLAN-2026-09-13-fees-and-referrals.md`.

## Fees

* `TroverAtomicFeeExecutor` v2: constructor `(owner, feeRecipient, maxFeeBps, defaultFeeBps)`; `executeNative(router, calldata, feeBps)` and `executeToken(token, gross, router, spender, calldata, feeBps)` take the fee per call under the immutable cap; `setDefaultFeeBps` (owner). Tests: `TroverAtomicFeeExecutor.test.ts` (3) + rescue paths (8). Artifacts re-exported for the admin deployer (args `300, 100`); `safe-rescue.mjs` gains `executor.setDefaultFeeBps`.
* Worker: with `AUTO_INVEST_FEE_EXECUTOR_ADDRESS` set, every Robinhood trade from every channel, buy or sell, executes through the executor with `platformFeeBpsFor(profile)` (round 2 discounts referred profiles). Without the address the fee-less direct route stays, as today.
* `PLATFORM_FEE_BPS` default 50 → 100.
* Testnet: executor v1 retired in the 46630 manifest so the next `deploy:stack:testnet` deploys v2; the rehearsal executes a fee'd swap through it and checks the fee wallet received 1%.

## Bridge

* Amount box has a unit pill (asset / USD): typing in dollars converts through the balance lookup's price; the other unit's equivalent shows under the input; percent buttons keep working in either unit.
* "balance unavailable · connected wallet required": the balance route only accepted wallets linked to the profile while the selector lists the browser's wallets; it now reads any requested address (public chain data) and the panel asks for the selector's address even when the browser lacks that wallet.
* Wallet prompts open by themselves: a bridge intent reaching "awaiting wallet" and each executable step of a signing handoff push the request to the wallet once; the buttons stay for a retry after a cancel, which is now reported as "cancelled in the wallet · press the button to send it again".

## Checks run

Hardhat compile; 11 contract tests; `tsc` api, worker, web (two stale `.next/types` stubs for routes deleted on 2026-09-08 are not source errors).

## Deploy

1. Backend: standard detached api + worker deploy (no on-chain change yet).
2. Mainnet executor from `/internal` → "Deploy the token stack" (args fee wallet, cap 300, default 100, routers allowlisted). Paste `AUTO_INVEST_FEE_EXECUTOR_ADDRESS` into the server `.env` with `PLATFORM_FEE_BPS=100`, redeploy api + worker.
3. First trade after that: the transaction goes to the executor, the fee wallet receives 1% in the same transaction, `trade_fees` gets a confirmed row, and Dune query 8 shows fees.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.trover.tech/engineering/verify-2026-09-13-fees-round-1.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
