Repository navigation
Open
Labels
area: data planeRuntime ingestion, storage, and query-serving data pathsRuntime ingestion, storage, and query-serving data pathsarea: query enginePromQL lowering, execution, result shaping, and fallback behaviorPromQL lowering, execution, result shaping, and fallback behaviorenhancementNew feature or requestNew feature or requestfeature: PromQLPromQL compatibility and execution semanticsPromQL compatibility and execution semanticsfeature: sketch algorithmsSketch-family configuration, lifecycle, merge, and readout behaviorSketch-family configuration, lifecycle, merge, and readout behaviorfeature: warm summariesASAP warm-tier materialization, readiness, and servingASAP warm-tier materialization, readiness, and servingtest: end-to-endProcess-boundary, differential, conformance, and full-stack testsProcess-boundary, differential, conformance, and full-stack tests
Description
Context
Found while reviewing #478.
The PR documents differential-all as the complete sketch/query differential inventory. In practice:
promql_differential_process_e2e.rsis production-process + independent raw-value oracle, but DDSketch-only.- KLL, HLL, CountSketch, Count-Min Sketch, and heap-backed top-k live in
e2e_controller_plans_and_backend_serves.rs, which constructs the controller/backend HTTP stack in-process and is not differential against an independent raw-data oracle. - Eight of those fifteen matrix scenarios currently fail.
The matrix is useful and should remain strict, but it does not yet provide the same process boundary and oracle strength for non-DDSketch families.
Current commands
./scripts/e2e.sh differential
./scripts/e2e.sh differential-allExpected coverage
Add production-process scenarios for:
- KLL: quantile with an exact rank oracle and justified tolerance
- HLL: cardinality from a deterministic raw distinct set, including multi-SID merge
- CountSketch and Count-Min Sketch: frequency estimates from deterministic keyed events
- heap-backed CountSketch/CMS: top-k labels, ordering, and approximate counts
- instant/range forms where the query language supports both
Each scenario should:
- ingest through modified OTLP into the production data-plane binary;
- query only the public PromQL HTTP API;
- prove ASAP-local execution rather than fallback;
- compare labels, timestamps, shape, and values with a raw-data oracle;
- remain executable and non-ignored when it exposes a product regression.
Done when
The all-sketch differential command no longer relies on in-process-only coverage for non-DDSketch families, and its documentation distinguishes stable acceptance scenarios from known failing diagnostics.
Metadata
Metadata
Assignees
Labels
area: data planeRuntime ingestion, storage, and query-serving data pathsRuntime ingestion, storage, and query-serving data pathsarea: query enginePromQL lowering, execution, result shaping, and fallback behaviorPromQL lowering, execution, result shaping, and fallback behaviorenhancementNew feature or requestNew feature or requestfeature: PromQLPromQL compatibility and execution semanticsPromQL compatibility and execution semanticsfeature: sketch algorithmsSketch-family configuration, lifecycle, merge, and readout behaviorSketch-family configuration, lifecycle, merge, and readout behaviorfeature: warm summariesASAP warm-tier materialization, readiness, and servingASAP warm-tier materialization, readiness, and servingtest: end-to-endProcess-boundary, differential, conformance, and full-stack testsProcess-boundary, differential, conformance, and full-stack tests
Activity
zzylol commentedon Sep 3, 2026
PR #478 now adds
all_sketches_process_oracle_e2e.rsand the manual./scripts/e2e.sh sketch-oraclestarget. DDSketch, KLL, HLL, CountSketch, and Count-Min Sketch each cross a real productiondata_planechild-process boundary and compare the public PromQL response with an oracle computed independently from raw values/keys. The sketch library is used only for fixture encoding. Current result: DDSketch passes; the four non-DDS families strictly fail with ASAP-localNo result for queryand remain non-ignored. Keeping this issue open for the still-missing production-process multi-SID and additional instant/range variants from its full acceptance list.