-- VIOLET PASS9: economics/observability — exactly-one-row-per-event sink. -- Columns match EconomicsRow field set (asserted by test_violet_economics_sink). -- ReplacingMergeTree keyed on (session_id, event_seq) so a re-emit collapses to -- ONE row — the PINK duplicate-emission debt, paid down. -- wait_for_async_insert=1 on the economics write path (set in the sink). -- Apply via apply_violet_ddl.py (one statement per HTTP POST). CREATE TABLE IF NOT EXISTS dolphin_violet.violet_economics ( `session_id` String, `event_seq` UInt64, `asset` LowCardinality(String), `realized_pnl` Float64, `fee` Float64, `capital_after` Float64, `pnl_source` LowCardinality(String), `capital_source` LowCardinality(String), `ts` DateTime64(3, 'UTC'), `mono_ns` UInt64 ) ENGINE = ReplacingMergeTree ORDER BY (session_id, event_seq, ts) TTL toDate(ts) + toIntervalDay(180);