Skip to content

PromQL range warm path ignores step_ms and differential E2E does not detect it #487

Open

Description

@zzylol

Context

Found while reviewing #478.

The new process differential test sends step=1 across a ten-second range, but only asserts that the returned matrix is non-empty and that every returned value equals the one-window oracle. It never checks returned timestamps or compares every requested range step against an independent instant query.

The production warm range path explicitly documents that step_ms is currently unused and returns native window-close timestamps instead of Prometheus's requested start, start+step, ..., end grid. Therefore ./scripts/e2e.sh differential passes while the advertised Prometheus instant/range parity is not actually satisfied.

Reproduction

./scripts/e2e.sh differential

Review locations:

  • data_plane/tests/promql_differential_process_e2e.rs: range assertions around lines 279-307
  • data_plane/src/query_engines/asap_query_engine/engine.rs: execute_range_promql_modern documents unused step_ms

Expected

  • The warm range engine evaluates or samples exactly at requested Prometheus step timestamps.
  • The differential fixture contains multiple windows with distinct values.
  • For every requested step t, compare range-at-t with an independent instant query at t.
  • Assert exact timestamp set/count, labels, error behavior, and value tolerance.

Done when

A process-level regression test fails if step_ms is ignored, points are missing/extra, or range-at-t differs from instant-at-t.

Activity

  1. added
    bugSomething isn't working
    area: data planeRuntime ingestion, storage, and query-serving data paths
    area: query enginePromQL lowering, execution, result shaping, and fallback behavior
    area: summary executionWarm-summary binding, readout, composition, and result decoding
    feature: PromQLPromQL compatibility and execution semantics
    feature: warm summariesASAP warm-tier materialization, readiness, and serving
    feature: range evaluationRange-query steps, windows, timestamps, and temporal evaluation
    test: end-to-endProcess-boundary, differential, conformance, and full-stack tests
    on Sep 4, 2026
  2. zzylol commented on Sep 4, 2026

    @zzylol
    ContributorAuthor

    The production step-grid implementation itself is on merged PR #498. The missing acceptance guard is now open in stacked PR #509 (on #505): for every warm matrix query it asserts exact requested timestamps/count and compares labels and values at each range step with an independent instant query at the same evaluation time. The production-process test passes. Keeping the issue open until the PR reaches main.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    area: data planeRuntime ingestion, storage, and query-serving data pathsarea: query enginePromQL lowering, execution, result shaping, and fallback behaviorarea: summary executionWarm-summary binding, readout, composition, and result decodingbugSomething isn't workingfeature: PromQLPromQL compatibility and execution semanticsfeature: range evaluationRange-query steps, windows, timestamps, and temporal evaluationfeature: warm summariesASAP warm-tier materialization, readiness, and servingtest: end-to-endProcess-boundary, differential, conformance, and full-stack tests

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions