Skip to content

feat(demo): Stage 2 PR-4 — secondary fixture richness#224

Merged
luokerenx4 merged 1 commit into
feat/ui-demo-stage2-scenariofrom
feat/ui-demo-stage2-fixtures
May 29, 2026
Merged

feat(demo): Stage 2 PR-4 — secondary fixture richness#224
luokerenx4 merged 1 commit into
feat/ui-demo-stage2-scenariofrom
feat/ui-demo-stage2-fixtures

Conversation

@luokerenx4
Copy link
Copy Markdown
Contributor

Summary

Final Stage 2 PR. Fills the long tail of fixture content so the demo doesn't look gutted once a visitor scrolls past the Inbox / workspace / transcript flagship flow from PR-3.

Stacks on top of PR #221, PR #222, PR #223.

What changed

3 trading accounts (instead of 1)

UTA Provider NL Positions
Alpaca Paper alpaca $52,840 AAPL · NVDA · GOOG · AMD (stocks)
IBKR Demo ibkr $247,310 SPY · QQQ · TLT · AAPL options (mix incl. underwater P&L)
Binance Spot ccxt $15,032 USDT BTC · ETH (spot)

Per-UTA AccountInfo, Position[], and snapshot summaries served from the trading handler. The equity curve generator uses a seeded random walk (per-UTA distinct vol + drift) so the Portfolio chart shows plausibly-trending lines that stay consistent across page reloads — visitors who refresh see the same state.

6 news articles

Reuters / Bloomberg / CNBC / WSJ / CoinDesk spread across the last 22 hours covering AAPL Q1, NVDA capex, Fed minutes, BTC, SPY, TLT. The AAPL article (30m ago) ties to the Inbox AAPL research from PR-3 (5m ago) — completes the narrative "news landed → agent dug in → wrote up the deceleration signal".

4 cron jobs

  • Morning market prep — weekdays 8:30 AM, enabled
  • EOD snapshot + journal — weekdays 4:05 PM, enabled
  • Weekly position review — Fridays 5 PM, disabled (shows the toggle state)
  • AAPL watch alert — every 15m, enabled (ties to AAPL narrative)

Mix of cron-syntax vs every-N-minutes; mix of enabled/disabled to exercise the UI states.

Skipped (intentional)

  • Topology graph fake — Dev page only, low marketing value
  • Populated agent-status log — PR-3's events SSE already carries the "system is alive" signal at the more visible surface

Verification

Check Result
pnpm -F open-alice-ui exec tsc -b clean
pnpm -F open-alice-ui build (prod) zero fixture leak in main chunk (Alpaca Paper, Binance Spot, Morning market prep, demoCronJobs, demoNewsArticles — all absent)
pnpm dev:demo + Playwright portfolio chart renders the random-walk equity curve + cumulative equity numbers ($315,182.71 total across 3 UTAs); news page lists all 6 articles with source badges + category labels

Stage 2 wrap-up

This PR closes Stage 2. With #221#222#223#224 merged:

  • Vercel-deployable static-mode bundle
  • PTY transcript replay + browser-side recorder for capturing real sessions
  • Coherent flagship scenario (Inbox AAPL report ↔ workspace session ↔ live markdown render)
  • Rich secondary fixtures (3 UTAs / equity curves / news / cron)

What's NOT in Stage 2 (could become Stage 3 if marketing-grade demo is the goal):

  • Real recorded transcript replacing the hand-crafted AAPL one — needs user to run the recorder tool on a live session
  • In-memory mutation persistence (creating a cron job in demo mode, having it appear in the list)
  • Persistent dismissable "Demo Mode" banner with deep links to specific scenarios
  • Multiple workspace transcripts the visitor can pick between

Test plan

  • tsc -b clean
  • Prod build: no fixture string leaks in main chunk
  • Demo build still produces valid bundle
  • Portfolio shows multi-UTA chart + totals
  • News page lists 6 articles with metadata
  • Manual: visitor flow on Vercel preview — start at /inbox, click report, jump to workspace, watch terminal replay (deferred to user after deploy)

Boundary touch

None — no trading / auth / broker / migrations code modified.

🤖 Generated with Claude Code

Fills out the long tail of fixture content so the demo doesn't look
gutted once a visitor scrolls past the Inbox/workspace flagship flow
from PR-3.

**3 trading accounts (instead of 1)** —
- Alpaca Paper: \$52,840 NL, 4 stock positions (AAPL/NVDA/GOOG/AMD)
  with realistic avg-cost vs market-price spreads
- IBKR Demo: \$247,310 NL, mix of ETFs (SPY, QQQ, TLT) + an
  underwater AAPL options position to show non-trivial P&L
- Binance Spot: \$15,032 NL (USDT base), BTC and ETH spot positions

Equity curve generator uses a seeded random walk per UTA (30 daily
points, distinct vol + drift per account) so the Portfolio chart
shows plausible-looking lines without the numbers shifting on each
page reload — visitors who refresh see consistent state.

**6 news articles** — Reuters/Bloomberg/CNBC/WSJ/CoinDesk spread
across the last 22 hours covering AAPL Q1, NVDA capex, Fed minutes,
BTC, SPY, TLT. The AAPL article (timestamped 30m ago) ties to the
Inbox AAPL research from PR-3 (timestamped 5m ago) — "news landed →
agent dug in → wrote up the deceleration signal".

**4 cron jobs** — Morning market prep (weekdays 8:30 AM), EOD
snapshot + journal (weekdays 4:05 PM), Weekly position review
(Fridays 5 PM, disabled), AAPL watch alert (every 15m). Mix of cron-
schedule vs every-N-minutes formats; mix of enabled vs disabled.

Skipped from this PR: topology graph fake (Dev page, low marketing
value), populated agent-status log (the events SSE in PR-3 already
carries the "system is alive" signal).

Verified:
- pnpm -F open-alice-ui exec tsc -b clean
- pnpm -F open-alice-ui build (prod): zero fixture name leaks in main
  bundle (`Alpaca Paper`, `Binance Spot`, `Morning market prep`,
  `demoCronJobs`, `demoNewsArticles` — all absent)
- pnpm dev:demo + Playwright: portfolio page renders chart with the
  random-walk curve + cumulative equity numbers, news page lists all
  6 articles with badges, sidebar shows 3 trading accounts

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@luokerenx4 luokerenx4 merged commit 633afec into feat/ui-demo-stage2-scenario May 29, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant