docs(uv): testnet push — T10 Gate A/B run spec, T12 promotion bridge spec, operator arming checklist

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
Codex
2026-07-03 15:14:38 +02:00
parent c725bae815
commit a098962eec
3 changed files with 142 additions and 0 deletions

View File

@@ -0,0 +1,54 @@
# UV TESTNET ARMING CHECKLIST — DARK → LIVE on BingX VST
**For the operator.** Execute top to bottom; every box is a stop-if-red. The integrator
(Fable/successor) signs §12; only YOU execute §3.
## §1 — Certification complete (integrator signs)
- [ ] Gate A verdict PASS in `prod/docs/uv_cert/GATE_AB_RUN_<ts>.md` (Tier 1 + Tier 2
green; Tier 3a/3b drift-rates reported and explained). T10 merged.
- [ ] Gate B verdict PASS (fuzz surface green, deterministic re-run identical).
- [ ] T2P1 merged: journal writes verified against real DateTime64(3); raw scan surface
(`assets[]`, `asset_prices[]`) persisting per scan into dolphin_uv; creds never
in URL.
- [ ] Zinc soak healthy ≥24h on current main: region seq at scan cadence, TUI
`source:zinc`, RSS flat (ram block), zero writes outside dolphin_uv (guard log).
## §2 — Seam dry-run reviewed (integrator signs)
- [ ] T9 merged: 3 injected intents fully mapped + journaled, ZERO venue calls (DARK
default proven); `u-` prefix litmus green; mainnet-block mutation test green.
- [ ] T12 merged: bridge inert-by-default proven; shadow-mode journal shows SUPPRESSED
intents recorded during a live soak window — review that excerpt: are these the
trades you'd want taken?
- [ ] End-to-end DARK rehearsal: PRIME live scan → bridge (suppressed) → verify the
would-have-been intent in dolphin_uv.exec_journal matches the journaled decision
bit-for-bit.
## §3 — Arming (OPERATOR ONLY, in this order)
1. [ ] Create VST API keys on BingX testnet (never mainnet keys anywhere near this box's
UV env). Fund the VST account.
2. [ ] Place keys per T9's config seam (env/file per merged T9 README — keys never in
git, never in the repo tree).
3. [ ] Start the seam runner (uv_exec instance) STILL DARK — verify it authenticates,
reads balances, places NOTHING. Check venue telemetry region populating.
4. [ ] Write the arming file: `echo "$(date -Iseconds) <your-initials>" >
/root/uv-wt/prime-live/UV_PROMOTED.arm` and set `UV_PROMOTED=1` on the PRIME
runner env; restart PRIME runner.
5. [ ] FIRST TRADE WATCH: sit on the TUI for the first bridged intent → order. Verify
on the venue: clientOrderId starts `u-`, size/leverage match the journaled
intent, position appears in dolphin_uv.exec_journal with venue echo.
6. [ ] Let it run ONE session. Review: every venue order has a matching BRIDGE row and
journaled decision; PnL accounting sane vs venue statement.
## §4 — Kill / rollback (know it BEFORE arming)
- Instant stop: delete `UV_PROMOTED.arm` (bridge goes inert next scan) — no restart
needed. Harder stop: kill the uv_exec runner (positions remain on venue — close via
venue UI if needed; it is VST money).
- Any anomaly (order without journal row, journal row without order, non-`u-` order,
any write appearing outside dolphin_uv): kill first, forensics second, report on h5i.
## Standing constraints while live
- Gate C (live soak) is observation, not a pass/fail blocker — but the T8 stop-watcher
ledger and the differ (PRIME still shadows BLUE — parity keeps being measured WHILE
UV trades) are the instruments. Divergence trend = stand down and investigate.
- BLUE remains untouched, unthrottled, unshadowed by any of this. If UV ever competes
with BLUE for the same venue account: it must not — separate VST account, always.