Conversation
Backfill hands each window's samples to the output's installed Planner graph, as live ingest does; a window from which the graph admits no population is not written. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…r graph Remote Write revisions buffer each stored window's samples and build it with the installed Planner graph; request admission runs the same graph and rejects the whole request if it fails. Known-empty counter panes of a captured revision keep the family's empty state. The per-sample interpreter in raw_dag.rs is now private to heaps, whose stored readout still decodes only the backend heap kernel. Tests cover backfill equivalence and Planner admission. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Planner execution errors keep their type, so a memory limit during revision admission or window building stays a resource error rather than a 400 input rejection. Revisions use the installed raw programs instead of re-deriving them per request, count buffered samples once however many windows share them, and fail a non-empty window that yields no population. Heaps keep their install-time update check while they use the kernel interpreter. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This was referenced Sep 30, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Stacked on #796.
Why
After #796 the live path executes Planner's precompute graph, but backfill and Remote Write revisions still evaluated
SummaryInputExprper sample in the backend (RawDagProgram::apply/validate_sample), and re-derived that interpreter per request.What
build_dag_accumulator) hands each window's samples to the output's installed Planner graph, as live ingest does.accept_revision) buffer each stored window's samples (pane assignment, retention and the correction horizon stay in the backend) and build each window with the Planner graph. Request admission runs the same graph over the request's matching samples and rejects the whole request if it fails. Known-empty counter panes of a captured revision keep the family's empty state.raw_dag.rsbecomes private and is used only by heaps (see Remaining); the interpreter-only validation and the unused value-projection field are removed.Before this PR
A backfilled
sum_over_time(asap_demo_gauge[5s])window and a revised window were built byprogram.applyper sample, while the live pane of the same samples was built by the Planner graph.After this PR
All three paths call
RawDagProgram::build:live_panes_execute_planner_dag_with_identical_statesnow also builds every live pane's samples throughbuild_dag_accumulatorand asserts byte-identical states; the process e2e revision tests (continuous_revisions_*,native_*_ensemble_revises_and_recovers) run the revision path end to end.Behaviour differences
max_checkpoint_bytes) and, as before, by built state size; overlapping windows share each buffered sample's series key.Remaining
empty_stateuses the backend kernel factory to create an empty family state for known-empty counter panes and the revision codec check.PrecomputeMaterializationcomputation fields remain (cross-checked against the DAG).Validation
cargo fmt --all -- --check;cargo clippy --workspace --all-targets --locked -- -D warnings;cargo test --workspace --locked --lib;cargo test -p data_plane --locked --test asapquery_compatibility_process_e2e -- --test-threads=1(26 passed). New tests: backfill equivalence, Planner admission (including a typed memory-limit error that fails when errors are stringified). Reviewed by a separate reviewer agent; findings addressed in the last commit.🤖 Generated with Claude Code