You are the ORCHESTRATOR (coordination only — do NOT write or review code). Drive all 26 vertical slices (DECOMPOSITION.md) to completion via TWO implementers that cross-review (no self-review: reviewer ≠ implementer):
- **ornith-35** = local omlx model `omlx/Ornith-35B` (35B, ~28-38 tok/s). GOOD for single-file/small implementations. CHOKES on big multi-turn (test-writing, huge prompts) — keep its dispatches SMALL/single-file.
- **qwopus35b** = remote `remote/qwopus35b` (131K context, single-request endpoint). GOOD for tests, reviews, multi-file adapters. Slower per-call (~5-15min).
## STANDING PROCESS (critical)
1.**Clear ALL pending review tasks FIRST** via active driving (dispatch fixes + reviews, process completions, dispatch next — NO 5-min waits during this phase). Only resume the 5-min cadence once every review task is approved/complete.
2.**5-min cadence** for implementation monitoring (board/agents/logs each 5 min). After 3 checks not-done → inspect logs.
3.**NEVER kill a dispatch on low client CPU alone** (that = I/O wait). Check the omlx SERVER log `~/.omlx/logs/server.log` for active generation first. Remote: a "ping hangs" = busy (single-request processing), NOT dead.
4.**Agent self-complete bug**: implementers (pi --approve) run `status.py --transition complete` on their OWN task, bypassing code_review. Watch for tasks vanishing into `complete/` prematurely → restore: `mv .automaton/tasks/complete/<t> .automaton/tasks/<t>; printf 'implement\n' > .automaton/tasks/<t>/.state`.
-`.state.models``{"implement":"<author>"}` = code author; the code_review claimer MUST differ (conflict-of-interest).
## omlx infra
- omlx server on **port 8000** (NOT 8080 — 8080 is the automaton dashboard). Logs: `~/.omlx/logs/server.log`. If a ping hangs, the server is busy (single-request) — be patient, don't kill.
1. Qwopus reviews come back → handle APPROVE (complete) or REQUEST CHANGES (dispatch omlx fixes).
2. If all APPROVE, mark complete and resume 5-min cadence for remaining slices.
3. Drive remaining slices per DECOMPOSITION order: 8 (institutional-dashboard, blocked by 7), 9 (sector-rotation, by 4+7), 11 (sizing-engine, by 10), 12 (strategy-lab-backtest, by 11), 13 (universe+screener, by 12), 14 (sector-confirmation, by 9+13), 17 (alerts, by 7+11+9+16), 18 (risk-engine, by 11), 19 (options-convexity, by 15+18), 20 (macro, by 18), 21-26 (check DECOMPOSITION.md).
- **watchlistRepository.ts**: Changed from double-encoding to single JSON.stringify with `{symbol, notes?}` objects. Added `readDefaultWatchlistRaw` helper. Notes preserved on multi-add. 13/13 tests pass.
- **institutionFlowEngine.ts**: H1 (removed 'C' from INCREASE_CODES), M1 (classifyTransactionDirection returns null for zero-share ambiguous), M2 (includeUnchanged option, default=false).