Commit Graph

205 Commits

Author SHA1 Message Date
Codex
4915438c5a docs(exec): PINK drive-loop certified-learnings inventory — the §7 port checklist
Read pink_direct.py (1837L) in full. Catalogues all ~16 execution scar-tissue mechanisms
with line refs + the incident each encodes, classified PORT/SEAM/AMEND/SUPERSEDED. Captures
the _handle_expired_working control-flow sequence verbatim (the heart of the port).

Two governing rulings folded in:
- ZERO SILENT SUPPRESSION (operator: 'we paid dearly for pink'): any mechanism not ported
  as live code is carried into exec_unified as a referenced comment (reasoning +
  pink_direct.py:LNNN) at its seam. Silent omission is the one unforgivable port error.
- Both axes: T-tier (smartness) AND S-tier (size, §15.2). PINK loop = single-clip S0/S1;
  slicers compose above the contract (T*.s), in-order size mechanics are T14+, S2+ pain-
  fence is NEW doctrine to add.

Also flags a live SIGN-BUG candidate (pink_direct.py:673 'negative = rebate' contradicts
today's Q1: BingX commission negative = DEBIT). Bounded by K≈E gate; NOT touching BLUE/PINK.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-14 23:24:57 +02:00
Codex
d2e6d78abd exec_unified: add placer.py (SmartPlacer pre_submit seam) + mutation-litmus tests
- MarketSnapshot: best_bid, best_ask, spread_bps, tick, step (Decimal, frozen, validated)
- PlacementPlan: limit_price (quantized to tick), post_only=True
- pre_submit: returns None for TAKER, spread gate failure, or quantize-cross; otherwise PlacementPlan
- Spread gate uses live spread_bps (fixes dead _spread_allows_maker)
- Quantize to tick BEFORE returning (ROUND_HALF_EVEN per §4-15)
- Cross-after-quantize guard rejects if tick quantization crosses book
- 33 mutation-litmus tests: spread-gate flip, TAKER gate, cross-after-quantize all go RED
- Router.PROTECT wants_placement=True (at touch)
- Pure stdlib+Decimal, zero I/O/venue
2026-07-14 23:14:07 +02:00
Codex
154234eea6 exec(unified): L2 foundation — contract §2 + whether-maker Router §6, pure, 26 tests
First code of the Unified Execution Layer (SPEC_UNIFIED_EXEC_LAYER_20260714.md). Pure
policy, stdlib+Decimal only, zero I/O, zero venue knowledge, zero importers elsewhere —
adopting it breaks nothing (freeze-safe; operator unparked the build 2026-07-14).

- contract.py: ExecutionRequest input surface (§2.1) + V-TYPES (Side, UrgencyClass,
  ProtectiveSpec, ExecutionAdvice), frozen, validated-at-construction, illegal states
  unrepresentable. 'an asset, a size, and a prayer'.
- router.py: decide(request) -> RoutingDecision — total pure map of the §6 urgency
  ladder. Encodes A1 adjudication verdict in the architecture: Router=whether-maker,
  SmartPlacer=where-in-book via the wants_placement/pre_submit seam. Complementary.
- _constants.py: policy magnitudes with provenance; PROVISIONAL ones flagged for
  L8/L10 calibration (never vibes, never a hardcoded cadence).
- test_exec_unified.py: 26 behaviour + mutation-litmus tests. Verified RED under
  CATASTROPHIC->MAKER and ACQUIRE cross_on_expiry->True mutations.

Not yet wired: PINK drive-loop port (§7), venue dialect (§11), telemetry (§12).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-14 23:00:42 +02:00
Codex
40e1dd0bd2 spec(exec §0): record measured 2.00 bps maker fee — refutes 1bp assumption, no rebate
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-14 22:14:49 +02:00
Codex
2022dc9fe2 exec(Q1): correct maker-fee sign — +2.00 bps COST not rebate (BingX neg=debit); + omp navigation map
omp's raw VST capture is correct (2.00 bps = exactly BingX 0.02% published maker rate).
Sign was inverted: BingX reports commission negative for a DEBIT, so -0.001291 USDT is a
fee PAID, not a rebate. Refutes SPEC §0 '1 bp maker' assumption (real = 2 bp); maker-both
RT ~4 bp vs taker ~10 bp — savings case survives, no rebate. Adds EXEC_NAVIGATION_MAP_FOR_OMP.md
to bound omp's searches to prod/bingx/ (was grepping Nautilus framework internals).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-14 22:12:15 +02:00
Codex
d5e0282da9 Q1: BingX VST maker fee measured - -2.00 bps rebate on GTX BUY 0.0001 BTCUSDT 2026-07-14 21:19:59 +02:00
Codex
dcbd65782d docs(exec): Q1 commission cold-start pack for omp — measure real BingX maker fee
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-14 20:00:25 +02:00
Codex
27227f5901 docs(exec): S-grade size axis — composable slicers above the contract, T14+ for in-order size mechanics, S2+ refusal fence
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-14 19:34:15 +02:00
Codex
36b1b84cf0 docs(exec): T1 WHY — simplicity as safety property (usable now, without weird bugs)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-14 19:32:17 +02:00
Codex
5e052503c4 docs(exec): operating tiers T0-T13 — smartness ladder (T1 = better-orders, shippable now; T10 = MALKHUT placement; T13 reserved)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-14 19:30:50 +02:00
Codex
2ce96987a1 docs(exec): THE UNIFIED EXECUTION LAYER master spec (DITA-T / SMART-EXEC v2)
Operator-commissioned master: agnostic contract ('an asset, a size, and a
prayer'), 11-source lineage table with per-asset standing, five contract
promises, MALKHUT advice plane (three laws, bounded authority, training-loop
closure), urgency ladder, PINK drive-loop port doctrine, execution truth +
priority integration as law, venue dialect seam, 20-point how-we-trade
distillation (incl. original BingX characterization sweep specifics + the
$91-231K measured prize), Appendix D = Flight-series at-exchange inventory
(14 lessons, previously uninventoried), Appendix E = mm_'s microstructure
priors (MEASURED adopted / CALIBRATED gated on A1 validation).
Supersedes SPEC_UV_SMART_EXEC_MM (marked in-place); governs SMART_EXEC_BACKLOG.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-14 19:28:51 +02:00
Codex
1b6d280d26 docs(blue-ops): verified corrections from live incident 136f5417 — cluster=dolphin, SAFETY key=latest dict (posture inside, per-bar clobber => write-loop), capital key=latest_nautilus; Tier-1 as documented was a no-op
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-14 16:55:18 +02:00
Codex
04251dbfe9 tools(h6i): ear-buffering fix — single flushed awk stage + EARTEST self-test doctrine
Operator's live bluff-check caught it: final grep stage without --line-buffered
block-buffers wakes silently. Verified fixed via EARTEST injection (same-second fire).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-14 15:54:28 +02:00
Codex
146609b5c0 tools(h6i): IRC presence codified — CC skill + open-format spec + reference client + MCP registration
Claude Code skill .claude/skills/h6i-irc (speak/listen/auto-wake via Monitor);
harness-agnostic H6I_PRESENCE_OPEN_SKILL.md with per-harness wake recipes
(codex/pi/MiMo/MCP); env-parameterized stdlib client prod/tools/h6i_presence;
TcpSocketMCP registered as irc-h6i in .mcp.json. Doctrine: nick=h5i handle,
doorbell IRC / payload h5i, untrusted input.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-14 15:40:02 +02:00
Codex
ab061e2c88 docs(spec): name the manifold kernel DAAT — Direction-Anchored Ambiguity Triage
Operator-approved. Apostrophe dropped (ASCII identifier law: import daat, DaatQuery,
dolphin_daat.*, no Unicode in any symbol/path/table). The acronym earns its letters:
D=direction (cosine retrieve), A=anchored (magnitude envelope gate), A=ambiguity
(the state we refuse to collapse), T=triage (KNOWN/MARGINAL/OUT_OF_DISTRIBUTION).

'Triage' is deliberate — the house already triages NOT_ATTEMPTED/REFUSED/INDETERMINATE
at the venue. Same verb, same law, now the names say so. Da'at (knowledge, the hidden
sefirah that sits above Malkhut and feeds it) survives in the etymology, where it costs
nothing. YESOD considered and set aside: it names the conduit, not the knowing.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-13 18:56:29 +02:00
Codex
9ae4daab5e docs(spec): ANNEX A — the manifold query (retrieve/gate/model) + DA'AT generalization
Operator's cosine proposal: ADOPTED as stage 1 of 3, never alone.
- Stage 1 RETRIEVE: cosine on DIRECTION = matmul = the reflex (fast, exact, deterministic)
- Stage 2 GATE: magnitude envelope + support + Mahalanobis -> OUT_OF_DISTRIBUTION
- Stage 3 MODEL: local tangent-space/GP -> prediction + VARIANCE (the real extrapolation)

THE DANGER: crises preserve direction and explode magnitude. Cosine returns
similarity 1.0 for a same-shape-10x-size state — max confidence at the exact moment
it is most wrong. Cosine CANNOT produce the OOD verdict; storing direction+magnitude
separately is the entire crash-safety story.

Same law, third coat: INDETERMINATE (venue) / stale-price (exit) / OOD (manifold).
Unknown is not flat, not 'best guess'.

TOPOLOGY (operator's IFF): cyclic (sin,cos) encoding = free + REQUIRED for the
streak-phase grail study; component detection = cheap; persistent homology = EARN IT
(offline Mode-1 diagnostic that shapes the gate, never a per-tick op).

GENERALIZATION: three-stage discipline (not one metric) is a shared kernel — market
fingerprint (scalar_hash is a hash reaching for this; conflict_level is latent OOD),
trade-path/ADVSL, exit-decision, asset transfer (= how full-universe becomes
affordable), counterparty simplex, ops/incident prefiguration, streak-wave phase.
One guard defends all: confident interpolation into unexplored magnitude is the
universal failure mode. Proposed name: DA'AT.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-13 18:48:52 +02:00
Codex
317e9d7a13 docs(spec): MALKHUT actuals-intake — two-mode architecture, verified plug map, 3 findings
Two modes (operator): EXPLORE (synthetics, ecology-dominant, billions of combos,
emits a MANIFOLD) -> RECOMMEND (live OBF as query, localize + extrapolate, OOD
verdict falls back to doctrinal). Ecology stays: actuals calibrate, ecology plays.

Findings verified live tonight:
- FEE BUG CONFIRMED: trade_execution_quality says 5.016 bps taker; code says 0.5
  (asset_classification.py:154/164/174/384). Every CMA-ES number is void until re-baselined.
- BOOK GAP: obf_universe (15.3B rows) is L1+aggregates, NOT a ladder. Three options,
  must declare which; book_source provenance tag on every artifact.
- LATENCY: p50 49.9ms / p95 597ms / p99 10.8s / max 450s. Constant-100ms is fiction.
- REGIME MISMATCH: MARAS emits 5 regimes; MALKHUT selector invented 9. RegimeBridge needed.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-13 18:32:54 +02:00
Codex
e57a5e58a8 docs(review): pi's INDETERMINATE edge-case doc — verified faithful, 2 errors fixed, 7 missing seams M1-M7 enumerated for fleet
venue.py:43 location + 2026-07-13 date corrected in-place. §11 added: truth
audit, missing-seam table (cancel, lev SET, promo receipts, e-feed, exit legs,
ch_writer, broad-except), NO-RECONCILE guardrail on the P0 background task.
Handover item 8 updated to fleet-ready.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-13 18:01:28 +02:00
Codex
b0692a3b14 docs(handover): operator ruling — lev clamp waits while downward/within 3x cap
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-13 17:41:21 +02:00
Codex
1a28b3c14a docs(handover): 5 spark-level anomalies — tripwire +$10.64 UPWARD drift, lev 3→2 clamp, over-entry guard live-confirmed, EXIT-mislabel live, bimodal 6s/12s cadence
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-13 17:37:05 +02:00
Codex
6757356e6c docs(post-finish): link SMART-EXEC spec from the sequenced exec item
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-13 17:25:34 +02:00
Codex
b011ab5f8e docs(spec): SMART-EXEC — non-naive MM/trade executor at the venue-adapter seam
Urgency ladder mapped to A-G doctrine, Router+SmartPlacer adjudication first,
inherits indeterminate triage, venue-side catastrophic backstop, parity-invisible.
Build is POST_FINISH-sequenced.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-13 17:23:57 +02:00
Codex
2196fabf93 uv(ddl): require max_hold_ingress + tp_exit_ingress in verify set
Tables applied to CH 2026-07-13 16:18 CEST; journal lane landing rows live.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-13 16:22:26 +02:00
Codex
0167c73d64 docs(handover): Fable EOD 2026-07-13 — live state + full TODO ladder
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-13 16:19:35 +02:00
Codex
f2e7d41ef9 docs(post-finish): log 3 research tasks — dvol sweep × regime, cadence effects, streak wave-phase
Operator 2026-07-13. Prereq flagged: persist per-trade dvol at entry.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-13 15:55:14 +02:00
Codex
bdc54fbeaa dita_v2(exec): INDETERMINATE submit is not REJECTED — unknown is never flat
A BingX read-timeout/reset/5xx after send means the answer was lost, not that
the order failed. Classify every submit failure by what it PROVES:
NOT_ATTEMPTED / REFUSED -> rollback sound; INDETERMINATE -> point-lookup our
own clientOrderId (read-only, bounded, never a reconcile); unresolved stays
UNKNOWN — no synthetic REJECT, no slot rollback, E-feed FILL settles truth.

- prod/bingx/http.py: BingxHttpError.effect + order_may_exist, 9 raise sites tagged
- adapters/bingx_direct.py: _lookup_own_order_by_client_id (never POSTs)
- dita_v2/venue.py: VenueIndeterminateError(VenuePostAckError) — existing fences catch it
- dita_v2/bingx_venue.py: both submit paths escalate INDETERMINATE receipts
- 14 tests incl. kernel no-rollback invariant + genuine-REFUSED contrast

Suite: 3416 passed, 19 skipped, 3 xfailed.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-13 15:43:55 +02:00
Codex
8787cbcadf violet(ddl): require every shipped table 2026-07-13 11:32:14 +02:00
Codex
cc7ac35169 dita_v2(test): pin indeterminate FSM state 2026-07-13 10:53:42 +02:00
Codex
ada14f04b3 dita_v2(test): assert semantic event emptiness 2026-07-13 10:45:42 +02:00
Codex
a3e2fc6528 dita_v2(test): preserve indeterminate post-ack state 2026-07-13 10:42:07 +02:00
Codex
3d75e4b59d dita_v2: unknown != flat (VenuePostAckError) + lossless telemetry lane
BUG CLASS (doc: BUGCLASS_INDETERMINATE_OUTCOME_20260713.md): an operation with an external
side effect has THREE outcomes — NOT_ATTEMPTED, ATTEMPTED_REFUSED, ATTEMPTED_INDETERMINATE
— and rollback is sound only for the first two. Collapsing the third into 'failed' is what
orphaned 6 live SHORTs: a post-ack TypeError reached rust_backend's 'except Exception ->
synthetic REJECTED -> FSM rollback', which asserted 'no order exists' about an order that
was already filled. Telemetry never had a veto; it hijacked the failure channel.

FIXES (no new seams, no re-architecture):
- venue.py: VenuePostAckError — typed channel meaning THE EFFECT EXISTS. Carries receipt.
- bingx_venue submit/submit_async: point-of-no-return fence. Post-ack bookkeeping failures
  raise VenuePostAckError instead of a bare exception.
- rust_backend (BOTH submit paths): catch VenuePostAckError FIRST -> no synthetic REJECT,
  no rollback. Slot stays working; E-feed FULL_FILL / reconcile settles the truth.

LOSSLESS TELEMETRY (HJ: 'DITAv2 exists precisely because seams dropped 40% of inputs'):
drop-oldest is data loss and is GONE. Exec path appends O(1) to an unbounded queue and
returns. A SEPARATE spiller thread (which never touches the plane, so a wedged plane cannot
starve it) parks the backlog above HWM into a durable append-only spool; the publisher
replays the spool when the plane recovers.
Proven: wedged-forever plane + 200k records -> 0 dropped, 195903 durable on disk, 4096 in
memory, 7.4 us/call on the exec path. Lossless AND memory-bounded. Healthy plane: 2000/2000.

STILL BROKEN, flagged to codex: the pre-ack branch rolls back on TIMEOUT — but a timeout is
the definition of INDETERMINATE (the order may have filled). Same bug class, older, live.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-13 10:31:39 +02:00
Codex
b13b54e769 dita_v2(test): enforce post-ack atomicity and suite integrity 2026-07-13 10:03:06 +02:00
Codex
d16e3e6dd7 docs: UV execution priority ladder (HJ's A-G adapted to our subsystems)
Central finding: TIER-B INVERSION. asex_kernel_executor.py:319 enqueues account/fill
events (execution truth) at priority=4 — the LOWEST tier, BELOW ENTER (P3). Under queue
pressure UV opens a new position before applying the fill that tells it what it already
holds. Tonight's 6 orphans are the proof: tier-G telemetry destroyed tier-B truth, UV
believed it was flat while holding 6 live SHORTs, and no SL/TP/ADVSL can protect a
position the kernel does not know exists. That is why B outranks C and D.

Also catalogued: A-tier sensors (heartbeat/disconnect/seq-gap/halt/stale-book) are not
ranked work at all — only the kill switch is. Missing C (liquidation distance, daily/
session loss, symbol loss, leverage trigger), D (trailing, giveback, stale-exit reprice),
E (self-cross, amend), F (spread/depth gate).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-13 09:00:46 +02:00
Codex
40e85ab8d1 dita_v2(bingx_venue): telemetry OFF the exec path — bounded non-blocking lane
Standing steer (HJ, months): non-blocking behaviour + explicit execution priority.
Telemetry is not on the ladder at all, yet it sat ON the order path, inline and able to
raise — which is how it orphaned 6 live positions.

Exec path now does exactly one thing: pack primitives, append to a bounded ring, return.
No plane write, no snapshot construction, no I/O, no lock, no raise. Snapshot build +
plane publish move to a daemon drain lane. Ring is deque(maxlen=4096): drops OLDEST on
full and counts the drops — telemetry loss is always preferable to exec backpressure,
but it stays observable.

Measured: 1000 exec-path calls against a 2s-BLOCKING plane = 3.65 ms total (3.65 us/call).
Inline, that was 2000 s of stall. Wedged lane + 50k pushes -> ring pinned at 4096,
45903 counted drops, exec path never backpressured. Healthy plane still gets 5/5.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-13 08:58:52 +02:00
Codex
832c85b233 dita_v2(bingx_venue): make _publish_telemetry TOTAL — telemetry cannot raise into the order path
The pre-existing guard covered only publish(). The attribute/coercion block above it
(int()/str()/.metadata.get() on intent+order) was UNGUARDED, and kwarg binding happens
before the body runs at all — so a signature skew sailed straight past a defence that
existed precisely to prevent this, and orphaned 6 live positions.

Everything that can raise now lives inside one try. Failures log loud and are swallowed;
the order path is never affected. Proven against: exploding plane, poisoned intent
coercion (the formerly-unguarded region), and absent plane.

ARCHITECTURAL DEBT (raised by HJ, not fixed here): telemetry has no business being called
inline on the exec path at all. Correct shape = fire-and-forget enqueue drained by the M6
journal lane. This commit makes it harmless, not absent.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-13 08:54:01 +02:00
Codex
aec0b4670f dita_v2(test): repair test_double_buffer control test — suite was un-collectable
Line 154 held mutant debris: KernelControlSnapshot(mode="live", mode="live"") — duplicate
kwarg + unterminated string. Committed since a55501b, it made the ENTIRE dita_v2 suite fail
collection, so nobody has run it. That is why no test caught the bingx_venue telemetry
signature skew that orphaned 6 live positions tonight.

The test was fantasy besides: asserted read.arming == "DARK" (no such field) and
mode == "live" (KernelMode is NORMAL|DEBUG). Rewritten to assert a real invariant —
the second write must flip the buffer and become visible.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-13 08:11:54 +02:00
Codex
dc1df325cb dita_v2: port M5 native-artifact provenance UP to canonical upstream
M5 (native_artifact.py + rust_backend build_verified_artifact/verify_artifact hooks)
existed ONLY in the uv/exec-refactor worktree. Canonical never received it, so
vendor_sync.sh downgraded the vendored copy back to a raw 'cargo build' — the same
mechanism by which M1's relock clobbered the bingx_venue telemetry fix and orphaned
6 live positions. Canonical is the source of truth; M5 belongs here.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-13 05:28:05 +02:00
Codex
b46ebd2f82 dita_v2(bingx_venue): restore _publish_telemetry order_id/client_order_id kwargs + make post-ack telemetry non-fatal
M1 re-vendor (89a1f1a) clobbered the T0-DEVIATION fix (20ad493): submit()/submit_async()
pass order_id=/client_order_id= post-ack, the signature dropped them. Every ENTER raised
TypeError AFTER the venue POST returned 200 OK -> rust_backend synthesised REJECTED ->
FSM rollback, while the venue kept the position. Flight-4: 8 bridged promotions, 6 orphan
SHORTs live on VST with a kernel that believes it is flat.

Two fixes:
1. signature accepts order_id/client_order_id again; snapshot prefers them (order is None
   on the submit path, so the ack row is the only id source).
2. post-ack telemetry wrapped: observability can never again veto an accepted order.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-13 05:08:12 +02:00
Codex
05b0aa0842 uv(parity): DATA WIRING CENSUS — 24 live / 4 defaulted / 9 missing; holes concentrate at tpsl_ticker:319-348 + dead hook 10 + env pins 2026-07-13 01:30:33 +02:00
Codex
66f839778f uv(parity): bit-parity sweep unroll-vs-UV — 7/9 parity; ADVSL functionally dead in UV (worst) 2026-07-13 01:06:50 +02:00
Codex
9fe989b502 malkhut(perf): DuckDB in-memory materialization — sub-µs reads, zero DuckDB overhead
Architecture: DuckDB for persistence + full in-memory materialization for reads.
All reads served from Python dicts (sub-microsecond). DuckDB only hit on writes.

Performance evolution (get_asset benchmark):
  V0 (raw DuckDB):    876µs per call
  V1 (LRU cache):     2.3µs per call (380x)
  V2 (in-memory):     0.2µs per call (4380x)

All reads now sub-microsecond:
  get_asset:      0.2µs (was 876µs)
  query(blockian): 6.6µs (was 2.2ms)
  query(sector):   6.6µs (was 3.2ms)
  exchange lookup: 12.5µs (was 1.5ms)
  full scan:       5.9µs (was 1.8ms)
  behavior:        0.4µs

Write path: sync_from_profiles batch-inserts all data, then materializes
into Python dicts. Resync: 76ms (was 210ms, 2.8x faster).

Data integrity: DuckDB WAL provides crash recovery. In-memory dicts are
reconstructed from DB on every sync/close-reopen cycle. Zero data loss.
2026-07-12 19:38:24 +02:00
Codex
8bbf7d1de8 adapters(bingx_direct): component-correct message/comment attribution (operator: in-kernel messages name the emitting component, not the consumer)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-12 19:22:12 +02:00
Codex
dc90f6d77e clickhouse: commit exit-leg/reconstruction/maras DDLs + UV/violet DDLs (M1 vendor reconcile, upstream-first) 2026-07-12 19:13:25 +02:00
Codex
d763f77516 uv(parity): exhaustive exit-doctrine re-crawl x3 (BLUE TP, BLUE SL+ADVSL, UV) — supersedes phase-1 matrix
TP: cascade x1.40 SATURATED not dormant (313870/314158 decisions; effective
TP ~0.26-0.28%); withdrawal x0.60 provably unreachable (elif shadow);
per-asset x0.75 never observed; TP_FLOOR = 46% of TP-family closes.
SL/ADVSL: ADVSL live loss-cutter (1347 CLOSE + 965 PARTIAL_EXIT/30d,
always fraction=1.0) via trader RETRACT pipeline; shadow table never
existed (silent DDL bug) -> ADVSL sub-modes dormant; withdrawal 0.10
WIDENS floor. UV: multi-leg implemented in Rust FSM, promotion never sets
ratios; venue carries-not-consumes. 16 weirdnesses to port as-is.
2026-07-12 13:00:41 +02:00
Codex
70359f6891 uv(parity): DITAv2 multi-leg capability note — built (extra week), verify end-to-end before ADVSL wiring 2026-07-12 12:40:07 +02:00
Codex
e395b34eec uv(parity): OB TP coefficient dormancy caution — verify tp_mod_factor fires live before porting as active 2026-07-12 12:38:50 +02:00
Codex
c403800030 uv(parity): operator ruling — ADVSL in-parity regardless of open net-profitability question 2026-07-12 12:36:29 +02:00
Codex
8e9038cf2c uv(parity): ADVSL multi-leg exit added to crawl scope (operator) 2026-07-12 12:34:16 +02:00
Codex
b380283204 uv(parity): phase-2 crawl — full TP/SL codepath inventory (cubic curve, 5 SL mechanisms, AdvancedSL LIVE-confirmed) 2026-07-12 12:32:34 +02:00
Codex
7544955634 uv(parity): exit-doctrine parity pass — SL/TP/MAX_HOLD verdict matrix
MAX_HOLD: PARITY (base 250 + 4 modulation branches + bar quantization; fallback
120 loud-only). SL: value PARITY -1.2% (catastrophic-floor override), UV strictly
tighter. TP: NOT AT PARITY — UV 0.35% vs BLUE live 0.20%, no OB modulation
(x1.40/x0.60/x0.75), no TP_FLOOR; UV trailing is a different mechanism. Tie order
divergent (BLUE TP-first, UV SL-first). Price basis+cadence divergent (OBF-mid
per-scan vs BingX-mark 1s). Remediation order proposed, no build without operator.
2026-07-12 12:15:44 +02:00