Skip to content

Epic: Build the v4 request-origin IA #179

Description

@hellno

One wallet, one shared Review, N request origins — you, a dapp, an agent. The v4 visual system (the two-signal actor model, tokens, widgets) is unchanged; the information architecture and the flows are rebuilt around where a request came from, not around a mode. This epic transcribes the approved build plan into 8 independently-shippable children (E0–E8). Note: there is no separate E6-cap — E5 is the one merged trust-critical issue.

Implements #170; supersedes #174.


Implementer Contract (every child links here — read before writing code)

Reuse, never hand-roll (convention; /code-review + the per-view fidelity checklist enforce it). Compose every view from widgets.rs. If a primitive is missing, add it to widgets.rs (see E1) — do NOT inline a one-off copy. Existing: short_addr, caution_line, error_line, section_label, divider, identity_mark, budget_gauge, truncated_address (+ money.rs). v4 primitives (E1, SHIPPED in #189 — reuse, do NOT re-roll): key_cap/KeyCap, origin_header/Origin/Trust, agent_mark (handle-aware cyan squircle), action_tag/ActionKind, status_glyph/StatusGlyph, kv_row/KvValue, page_header, meta_rail/meta_section/meta_obj, balance_diff/DiffRow, stop_brake/BrakeState; tokens MARK_MD/MARK_LG/ICON_MD/ALPHA_TINT/RAIL_W. Each carries a // reason: naming its consumer child, so grep your issue number in crates/deckard-app/src/widgets.rs to find yours. Composite widgets take theme: &Theme; atomic ones take explicit Hsla. When you wire a primitive's first call site, delete its #[allow(dead_code)]. Colors via theme.* + amber/agent only (no raw hex); sizes/spacing/radii/motion via tokens (no magic px()); money + addresses via money.rs (mono, tabular, dimmed decimals).

Never regress (trust invariants — a PR that touches these must prove they still hold):

  • Clear-signing renders before every value move; the ⌘↵ arm-delay confirm (never hold-to-confirm).
  • No blind approve: an approval resolves ONLY the still-pending record the human actually reviewed.
  • STOP is always reachable, zeroizes the key, and denies in-flight work.
  • Cap enforcement is real: the UI never shows an enforcement claim the engine doesn't back.

Definition of Done — ALL issues:

  1. cargo fmt --all --check clean · just check green (clippy -D warnings, both feature configs) · cargo test --workspace green.
  2. No new/changed deps (Cargo.toml/Cargo.lock) without explicit approval.
  3. Every new user-facing action has a ⌘K Command (palette_commands.rs + handled in run_palette_command).
  4. GUI issues: annotated before/after screenshots off the funded just demo (use E0's recipe), AND the per-view fidelity checklist checked off in the PR.
  5. A short "do not touch" honored (per child).

Definition of Done — trust-critical (E5 only), in addition:
6. Regression tests for the two invariants at stake: cap-enforced-on-shields (a shield over the stated per-move cap ASKS, never auto-broadcasts) and no-blind-approve (approve resolves only the still-pending reviewed record). Paste the passing test output.
7. A codex adversarial review (GPT-5 xhigh, cross-model) of the FIX diff, looped until 0 findings (per docs/AGENTIC-ENGINEERING.md + the "verify the fixes, not just features" practice).

Golden-ref match rule: the target is the matching view in designs/deckard-v4.html (open it, switch views via the top bar). Fidelity = the per-view checklist passes AND the before/after screenshot reads like that view in layout + hierarchy. The HTML is web; the app is GPUI — there is no pixel diff, so the checklist is the gate.


Children


Dependency graph + sequencing

E0 driving ·(prereq for every GUI issue's evidence)
E1 widgets ─┬─> E2 identity
            ├─> E4 money
            ├─> E3 rail ─┬─> E6 activity/waiting
            │            └─> E7 transaction
            └─> E5 🔴 shared review + enforced cap ──> E7
   E2..E7 ─────────────────────────────────────────> E8 ⌘K

E0 first (so evidence is possible). E1 next (all reuse it). E2/E4 small early wins. E3 structural (E6/E7 rail content needs it). E5 is the trust-critical center (enforcement + the review that displays it, merged, one adversarial review). E8 wires ⌘K last.


Out of scope (documented slots — deferred)

Agent internals / in-wallet agent-interaction model; deep dapp Connections editing (ADR-0001 / #44); session keys (ADR-0002 / #33); multi-chain portfolio expansion.


Golden ref: designs/deckard-v4.html. Contract + checklists + full detail: docs/research/13-v4-build-plan.md. Audit: docs/research/11-ia-flows-audit.md.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions