# Codex Resume Prompt — Trading Web Redesign + Cross-Workspace Audit

Paste the contents of this file into a fresh Codex / Claude / Gemini agent
session running on the **same machine** that did the original work
(`Sar-M2-bl`, user `saravana`). The agent will pick up where the previous
session left off and drive toward 100% completion of the audit backlog plus
opportunistic improvements.

The short "copy-paste" version of this prompt lives at the bottom of this
file. The long version is the full agent brief — the short one tells the
agent to read the long one.

---

## ── BEGIN AGENT BRIEF ──

You are resuming an in-progress audit + redesign across two sibling repos on
this machine. Two prior sessions already shipped the foundational work and
the audit. Your job is to drive the open audit items to ✅ done with
high-quality, no-regression commits. Do not start over. Do not skip the
verification gates.

### Step 0 — Required reads (do this BEFORE writing any code)

Read these four files in order. They are the source of truth — anything
contradicting them is wrong:

1. `/Users/saravana/BytelystAI/trading/learning_ai_invt_trdg/docs/HANDOVER.md`
2. `/Users/saravana/BytelystAI/trading/learning_ai_invt_trdg/docs/AUDIT_REDESIGN.md`
3. `/Users/saravana/BytelystAI/learning_ai/learning_ai_common_plat/docs/HANDOVER.md`
4. `/Users/saravana/BytelystAI/learning_ai/learning_ai_common_plat/docs/AUDIT_PLATFORM.md`

After reading, summarise in your own words: which items are ✅ done, which
are 🟦 in progress, which are ⬜ open, and which one you are about to
attempt. If your summary disagrees with the audit doc tables, re-read.

### Step 1 — Environment

This machine has the private-registry token in `~/.zshrc`. Every shell you
spawn must `source ~/.zshrc` before running `pnpm`. Without it `pnpm`
prints `WARN: Failed to replace env in config: ${GITEA_NPM_TOKEN}` and the
install will fail on private `@bytelyst/*` packages.

```bash
source ~/.zshrc           # gets GITEA_NPM_TOKEN onto your shell
echo "$GITEA_NPM_TOKEN" | wc -c     # should print 41 (40 chars + newline)
```

### Step 2 — Verification gates (run BEFORE and AFTER every change)

You MUST run the appropriate gate before claiming any item is ✅ done. If
a gate fails after your change, you broke something — fix it before
committing. Do NOT --no-verify. Do NOT skip hooks.

**Trading repo gates** (`cd /Users/saravana/BytelystAI/trading/learning_ai_invt_trdg`):

```bash
npm --prefix web run typecheck            # → exit 0
npm --prefix web run build                # → ✓ built
npm --prefix web test                     # → 151+ pass / ≤4 known fails
npx tsc --noEmit -p backend/tsconfig.json # → exit 0
```

**Platform repo gates** (`cd /Users/saravana/BytelystAI/learning_ai/learning_ai_common_plat`):

```bash
source ~/.zshrc
pnpm typecheck                            # → exit 0
pnpm test                                 # → ~2,200 pass
pnpm lint > /tmp/lint.log 2>&1            # at the start: 85 pre-existing
                                          # errors. After your fix: count
                                          # MUST go down, not up.
```

The 4 known trading test failures are documented as audit items F7+F8.
They are NOT regressions. If you see >4 failures, you regressed.

### Step 3 — Priority queue (work top-down)

These are ordered for highest-value-per-hour. Pick one, finish it, commit,
push, tick the audit doc, then move to the next. Do not parallelise
unrelated buckets.

| #  | Repo     | Item   | What to do                                                                                          | Effort |
| -- | -------- | ------ | --------------------------------------------------------------------------------------------------- | ------ |
| 1  | trading  | E2     | Regen root `pnpm-lock.yaml` so CI sees `react-router-dom`, `@monaco-editor/react`, `@dnd-kit/*`     | 5 min  |
| 2  | trading  | F7+F8  | Fix the 4 pre-existing test failures (`useTabFeatureFlags` cache + `EntryForm` alert)               | 1-2 hr |
| 3  | trading  | B1     | Build RSI/MACD/Bollinger overlay toggles in `web/src/views/HomeView.tsx`'s `StockChart`             | 2-3 hr |
| 4  | trading  | B2+B3  | Wire ★ Watchlist + 🔔 buttons in `TickerHeader`; pull company name from `fetchResearchProfile`        | 1-2 hr |
| 5  | trading  | C2     | Add in-memory FMP cache (30-min TTL, key by full URL) — free tier is 250 req/day                    | 1-2 hr |
| 6  | trading  | F6     | Tests for the 7 new backend endpoints (chart/bars, news, indices, research×3, screener)             | 2-3 hr |
| 7  | trading  | C1     | Sandbox or refuse `strategyConfig.type === 'code'` in `/api/backtest/run`. Currently no handler.    | 4-6 hr |
| 8  | trading  | B6     | Make `CodeStrategyEditor` "Save" actually persist via `createTradeProfile` (not just localStorage)  | 1 hr   |
| 9  | trading  | D1     | Skeleton loaders for News, ResearchCards, Screener (replace plain "Loading…" text)                  | 1-2 hr |
| 10 | trading  | D5     | Responsive layout: collapse sidebar + hide right panel under 1024 px                                | 3-4 hr |
| 11 | platform | P-sweep| Per-package `pnpm --filter <pkg> lint:fix` for the 85 surfaced errors. ONE COMMIT PER PACKAGE.      | 2-4 hr |
| 12 | trading  | G1-G4  | Mobile parity: news/research/screener tabs in Expo app. Code editor stays web-only.                 | days   |

