THREAT-MODEL.md section 3.
Trust boundaries: the browser and provider responses are untrusted input (boundaries B10 and B3), the strategy proposes and the RiskModule checks (B1), the chain re-checks the approved plan (B2) and rejects any other address (B4), reallocation is the only path between agents and stays within one owner (B5, B8), and the owner can revoke at any time (B6). The platform operator is trusted for the MVP. Source: THREAT-MODEL.md section 3.
Boundary 10 in practice
The API authenticates the caller itself, re-derives ownership from its own records and the chain, and re-validates every value the frontend sends: a requested spend limit, a funding amount, an agent ID. A request that reaches an agent’s capital also passes the risk engine and the on-chain validator exactly as if the frontend did not exist. The web app’s login-first redirects are UX gating, not access control. Every endpoint that serves data answers401 without a session, and only GET /health, which reads nothing, is unauthenticated.