Last updated: 2026-02-13
M09 (Subset): Audit Export + Hardening
App mode: Demo (UI-only, fully mocked). Live execution building blocks exist but aren't wired to UI yet (see #2).
- Expanded spec written in
spec.md. - Implementation plan and milestones written in
IMPLEMENTATION_PLAN.md. - M00 bootstrap: Expo app scaffold + Cairo contracts workspace + deterministic scripts + CI.
- M01 baseline safety rails: session-account lineage integration and deterministic contract checks wired into
scripts/contracts/test. - M02 wallet libs: deterministic account address + RPC client with retry/fallback (exists in
apps/mobile/lib/starknet/, not wired to UI). - M03 deploy libs: funding UX + deploy account transaction flow (exists in
apps/mobile/lib/wallet/, not wired to UI). - M04 policy libs: create/register/revoke session keys (exists in
apps/mobile/lib/policy/, not wired to UI). - M05 agent libs: transfer planning + execution (exists in
apps/mobile/lib/agent/, not wired to UI). - M06 activity libs: session-key transfers + on-chain denial UX + activity logging (exists in
apps/mobile/lib/activity/, not wired to UI). - Premium demo mode UI: Full onboarding flow + tabs (Home, Trade, Agent, Policies, Inbox) with mocked state (
apps/mobile/lib/demo/).
- M09 (subset): lightweight audit export (JSON) + error hardening
- P0: Wire live/demo mode backend abstraction (#2) — this unblocks live Starknet execution.
- P1: Add lightweight audit log export (JSON) from Activity (#17).
- P1: Add RPC hardening (retry/fallback/user-safe errors) — in review (#18, PR #28).
./scripts/check # Runs mobile lint + typecheck + contracts tests
./scripts/app/dev # Start Expo dev server
./scripts/contracts/test # Run Cairo contract tests- Run
./scripts/app/dev - Open app in Expo Go
- Complete onboarding flow
- Navigate tabs: Home → Trade → Agent → Policies → Inbox
- Verify premium UI renders correctly with mocked state
Live Mode (When Wired, See #2)
One-time setup: Declare canonical session-account class on Sepolia:
STARKNET_DEPLOYER_ADDRESS=0x... \
STARKNET_DEPLOYER_PRIVATE_KEY=0x... \
./scripts/contracts/declare-session-accountManual smoke test:
- Switch to Live mode in Settings
- Create wallet
- Fund address via faucet, refresh until ETH appears
- Deploy account
- Create session key policy in Policies tab
- Execute transfer via Agent tab
- Denial test: Set low cap, try to exceed it, verify on-chain denial