Area: ingest — gap + docs · found via WaveHouse-Stats dogfooding
Expected: a way to know when an accepted event is queryable, or to opt into waiting for it.
Actual: POST /v1/ingest returns 200 after the NATS publish, not after the ClickHouse write (internal/api/ingest.go:153-187). A just-accepted event isn't immediately visible. There's no sync-ack mode and no exposed ingest-lag / queue-depth signal, so consumers can't distinguish "not yet flushed" from "genuinely missing."
Impact (Stats): this is the reason the reconciler needs a settle window before declaring drift — and we're sizing that window blind.
Scope: at minimum, document the eventual-consistency contract before launch (cheap, important for anyone building on ingest). Larger follow-on: an optional synchronous ack mode and/or an exposed ingest-lag metric.
From WAVEHOUSE-FEEDBACK.md (WaveHouse-Stats dogfooding); validated by code-read against 0f8826c on 2026-06-04.
Area: ingest — gap + docs · found via WaveHouse-Stats dogfooding
Expected: a way to know when an accepted event is queryable, or to opt into waiting for it.
Actual:
POST /v1/ingestreturns 200 after the NATS publish, not after the ClickHouse write (internal/api/ingest.go:153-187). A just-accepted event isn't immediately visible. There's no sync-ack mode and no exposed ingest-lag / queue-depth signal, so consumers can't distinguish "not yet flushed" from "genuinely missing."Impact (Stats): this is the reason the reconciler needs a settle window before declaring drift — and we're sizing that window blind.
Scope: at minimum, document the eventual-consistency contract before launch (cheap, important for anyone building on ingest). Larger follow-on: an optional synchronous ack mode and/or an exposed ingest-lag metric.
From
WAVEHOUSE-FEEDBACK.md(WaveHouse-Stats dogfooding); validated by code-read against0f8826con 2026-06-04.