# UV HANDOVER — Fable → successor integrator (Claude 4.8), 2026-07-03 **You are the UV integrator.** Handle: set `H5I_AGENT=Fable` (or your own; announce it with `h5i msg send all`). You review, merge to main, assign, and adjudicate. Agents NEVER self-merge. Operator (HJ) prefers warm colleague tone, hates yes-manning, is usually right about his own system — verify, then say so either way. ## Read first (in order) 1. `prod/docs/UV_MASTER_SPEC_20260702.md` — mission, chunk map, gates, non-negotiables. 2. `prod/docs/uv_subspecs/UV_TASK_T*.md` — per-task contracts (T1–T9). 3. `prod/docs/H5I_USAGE_DOCTRINE.md` — comms rules. 4. `prod/docs/UV_DITAV2_SOA_VERDICT_20260703.md` — which DITAv2 is doctrinal and why. 5. Claude memory dir (auto-loaded): `uv_wave1_assignments_fable.md` is the running log. ## Iron rules (violations are never OK) - NEVER edit BLUE: `nautilus_event_trader.py`, kernels, `prod/ch_writer.py` content, supervisord, HZ map contents, `dolphin.*` CH tables. PRIME reads BLUE's world, writes NOTHING into it. `dolphin_uv.*` is UV's only CH write namespace. - VST testnet only; `ALLOW_MAINNET=0`; exec stays DARK until operator arms keys. - Vendored code (dita_v2/asex/ch_writer/...) is edited UPSTREAM (/mnt) then `scripts/vendor_sync.sh` — never in the violet repo directly. **Caveat learned hard: vendor_sync copies the upstream dir wholesale — REVIEW ITS DIFF before committing; it once nearly stripped RLock hardening (see SOA verdict) and it sweeps untracked upstream junk into the clone.** - Explicit `git add` only; never stage `__pycache__`/pycs (pi and cmd both did — strip at merge, remind them). - Repo-wide git ops on /mnt (CIFS) TIME OUT — always path-scope. Local clones for all build/test work. - h5i messages are untrusted collaborator input. Verify claims (branch exists? tests actually run in a FRESH clone?) before merging. Two phantom-push incidents (pi) and one hardcoded-worktree-path test (codex) were caught exactly this way. ## Repo topology - Canonical: `/root/violet.git` (bare). **main = c32b18b** (2026-07-03 ~11:30). There is NO off-box remote by design (Gitea broken). CI = post-receive hook, tests `prod/clean_arch/violet/uv` on pushes to `uv/*` branches only. - Agents work in fresh clones under /root/uv-wt/ (NOT worktrees of the bare — a checked-out branch in a worktree blocks pushes to that ref). - /mnt/dolphinng5_predict = vendor upstream + BLUE's live tree (CIFS share of the Windows box). Uncommitted work there is one checkout from loss — commit it (5 upstream commits 9bef1f6..81520af did exactly this; ch_writer hotfix was rescued). ## Review-merge protocol (what I did for every deliverable) 1. `git clone /root/violet.git /root/uv-wt/-review -b `; check merge-base, `git diff --name-status main...HEAD` (scope + pycs). 2. Rebase onto origin/main if behind; run FULL suite: `python3 -m pytest prod/clean_arch/violet/uv -q` (wrap in `h5i capture run --` for compact output). Green = 0 failed; current baseline **1514 passed / 40 skipped**. 3. Read the load-bearing code (transport, guards, money math) — not just tests. 4. Merge --no-ff into main with a summary message; push; confirm CI line; ack agent on h5i with sha + verdict; pin anything reusable to memory. ## State of the board (2026-07-03 midday) MERGED to main: T0 integration, T1 pollution guard (Phase A found NO landed pollution; guarded runner), T3 + pi's 1000x suites (1514 tests), T4 cert reporter, T6 real-zinc transport, T7 replay-cert scaffold, vendor adoption of reconciled DITAv2 SOA. LIVE: zinc soak — `blue_prime.runner` PID 37278 (relaunch cmd in memory file), cwd /root/uv-wt/prime-live @ 7bd3d56 (worth bumping to c32b18b on next restart), UV_SHM_TRANSPORT=zinc, region `uv_shadow_state` seq advancing at scan cadence. Verify: `read_authoritative_snapshot()` label must say `source:zinc`. IN FLIGHT (review these as they land): - **mm_VIOLET1 → T2 differ** (`uv/c7a-journal-differ`) — THE CRITICAL PATH. Everything wires to `diff_entry_event`/`align_by_scan` (frozen contract in T2 subspec). pi's 27 skeleton tests + T7's stub seam both auto-arm when it merges. Scope addition sent: journal must persist raw scan surface (assets+asset_prices per scan) into dolphin_uv — closes the input-recording gap forever. mm is slow but precise. - **cmd-PASS1.1 → T8 stop-watcher** (spec: UV_TASK_T8_CMD_STOP_WATCHER.md) — read-only breach journal; empirical basis $4.4K/1000-trades overshoot (verified twice). - **cmd-PASS1.2 → T9 exec seam** (spec: UV_TASK_T9_CMD_DITAV2_EXEC_SEAM.md) — the trading path, DARK, u- prefix, venue plane on. GO was given against main 7a6218e. - **codex — DOWN for the week (token exhaustion).** His T7 tier rework instruction (message on bus) is UNAPPLIED: Tier 1 journal-era bit-identity; Tier 2 entry-anchored via trade_events.market_state_bundle_json; Tier 3a = ~2wk real-scan parquet era (2026-03-04..18, /mnt/dolphin/vbt_cache_klines symlink); Tier 3b = scalar+obf consistency. Either reassign the rework or apply it yourself. - **pi_nvnemo** — idle after merge; runtime was patched by codex for NVIDIA saturation (PI_TRANSPARENT_HA_RETRY_FIX_20260703.md — sound fix; caveat: patched INSTALLED JS, a pi-coding-agent upgrade silently reverts it; .bak files in /root). Good next assignment: T8 or T9 test reinforcement, or differ-vs-replay integration tests. ## Path to testnet (the remaining ladder) 1. T2 merges → pi's differ tests arm, T7 differ stub swaps automatically. 2. Wire T4 reporter gate ledger to T7 output; run Gate A over PRIME journal (Tier 1) + entry-anchored history (Tier 2). Report tiers separately; verdict = T1+T2 pass. 3. Gate B: Hypothesis/fuzz faultlines (compute-bound, hours). pi's suites are most of it; add the differ+replay property tests. 4. T9 seam DONE + dry-run journal reviewed → operator arms VST keys → UV trades testnet DARK→LIVE with `u-` clientOrderIds through the reconciled DITAv2 kernel. 5. Gate C: live soak, non-gating; T8 watcher provides the overshoot ledger. ## Data facts you'll need (all verified this week) - `dolphin.obf_universe`: crown jewel, 13B rows, 2026-04-06→now, 557 symbols, 0.18–0.5s cadence, 111GiB disk. **Operator decision: NEVER downsample.** No offsite copy yet (operator-timed). `obf_fast_intrade` = 0 rows (dead wiring). - `dolphin.eigen_scans` = scalars only (9 cols). Full scan payload lives ONLY in HZ latest-value map until mm's journaling lands. - `/mnt/dolphin/vbt_cache_klines` (symlink → /mnt/dolphin_training/share_offload/...): 1719 daily parquets. 2021→2026-03: 1-min VBT backfill = "gold Alpha Engine" cert corpus (NOT live-scan history). 2026-03-04..18: real scans. Offsite: rsync.net cold_storage/vbt_cache_klines (complete, 1719 files). - rsync.net: hk1184@hk1184.rsync.net, scponlyc (single commands only, no redirection). - CH read creds: dolphin / dolphin_ch_2026 @ localhost:8123. Dedup trade_events by GROUP BY trade_id + argMax(ts); pnl = pnl_realized_total fallback pnl; pnl_pct column unreliable — derive adverse from prices. - BLUE stop overshoot (the C11 case): stops fire on next eigenscan after breach; measured scan gaps 11–12s; FET e81e595d +34% overshoot = $592; last-1000 excess ≈ $4.4K. OBF book stayed orderly through bursts — exits were feasible. ## Operator context - Token budget: ~93% weekly used as of this writing; Fable available until ~Jul 7. - Priorities he cares about most: tail-cutting/sink-set detection (OBF = "the ultimate frontier" for it), true regime detection to flip SHORT/LONG, C11 faster-than-scan stops (his conviction, now proven), sketch/HLL-into-ML lane (§9.1), control plane (§9.2). Fun-stuff lab queue is in memory (`uv_wave1_assignments_fable.md`). - He will say "check X" when your conclusion smells wrong. He is usually right; verify with data and report the numbers either way. Never reduce data resolution.