For each item the full description + acceptance criteria is in the
corresponding audit doc row. Do not invent your own scope.

### Step 4 — Commit conventions

The previous sessions used these conventions. Match them exactly so the
audit history stays grep-able.

- One audit item (or one bucket of related items) per commit.
- Subject line: `<type>(<id>): short description` — e.g.
  `fix(B1): wire RSI/MACD/Bollinger overlay toggles`,
  `test(F6): add coverage for /api/chart/bars`,
  `chore(P-sweep): pnpm --filter @bytelyst/auth lint:fix`.
- Body explains the WHY in present-tense prose, not a bullet list of files.
  Reference audit IDs at the bottom: `Refs: docs/AUDIT_REDESIGN.md item B1.`
- End with `Co-Authored-By: <model> <noreply@anthropic.com>` (use your
  actual model name).
- After committing, **edit the audit doc table row**: change `⬜` → `✅`
  and put the short commit hash in the "Fix commit" column.

### Step 5 — Things to NEVER do

1. **Do not commit `pnpm-lock.yaml` regenerated as a side effect.** If
   your work changes deps, mention it in the commit body and let the
   reviewer decide. The platform repo currently has a +2.9k/-8.5k lockfile
   diff sitting in the working tree from the prior session — leave it
   alone unless you specifically own it.
2. **Do not touch the nomgap WIP files** in the platform repo
   (`docker-compose.ecosystem.yml`, `products/nomgap/product.json`,
   `services/platform-service/src/modules/flags/seed.ts`). They belong to
   another contributor's in-progress migration.
3. **Do not refactor unrelated code** because you "noticed it while
   nearby". Open a new audit row instead and let the human prioritise.
4. **Do not skip verification gates.** "TypeScript passes locally" is not
   verification — running the gate command and seeing exit 0 is.
5. **Do not bulk-fix the 85 platform lint errors in one commit.** Each
   package needs eyeball review (the autofixer can remove unused exports
   that are public API). One package = one commit.
6. **Do not push --force to main.** Backups exist
   (`backup/main-20260504-061739` in trading,
   `backup/main-20260504-062733` in platform) but rewriting public main
   history is still the wrong move.

### Step 6 — When you finish a chunk

After each commit + push:

1. Run the verification gates again (yes, again — the push hooks may have
   reformatted files).
2. Update the audit doc row.
3. Briefly tell the human: which item ID, which commit hash, what gate
   output you saw. Three sentences max.

If you complete an entire bucket (all rows ✅), open a new section in the
audit doc called "Bucket X — closed" with a one-paragraph retrospective
(what was harder than expected, what surfaced as follow-up work).

### Step 7 — When to stop and ask

Stop and ask the human, do not guess, when:

- An audit item's acceptance criteria is ambiguous and the existing code
  has no precedent.
- A fix would change a public API surface (exported function signature,
  endpoint contract, schema field).
- A gate fails and the failure is in code you didn't write and have no
  context for.
- You have closed everything in your priority slice and want to know what
  to pick up next.

Otherwise: keep going. The point of this brief is so you don't have to
ping the human every 10 minutes.

## ── END AGENT BRIEF ──

---

## Short copy-paste prompt for Codex

Paste this single block into Codex / Claude / Gemini:

```
Resume the trading-redesign + platform-audit work on this machine. Read
/Users/saravana/BytelystAI/trading/learning_ai_invt_trdg/docs/CODEX_RESUME_PROMPT.md
in full first — it contains your full brief, the priority queue, the
verification gates, and the commit conventions. Then start at the top of
the priority queue (item E2, regen the root pnpm-lock.yaml) and work
down, one commit per audit item, ticking the audit doc as you go.
Source ~/.zshrc in every shell so GITEA_NPM_TOKEN is available. Do not
skip verification gates. Do not touch the nomgap WIP files. When done
with a chunk, push and tell me the commit hash + gate output in three
sentences.
```
