chart/docs/NEXT_STEPS.md
Chris Amow 372617b08c Split the plan from the log of what actually happened
One file was trying to be two things: a spec written to be executed
top-to-bottom, and a dated record of everything that went wrong on the way. At
1,882 lines it did neither well, and the log was 36% of it — which is why the
plan's opening went unmaintained for days while the log grew every hour.

docs/plan.md keeps the decisions and the reasoning behind them, including the
risk register. docs/implementation.md takes the dated entries: the problems, the
wrong theories, the measurements that settled them. Git already says what
changed; that file says why it was hard, which is the part worth reading before
debugging something similar. Most entries describe something that looked like
one bug and turned out to be another.

Each points at the other, and the four referring files — AGENTS.md, README.md,
NEXT_STEPS.md and async_refactor.md — now point at whichever half they meant.
Git tracked the rename, so history follows plan.md rather than starting over.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-11 16:29:47 -05:00

76 lines
3.3 KiB
Markdown

# Current recommendations
Last reviewed: 2026-08-11 05:58 CDT.
This file is the short list of work worth considering next. Verified history,
measurements and completed work remain in `docs/implementation.md`, and the
decisions behind them in `docs/plan.md`.
## Fix next
### Deepen freshness telemetry
The status bar now reports when the browser received its latest snapshot or bar.
A later server-side implementation can distinguish market closure, source delay
and transport failure by carrying exact trade time, the last settled minute,
source receipt time and an application heartbeat over the existing WebSocket.
Any stale threshold must account for Yahoo's declared delay.
## Mobile authoring
The detailed plan is in `docs/mobile_enhance.md`. Recommended first tranche:
1. Add touch-sized invisible hit regions without enlarging the visual marks.
2. Keep the first tap's trendline anchor visible with price/time, Cancel and
Undo anchor.
3. Add a compact sticky mobile tool rail next to the chart.
4. Add a selected-drawing action bar so End here and Delete do not require
right-click or a hardware keyboard.
Prefer tap-tap trendlines on touch devices. Reserve one-finger vertical movement
for page scrolling, retain horizontal chart panning and pinch zoom, and offer a
chart-focused landscape/fullscreen mode.
## Market-data alternatives
No durable unauthenticated source of free real-time CME `/ES` data has been
identified. CME real-time access is normally broker-subsidized and tied to an
authenticated exchange entitlement, not a public free API.
Practical ranking:
1. Keep Schwab for verified entitled real-time streaming and Yahoo for delayed
development/history seeding.
2. Pilot Tastytrade/dxLink on a live futures-approved account. Confirm actual
delay, candle retention, continuous/root symbol behavior and server-side-use
terms before integrating it.
3. Consider IBKR as the strongest low-cost fallback if literal zero cost is not
required; resolve and roll the active contract explicitly for live data.
4. Consider TradeStation only if its account-funding/API-access requirements are
already acceptable.
5. Evaluate Nasdaq Data Link CHRIS only for continuous daily seeding after
confirming current freshness and free-key availability.
Do not build a backend around scraped TradingView, CME, Barchart, Investing.com,
MarketWatch or Stooq pages. Public display access is not a supported market-data
API or a CME redistribution license.
References:
- Tastytrade streaming: https://developer.tastytrade.com/streaming-market-data/
- IBKR market data: https://www.interactivebrokers.com/en/pricing/research-news-marketdata.php
- TradeStation API: https://www.tradestation.com/platforms-and-tools/trading-api/
- Nasdaq Data Link API: https://docs.data.nasdaq.com/
## Deferred test tied to production work
When startup seeding is changed to bulk-load bars, add an integration test that
asserts expensive level rebuilding happens once and that final stores/levels
match incremental ingestion. Do not assert a wall-clock duration and do not add
a test that merely codifies today's slow startup.
## Test and deployment commands
README is authoritative for local pytest, local Playwright E2E, pre-deploy and
production smoke-test commands. Browser E2E creates and deletes drawings, so it
must remain pointed at the local stack rather than production.