Research Ingest Briefing
Task 018 — Trading War Room Research Ingest
1 · System Mental Model
- What. Multi-agent paper-trading desk on Alpaca Paper. 4 Claude Code agents in tmux + 7 n8n workflows on Hostinger VPS (
trading-spoke) + CF R2 data lake + FastAPI proxy on VPS + React dashboard on CF Pages. Schema-enforced human approval on every order (ADR-006 —operator_approved: trueisenum:[true]inorder-submission.json). - Agents. Operator (Plutus) = coordinator + final signer. Analyst = TradingView-first signal validation + pandas-ta confirmation (ADR-009). Risk Manager = pre-trade 8-rule enforcement. Execution = Alpaca submission only, 4 hard gates. File-based comms via
/tmp/trading-war-room/{session_id}/— no peer tmux messaging (ADR-003). - Data topology. Static pages read R2 JSON.
/positionsreads FastAPI (live Alpaca)./marketuses TradingView widget embeds. SQLitetrading.dbholds trade + signal log. No Alpaca creds in browser (ADR-004). - Phase discipline. 1A Foundation → 1B Alerting → 1C Full Dashboard → 1D Refinement. Phases 01 architecture + 02 operations + 03 spoke complete. Phase 04 launch active (credentials pending Hades, dry run pending).
2 · Current UI State
- Built.
mockups/portfolio-overview.html+mockups/trade-journal.html(Session 4 Apollo visual refs). React scaffoldapps/dashboard/= Vite 6 + React 19 + TS + React Router 7 + Recharts + Tailwind 3.4 + date-fns — generic Tailwind, not design-system-mapped yet. FastAPI partial:/api/health,/api/account,/api/positions,/api/orders. - Specified not built. 5 HTML mockups:
/positions,/strategy,/analytics,/alerts,/market. React components for all 7 routes. FastAPI/api/history+ computed stop/target/risk_badge + CORS fortrading.boas.dev+ env var rename to nono convention. Demo JSON fixtures inpublic/data/demo/. CF Pages projecttrading-dashboard. Tunnel routeapi.trading.boas.dev→localhost:8100. R2 public-read onplutus-tradingbucket.
3 · Design System Snapshot — CONFIRMED
Source: 05_dashboard/apollo-design-brief.md
- Palette.
--bg-base:#070a0f· surface#0c1018· elevated#121820· hover#161e28· border#1a2332/#1f2d3d. Text#dde4ef/#7a8ea8/#3d5068. Accents: green#00d68f· red#ff4d6d· amber#f59e0b· blue#3b82f6· teal#06b6d4· purple#a78bfa+*-dimalpha variants. - Type. Syne 700–800 display · JetBrains Mono 10–12px data/mono · Manrope 13px body. Google Fonts CDN segment defined in brief.
- Layout. 220px sidebar + 52px topbar + content grid.
grid-template-columns: 220px 1fr; grid-template-rows: 52px 1fr; height: 100vh; overflow: hidden; - Components. Card =
bg-surface+ 1px border + 8px radius + 20px pad. Badge = mono 10px uppercase 2/8px 3px-radius, 5 variants. Section header pattern. Lightweight Charts config (CDN + transparent bg + JetBrains Mono-rendered axes). - Distinct from boas.dev L2 core. This is the Pantheon Trading dashboard system — Syne + Manrope + JetBrains Mono tri-font, not boas.dev's single-typeface rule. Intentional — institutional dashboard surface.
4 · Data Contracts
_schemas/trade-log.jsonRequired:trade_id · event_type · timestamp · ticker · direction · thesis · catalyst · size_rationale · stop_level · target_level · risk_manager_sign_off. Drives/log+/analyticstrade stats._schemas/session-log.jsonRequired:session_id · session_type · trigger · timestamp_open · agents_active · market_regime_assessment. Drives/strategythesis block + session history nav +next_session_notes._schemas/order-submission.jsonRequired:bundle_id · trade_id · timestamp_prepared · alpaca_order · thesis_context · risk_parameters · risk_manager_sign_off · operator_approved.operator_approvedenum-locked totrue— schema hard gate.- R2 key patterns.
plutus/snapshots/{date}/{pre_market|eos}.json→/overview+/strategy·plutus/trade-log/{date}/{ts}_{sym}_{side}.json→/log·plutus/reports/weekly/{date}.json→/analytics·plutus/alerts/{date}/L1.jsonl+L2/L3-{HH-MM}.json→/alerts./positions= FastAPI only.
5 · Open UI Work (ROADMAP + Session 6 trailing)
- Blocking 1A/1B/1C. 5 HTML mockups specced with dummy data + acceptance criteria in brief §Pages 1–5. Each standalone HTML, inline CSS + custom props, no external framework. Lightweight Charts on
/positionssparklines +/analyticsequity curve. TradingView widgetsisTransparent: true, colorTheme: darkon/marketonly. - React build. Replace Tailwind scaffold with mockup design system. Match mockups pixel-for-pixel in layout/color/type. Wire
fetchWithFallback<T>(url, demoPath)hooks per deployment spec §Demo Data Fallback. Demo JSON fixtures per route inpublic/data/demo/. SPA_redirects/* /index.html 200. - Responsive floor. 375px mobile readability, no horizontal scroll.
- /alerts nav treatment. Open — primary sidebar item vs topbar bell-with-badge. Apollo's call per brief.
- Not in Apollo scope. FastAPI impl (Plutus), CF Pages + tunnel + R2 public-read + FastAPI systemd (Proteus), R2 writes activation in Market Data + Trade Log pipelines (trading-spoke).
6 · Questions / Gaps
- Scaffold vs mockups ordering ambiguity.
apollo-design-brief.mdsays "HTML mockups first, React follows separately"; deployment spec says "convert mockups to React." Scaffold already exists. Suggested resolution: complete the 5 HTML mockups, then component-by-component React port against them. Operator to confirm sequencing. - Session 7 not in ROADMAP. Dispatch references "room restarting after 3 days" — no Session 7 log. Assuming this dispatch is Session 7 kickoff for Apollo.
- Watchdog L2/L3 JSON shape not schema'd.
_schemas/contains trade/session/order only. Alert shape implicit inplutus/alerts/{date}/L{N}.jsonlpattern but not formal. Dummy data in brief §Page 4 as reference until formal schema lands. - Syne CSP risk on CF Pages. Brief mandates Google Fonts CDN. If CF Pages strict-CSP blocks Google Fonts, self-hosted Syne/Manrope WOFF2 fallback needed. Not in deployment spec.
apps/dashboard/scaffold state not yet inspected. Spec says it exists. Assuming accurate until verified.
7 · Next Recommended Move (Apollo Domain)
Build /positions HTML mockup first.
- Highest coupling to live data path (FastAPI + Alpaca) — forces the demo-fallback pattern that unblocks every other page.
- Resolves risk-badge logic, drawdown meter at −3%/−5% thresholds, stop/target chart overlay, polling indicator, empty-state — all reused on
/overviewrefinement +/analytics. - Exposes FastAPI computed-field shape (
stop_level/target_level/risk_badge) to Plutus — unblocks/api/positionsenrichment in parallel. - Smallest reviewable unit before committing to all 5 — lets operator validate byte-level design-system match against the two existing mockups.
Output: constellation-plutus/mockups/positions.html — self-contained, design system verbatim from portfolio-overview.html + trade-journal.html, dummy data per brief. Then /strategy → /analytics → /alerts → /market in sequence (/log already mocked). Commit per-mockup for clean review.