EVOLUTION.md sections 1.1 and 3.3, ARCHITECTURE.md sections 3 and 6.1.
Capital flow: the owner's wallet signs an allocation, a relayer submits it, and the agent account receives it. The account may swap through the allowlisted Kuru router, pay listed x402 payees within a bound, and pay gas, and any other address is rejected on chain. Source: ARCHITECTURE.md section 3.
What an agent’s account may spend on
x402 payments to information providers (under a per-tick and a daily budget), trades through Kuru’s router (per-trade and daily caps), and gas. It may never send funds to an arbitrary address: the allowlist excludes everything except Kuru’s router, the reallocation contract, and the settlement asset, and a settlement-assettransfer or approve must name one of the first two (ARCHITECTURE.md section 16.3).
How principal is computed
Principal is recomputed, never incremented, from finalizedTransfer events of the configured USDC contract, by the worker’s principal job. The definition, as implemented in libs/read-model:
- The owner is the owner wallet on the agent’s record. A transfer from any other address, including another wallet the same user has linked, is not principal.
- The settlement asset is the configured USDC contract. A
Transferfrom any other contract never counts, whatever the token calls itself. - Counted from deployment. Only transfers after the account’s
AccountDeployedevent count. A transfer to the counterfactual address before deployment is capital, recoverable by the owner, but not principal. For this reason funding is offered only for a deployed account. - Deposits add, withdrawals subtract, with the running total floored at 0.
- Everything else (trades, x402 payments, reallocations, transfers between agent accounts, third parties) changes capital and never principal.
- Finalized only. The worker reads only up to the block through which every stored row came from finalized blocks, and never overwrites a value computed through a later block.
Three accepted decisions
Each was first implemented as a proposal and then accepted by the owner as product policy.Conservation
A reallocation is a transfer between two existing accounts of the same owner. It creates and destroys no capital, and total system capital changes only through deposits, withdrawals, and realized trading and cost flows. Retirement moves no capital. These areTHREAT-MODEL.md invariants 3, 13, and 15, expressed as contract tests and as simulation tests (simulation/test/reallocation-scope.test.ts).