VIOLET: CRITICAL parity-disappointment TODO + OA partial spec PASS 3
VIOLET_TODO_CRITICAL.md (prominent review queue):
- 🔴 CRITICAL #1: VIOLET↔BLUE parity report (PASS-2 Task 4, violet_parity_20260616_220412.md)
is VERY DISAPPOINTING — pick-match 1.5%, no-pick 86%, same-asset 13.6%. KEY NUANCE: on the 43
aligned rows sizing is near-identical (lev_err median 0.0) → the divergence is SELECTION /
TIMING / comparison-ALIGNMENT, NOT the sizing math. Root-cause before any soak/V4. (Claude.)
- #2: OA PASS-1 + PASS-2 reported done, NOT yet reviewed — review queue listed.
- #3: future integration/E2E + the pass-vs-sprint nomenclature note (pass = sub-sprint
work-package; V-stage = sprint/epic, matching existing usage).
VIOLET_PART_SPEC_OA_TODO_PASS3.md (lengthy, plan-derived, independent units with shared
interfaces — nothing invented): contracts_v3 (VenueTick/OpenPositionView/ExitDecision) +
VenuePriceFeedPort+BingX adapter, MechanicalExitGuard (armed TP/SL), sub-second SL/ADVSL floor
guard, event-sourced restore from trade_reconstruction, venue lead/lag slippage metric, cadence
per-action Q schedule + telemetry. Each ships + tests standalone; composition map + order given.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-17 09:01:49 +02:00
|
|
|
# VIOLET — CRITICAL TODO / review queue (prominent)
|
|
|
|
|
|
|
|
|
|
Date: 2026-06-17. Single place for the must-not-forget VIOLET items. Review-later, not now.
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
## 🔴 CRITICAL #1 — VIOLET↔BLUE parity is VERY DISAPPOINTING (review + root-cause BEFORE any soak/V4)
|
|
|
|
|
|
|
|
|
|
Report: `prod/VIOLET_dev/reports/violet_parity_20260616_220412.md` (+ `.json`).
|
|
|
|
|
Window 2026-06-14 20:15 → 2026-06-15 21:00. Produced by PASS-2 Task 4 (`parity_report.py`).
|
|
|
|
|
|
|
|
|
|
**Headline:**
|
|
|
|
|
- Pick-match rate: **0.015 (1.5%)** — VIOLET rows 2853, exact pick matches only 43.
|
|
|
|
|
- Same-asset rate: **0.136 (13.6%)**; no-pick: **2465 / 2853 (86%)**.
|
|
|
|
|
- BLUE rows 25941 (scan_eval 25278 + trade_events 663).
|
|
|
|
|
|
|
|
|
|
**KEY NUANCE (where the review should START):** on the 43 rows that DID align, **sizing is
|
|
|
|
|
near-identical** — leverage abs error mean 0.016 / **median 0.0** / max 0.135. So the V3.4
|
|
|
|
|
sizing math (boost/beta/mc_scale/ob/esof/compose) is NOT the problem; the divergence is in
|
|
|
|
|
**ASSET SELECTION / TIMING / the comparison's ALIGNMENT method**. Candidate causes to
|
|
|
|
|
investigate (do not assume — measure):
|
|
|
|
|
1. **Apples-to-oranges population.** BLUE `scan_eval` (25278) is likely per-scan-per-asset
|
|
|
|
|
*evaluations*, while VIOLET rows are *actuated* decisions — the report may be comparing
|
|
|
|
|
different things. Verify the alignment/join semantics in `parity_report.py` first.
|
|
|
|
|
2. **Selection divergence.** VIOLET's `VioletAssetSelector` (IRP) vs BLUE's live selection over
|
|
|
|
|
the same scan stream — are they fed the same universe/lookback at the same scan index? The
|
|
|
|
|
sizing-gap samples (TRX/ATOM/LTC/XLM SHORT with large notional_rel_err) suggest VIOLET fires
|
|
|
|
|
on assets BLUE sized very differently or didn't pick.
|
|
|
|
|
3. **Cadence/actuation.** VIOLET actuates at Q=scan; if its scan alignment or dedupe differs,
|
|
|
|
|
picks land at different scans → counted as no-pick.
|
|
|
|
|
4. **The known structural items** (OB single-shot before V3.4d; mc_scale; live-factor sourcing)
|
|
|
|
|
— re-run parity AFTER V3.4d's persistent-OB launcher + the bit-identity fixes to see if the
|
|
|
|
|
number moves.
|
|
|
|
|
|
|
|
|
|
**Action:** full review of `parity_report.py` + a root-cause pass; fix the alignment OR the
|
|
|
|
|
selection divergence; re-run. This gates a meaningful DARK soak — a 1.5% pick-match makes the
|
|
|
|
|
soak uninterpretable. **Owner: Claude (me), later.**
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
## 🟡 #2 — Review the OA-delegated PASS work (NOT yet reviewed)
|
|
|
|
|
|
|
|
|
|
The parallel agent reports these DONE; none reviewed for correctness / BLUE-compliance yet.
|
|
|
|
|
|
|
|
|
|
**PASS 1** (`VIOLET_PART_SPEC_OA_TODO.md`):
|
|
|
|
|
- `53bdd90` sizing parity-pin tests
|
|
|
|
|
- `12b768b` venue OB provider seam (`venue_ob_provider.py`)
|
|
|
|
|
- `bae9284` base-fraction sizing study (+ archived report)
|
|
|
|
|
|
|
|
|
|
**PASS 2** (`VIOLET_PART_SPEC_OA_TODO_PASS2.md`):
|
|
|
|
|
- `parity_report.py` (Task 4 — the report above) + test
|
|
|
|
|
- `tradeability.py` (Task 6) + test
|
|
|
|
|
- `test_violet_v3_decision_latency_gate.py` (Task 5) → report `violet_v3_decision_latency_2026...`
|
|
|
|
|
- `test_violet_replay_determinism_gate.py` (Task 7) → report `violet_replay_determinism_2026...`
|
|
|
|
|
|
VIOLET OA: partial spec PASS 4 — next plan units (entry gate, exits, accounting, exec-intent, feed)
VIOLET_PART_SPEC_OA_TODO_PASS4.md — six plan-derived independent units continuing from PASS 3,
extending the shared contracts_v3 vocabulary (adds ExecIntent / CapitalState / VolGateResult /
AlphaBar):
14. Volatility regime gate (faithful vol_ok — the entry precondition).
15. AlphaExitEngineV7 wrapper (V3a deferred — wrap BLUE's exit engine as-is, discretionary pri 2).
16. Capital/economics provenance ledger (capital = anchor + Σ deltas, event_seq, exactly-one-row).
17. Execution-intent emitter, DARK (V4 boundary — ShadowDecision → ExecIntent, log-only sink).
18. Alpha-side reactor data feed (V2 NT Binance DATA spike → AlphaDataFeedPort, data-only).
19. MAX_HOLD + MEAN_REVERSION scan-driven exit timers.
Each ships + tests standalone; composition map + recommended order (14→16→15→19→17→18) + the same
HARD RULES + commit/branch policy. VIBRISS/adaptive-TP explicitly excluded.
Also: added PASS 3 + PASS 4 to the review queue in VIOLET_TODO_CRITICAL.md §2.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-17 09:27:23 +02:00
|
|
|
**PASS 3**: `VIOLET_PART_SPEC_OA_TODO_PASS3.md` (issued 2026-06-17) — venue feed / mechanical
|
|
|
|
|
exits / SL floor / event-restore / slippage / cadence; review when done.
|
|
|
|
|
|
|
|
|
|
**PASS 4**: `VIOLET_PART_SPEC_OA_TODO_PASS4.md` (issued 2026-06-17) — vol gate / V7 exit wrapper /
|
|
|
|
|
economics ledger / exec-intent / alpha data feed / time exits; review when done.
|
VIOLET: CRITICAL parity-disappointment TODO + OA partial spec PASS 3
VIOLET_TODO_CRITICAL.md (prominent review queue):
- 🔴 CRITICAL #1: VIOLET↔BLUE parity report (PASS-2 Task 4, violet_parity_20260616_220412.md)
is VERY DISAPPOINTING — pick-match 1.5%, no-pick 86%, same-asset 13.6%. KEY NUANCE: on the 43
aligned rows sizing is near-identical (lev_err median 0.0) → the divergence is SELECTION /
TIMING / comparison-ALIGNMENT, NOT the sizing math. Root-cause before any soak/V4. (Claude.)
- #2: OA PASS-1 + PASS-2 reported done, NOT yet reviewed — review queue listed.
- #3: future integration/E2E + the pass-vs-sprint nomenclature note (pass = sub-sprint
work-package; V-stage = sprint/epic, matching existing usage).
VIOLET_PART_SPEC_OA_TODO_PASS3.md (lengthy, plan-derived, independent units with shared
interfaces — nothing invented): contracts_v3 (VenueTick/OpenPositionView/ExitDecision) +
VenuePriceFeedPort+BingX adapter, MechanicalExitGuard (armed TP/SL), sub-second SL/ADVSL floor
guard, event-sourced restore from trade_reconstruction, venue lead/lag slippage metric, cadence
per-action Q schedule + telemetry. Each ships + tests standalone; composition map + order given.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-17 09:01:49 +02:00
|
|
|
|
VIOLET OA: partial spec PASS 5 — mock-BingX execution stack (quirks seam-only, deferred)
VIOLET_PART_SPEC_OA_TODO_PASS5.md — the DARK mock-BingX execution stack so the full order
lifecycle is buildable/testable with zero keys/risk (V4-live later = swap mock for real client).
Five independent units extending contracts_v3 (Order/OrderAck/Fill/OrderStatus/PositionDelta):
20. Execution contracts + QuirkProfile seam registry (no quirk logic).
21. Mock BingX order FSM (legal lifecycle, partials, reject, reduce-only-increase rejection).
22. Mock BingX venue adapter (port-conformant, injectable fill model, quirk hooks INERT by default).
23. Fill→position/PnL reducer (PnL from fill_price ONLY; ×leverage-aware) → PositionDelta.
24. DARK E2E gate: ExecIntent → router/driver → mock venue → fill reducer → PASS-4 ledger.
CRITICAL per operator: a prominent ⚠️ section makes explicit that BingX "quirks" (zero-wb WS
frames, ownership/foreign-fill collision, bound-price poison, ×leverage notional, settle desync,
reduce-only edge, setLeverage race, dead .pro TLS) are EXPLICITLY OUT OF SCOPE for PASS 5 — the
mock carries injection SEAMS (QuirkProfile, default OFF) to accommodate them LATER, and a real-key
boundary smoke remains MANDATORY before V4-live. Quirks sourced from PINK orphan/reconcile +
DITAv2 audit memory.
Standing ready to write PASS 6–9 (exec internals/reconcile, V5 selection+slots, V6 bible
consumers, economics/observability). Added PASS 5 to the review queue in VIOLET_TODO_CRITICAL.md.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-17 10:26:15 +02:00
|
|
|
**PASS 5**: `VIOLET_PART_SPEC_OA_TODO_PASS5.md` (issued 2026-06-17) — MOCK-BINGX execution stack
|
|
|
|
|
(exec contracts + QuirkProfile seams / order FSM / mock venue / fill reducer / DARK E2E gate).
|
|
|
|
|
NOTE: BingX "quirks" are SEAM-ONLY here (default OFF) — a later quirk-injection pass + a mandatory
|
|
|
|
|
real-key boundary smoke are required before V4-live; review when done.
|
|
|
|
|
|
2026-06-17 10:37:32 +02:00
|
|
|
**PASS 6**: `VIOLET_PART_SPEC_OA_TODO_PASS6.md` (issued 2026-06-17) — execution INTERNALS
|
|
|
|
|
(fill-pump/ownership filter, reconcile/zero-wb guard, TTL-requote, orphan handling) + the
|
|
|
|
|
QUIRK-INJECTION gate that flips PASS-5's QuirkProfile flags ON and proves each handler neutralizes
|
|
|
|
|
the quirk. Mirrors PINK's production fixes (pink_direct.py). Real-key smoke still MANDATORY before
|
|
|
|
|
V4-live; review when done.
|
|
|
|
|
|
2026-06-17 10:53:12 +02:00
|
|
|
**PASS 7**: `VIOLET_PART_SPEC_OA_TODO_PASS7.md` (issued 2026-06-17) — V5 selection (faithful
|
|
|
|
|
ARS/IRP ranking + OB Sub-1), multi-asset slot manager, capital allocation, multi-asset flow, and a
|
|
|
|
|
ranking bit-identity gate vs AlphaAssetSelector. NOTE: this layer is the suspected locus of CRITICAL
|
|
|
|
|
#1 — PASS 7 PINS the ranking math (narrowing the suspect to timing/join), but the live-aggregate
|
|
|
|
|
root-cause stays Claude's job. Review when done.
|
|
|
|
|
|
2026-06-17 11:32:53 +02:00
|
|
|
**PASS 8**: `VIOLET_PART_SPEC_OA_TODO_PASS8.md` (issued 2026-06-17) — V6 bible CONSUMERS: posture
|
|
|
|
|
effects engine (5-state entry-gate/flatten/cap), MARAS fingerprint consumer (role TBD from code —
|
|
|
|
|
no invented modulation), regime read-model, cadence shadow-actuation telemetry, posture/regime
|
|
|
|
|
parity gate. VIOLET CONSUMES posture/MARAS (MHS owns them); ACB/vol/SL-guard already covered
|
|
|
|
|
elsewhere. Review when done.
|
|
|
|
|
|
VIOLET: CRITICAL parity-disappointment TODO + OA partial spec PASS 3
VIOLET_TODO_CRITICAL.md (prominent review queue):
- 🔴 CRITICAL #1: VIOLET↔BLUE parity report (PASS-2 Task 4, violet_parity_20260616_220412.md)
is VERY DISAPPOINTING — pick-match 1.5%, no-pick 86%, same-asset 13.6%. KEY NUANCE: on the 43
aligned rows sizing is near-identical (lev_err median 0.0) → the divergence is SELECTION /
TIMING / comparison-ALIGNMENT, NOT the sizing math. Root-cause before any soak/V4. (Claude.)
- #2: OA PASS-1 + PASS-2 reported done, NOT yet reviewed — review queue listed.
- #3: future integration/E2E + the pass-vs-sprint nomenclature note (pass = sub-sprint
work-package; V-stage = sprint/epic, matching existing usage).
VIOLET_PART_SPEC_OA_TODO_PASS3.md (lengthy, plan-derived, independent units with shared
interfaces — nothing invented): contracts_v3 (VenueTick/OpenPositionView/ExitDecision) +
VenuePriceFeedPort+BingX adapter, MechanicalExitGuard (armed TP/SL), sub-second SL/ADVSL floor
guard, event-sourced restore from trade_reconstruction, venue lead/lag slippage metric, cadence
per-action Q schedule + telemetry. Each ships + tests standalone; composition map + order given.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-17 09:01:49 +02:00
|
|
|
**Action:** review each pass for correctness, BLUE-algo compliance, V-TYPES, no-shared-edits,
|
|
|
|
|
real (non-vacuous) tests. **Owner: Claude (me), later.**
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
## 🟢 #3 — Integration / "sprint" consolidation (my later work)
|
|
|
|
|
|
|
|
|
|
Once the passes are reviewed, I will: **(a)** review ALL passes together, **(b)** integrate them
|
|
|
|
|
(resolve interfaces, dedupe), **(c)** test them together, **(d)** plug into the operational
|
|
|
|
|
system, **(e)** E2E test.
|
|
|
|
|
|
|
|
|
|
**Nomenclature note (raised by operator):** a "pass" here = a batch of self-contained tasks
|
|
|
|
|
delegated to one agent — smaller than an Agile **sprint** (a time-boxed iteration, typ. 1-4
|
|
|
|
|
weeks, team-scoped, ending in a shippable increment, with planning/review/retro ceremonies).
|
|
|
|
|
In this project's existing usage, **"Sprint N" already maps to a V-stage bundle** (Sprint 1 =
|
|
|
|
|
V0+V1, Sprint 2 = V2, Sprint 3 = V3) — i.e. an epic/milestone. So the cleanest mapping:
|
|
|
|
|
**V-stage = sprint/epic; "pass" = a sub-sprint work-package / task-bundle within it.** Renaming
|
|
|
|
|
passes to "sprints" would over-claim scope; keep "pass"/"work-package", or call each an
|
|
|
|
|
"increment". Decide at integration time.
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
## Gating rule
|
|
|
|
|
The DARK soak (operator-held) and V4 are NOT meaningfully runnable until CRITICAL #1 is
|
|
|
|
|
root-caused — a 1.5% pick-match means the shadow is not yet tracking BLUE's decisions.
|