← Index
Source: docs/tasks/jul-02-rabbit-design.md (auto-generated by scripts/generate-docs-html.mjs — edit the .md, not this file)

Rabbit — Jul 02 Task

0. Summary

The lead item is new: make the PBS consumer track (C2 searcher + C4 observer) work in the cloud deployment, not just locally. The rest are the still-open items carried over from Jul-01: the JayVerse Gravia dashboard MVP, auth / LLM gating, the Market page, KB-over-MCP/RAG in AI Chat, an AP2 Stripe example, and the ERC-7702 / 7715 demo.

Done on Jul-01 (omitted here): New First (PBS C2/C4 shipped), New Third (ETC → JayVerse), New Fourth (EN/KO toggle + full i18n), §1 Portfolio/Market split, §4 Knowledge. See jul-01-rabbit-design.md for those.


1. ⭐ NEW — PBS consumer track in the cloud

🔲 TODO

Goal: the PBS consumer track built Jul-01 currently runs locally off .env.local. Make it work on the deployed cloud app (Cloud Run per the roadmap) — safely, since C2 signs real transactions.

Current state

Design / work

  1. Secrets injection. Put the RPC + key env into GCP Secret Manager and mount as Cloud Run env — never baked into the image. Follow the Docker policy: multi-stage build + .dockerignore so .env* never enters the build context.
  2. Access tightening. /api/bundle* currently allows any ALLOWED_EMAILS user. Because it spends real funds with a server key, gate to jay-only in cloud (session.user.email === linked0@gmail.com, matching the §2 "jay → env secret" pattern) → non-jay gets 403.
  3. Mainnet safety in cloud. Real-funds risk on a reachable URL. Default disable mainnet in cloud unless an explicit ENABLE_MAINNET_BUNDLE=1 flag is set (Sepolia stays on). Optionally add a value cap (reject value above a small threshold) + basic rate-limit on the endpoint.
  4. Runtime + egress. Keep /api/bundle* on the Node.js runtime (ethers needs it — already runtime = "nodejs", not edge). Confirm Cloud Run egress reaches the relays/builders + RPC hosts.
  5. Mode awareness. In appMode() === "cloud", C2 must not assume any localhost (it doesn't — uses env RPC + public relays). Just verify.
  6. Verify: deploy → open cloud /xyz → C4 loads for anyone → log in as jay → C2 Sepolia submit works with Secret-Manager-injected keys → inclusion tracker shows ✅.

Open questions

Recommend: Sepolia enabled in cloud; mainnet off by default, behind ENABLE_MAINNET_BUNDLE


2. JayVerse — Gravia live-trading dashboard (MVP)

🔲 TODO(carried from Jul-01 "New Second"; the /jayverse route is currently a stub.)

Reference (aesthetic to reproduce):

Gravia-style live-trading dashboard reference

What: a visually striking, SIMULATED / DEMO live-trading dashboard (Gravia aesthetic) at /jayverse — dark cyberpunk terminal, everything animating off one mock feed. Full design + panel list + tech in ../features/jayverse.md and Jul-01 New Second.

3. Auth + LLM gating

🔲 TODO

4. Market page — Hyperliquid orderbook + indices

🔲 TODO

5. AI Chat — KB via MCP + RAG

🔲 TODO

6. AP2 — Stripe settlement example (educational)

🔲 TODO

7. ERC-7702 / 7715 demo (educational)

🔲 TODO(was "ETC" in Jul-01 §7; ETC is now JayVerse. Decide its home: under JayVerse, under XYZ, or its own slot.)

8. Cross-cutting — IA update

🔲 TODO (partly done Jul-01: Nav split/reorder, JayVerse rename applied)

9. Decisions & remaining open questions

Resolved (jay):

Still open:

10. Suggested sequence

  1. PBS consumer track → cloud (§1) — Secret Manager + jay-only gate + Sepolia-first; the code exists.
  2. JayVerse Gravia dashboard MVP (§2) — high "wow", zero backend.
  3. Market page content (§4) — indices then orderbook.
  4. AI Chat gating (§3) → KB RAG + MCP (§5).
  5. AP2 Stripe (§6); ERC-7702/7715 demo (§7); finish IA (§8).