ASAPQuery-backend compiles and executes planned observability queries using materialized exact accumulators and sketches, with configured exact backends for unsupported or unavailable results. It contains the backend control plane, summary storage, precompute runtime and query adapters. Query semantics and post-ASAP candidate generation come from the external ASAPPlanner dependency.
Start with the E2E physical-DAG walkthrough for workload inputs, ERP evidence, selected plans, sample ingestion, storage inspection and query execution. The documentation index links the detailed guides. This README describes the repository entry points; it does not promise a universal latency improvement or a single accuracy bound across summary families.
Workload + capabilities + cost/accuracy evidence
|
external ASAPPlanner
selected post-ASAP DAG
|
backend PhysicalCompiler
|
authoritative SummaryCatalog
+ shared physical-plan publication
/ \
PrecomputePlan QueryPlan
producer/input subDAGs query/readout subDAGs
| |
SummaryStore <---- bound state reads
| |
physical instances result or exact fallback
The backend compiler consumes the selected Planner DAG and places supported operations. It preserves semantic nodes and bindings rather than rediscovering query intent from metric names. ERP evidence can influence eligible choices; its presence alone does not prove selection or measured benefit.
| Contract or component | Responsibility |
|---|---|
SummaryCatalog |
Authoritative generation and descriptors for data, summary semantics, population, windows and materialization identity. Sibling plans validate against the same catalog. |
PrecomputePlan |
Materializations, input schemas, producer bindings and installed precompute subDAGs. Window size, slide, layout and origin are explicit contracts. |
ProducerContract, CollectorPlan, TransmissionPlan |
Producer/materialization authorization, external collector work and state-frame encoding/sequence rules. They are shared producer/consumer contracts; backend-local Remote Write does not require ASAPCollector. |
QueryPlan |
Language-tagged query entries, exact dependencies, typed operations and materialization/readout bindings. Query subDAGs execute against the active installed snapshot. |
SummaryStore (SketchStore) |
Physical state, indexes, lifecycle and persistence. A SummaryDefinitionId identifies the planned materialization. SID identifies a physical stored series/lifetime; SummaryInstanceId identifies a concrete definition/window/group instance. Planner node IDs are not storage IDs. |
| Physical-plan publication | Publishes catalog, precompute, query, collector and transmission views together; invalid bindings reject installation rather than silently selecting replacement state. |
See the physical compiler, catalog/runtime design and maintenance protocol.
flowchart TB
subgraph planning["Planning and installed contracts"]
PL["External ASAPPlanner"] --> CP["Backend control plane"]
CP --> CAT["Authoritative SummaryCatalog"]
CP --> PP["PrecomputePlan"]
CP --> QP["QueryPlan"]
CP --> PC["Producer contracts / CollectorPlan"]
CP --> TP["TransmissionPlan"]
end
subgraph ingest["Sample and state ingestion"]
RW["Prometheus Remote Write v1"] --> RX["RW receiver / bounded queue"]
RX --> PD["Precompute DAG"]
EP["External producers: modified OTLP / state"] --> PV["Producer / transmission validation"]
PV --> PD
PD --> SS["SummaryStore: physical series and window/group instances"]
end
subgraph queries["Query adapters and execution"]
PQ["PromQL"] --> QD["PromQL query DAG"]
MQ["MetricsQL"] --> MA["MetricsQL adapter"]
SQL["ClickHouse SQL"] --> SD["Typed SQL query DAG"]
QD --> QR["Shared query runtime"]
MA --> QR
SD --> QR
QR -->|"bound state reads"| SS
QD -->|"unsupported / unavailable"| PE["Prometheus exact backend"]
MA -->|"unsupported / unavailable"| VE["VictoriaMetrics exact backend"]
SD -->|"unsupported / unavailable"| CE["ClickHouse exact backend"]
QR --> W["Warm: successful summary execution"]
QR --> H["Hybrid: summaries plus supported exact dependencies"]
PE --> F["Exact fallback result"]
VE --> F
CE --> F
CE -->|"supported exact SQL subtree"| SD
end
subgraph completion["Independent completion authority"]
B["Typed watermark / barrier: installed producer and partition scope"]
B --> CC["Continuous coordinator: closure activation gated"]
CC -.->|"gated completion contract"| PD
end
PP -.-> PD
QP -.-> QR
PC -.-> PV
TP -.-> PV
PC -.-> B
CAT -.-> SS
CAT -.-> QR
Dotted edges show installed contracts or explicitly gated paths. The barrier is independent of Remote Write samples; this figure does not advertise a public barrier endpoint or continuous/sliding activation. Warm and hybrid labels apply only to successful execution with the corresponding actual summary reads; external-only DAG execution is not acceleration.
| Surface | Current path and boundary |
|---|---|
| Prometheus | /api/v1/write accepts Remote Write v1 scalar samples. PromQL instant/range queries use installed plans with configured Prometheus exact fallback. The collector-free asapquery profile is a bounded compatibility profile, not every distributed/persistent deployment option. |
| VictoriaMetrics | A separate MetricsQL adapter and listener lower supported expressions through Planner and the shared runtime. Unsupported syntax or unavailable coverage retains VictoriaMetrics exact fallback. See MetricsQL support. |
| ClickHouse | An optional SQL HTTP adapter uses the same catalog/publication with typed relational and mixed exact/summary DAG execution. Supported collection/scalar operations are explicit; arbitrary SQL, lambdas and counter queries are not implied. External-only DAG execution is not summary acceleration. See SQL support. |
| External producers | The distributed path accepts configured collector/state input, including modified OTLP. It is distinct from standard Prometheus Remote Write and uses the shared producer/transmission contracts. |
Planning input and serving traffic are separate. Sending a PromQL request from Grafana does not declare that it is a recurring dashboard query. Declare known query classes through the control plane; send each evaluation to the data-plane query endpoint.
At startup, set CONTROLLER_WORKLOADS to a YAML registry containing the query
text and deployment hints:
- metric_name: http_requests_total
query_string: "sum by (region) (rate(http_requests_total[5m]))"
accuracy_sla: 0.99
assign_to_role: agent
grouping_labels: [region]query_string is the preferred source for metric, aggregation, filters,
grouping and range-window semantics. Optional registry fields include
sketch_family_override, sample_p, distinct_keys_per_window, item_label
and monitor. accuracy_sla is the legacy success fraction: 1.0 requests
exact results and 0.99 permits epsilon 0.01.
The startup registry does not currently carry dashboard recurrence. The legacy
planning API accepts an evaluation cadence at POST /api/v1/plan
(CONTROLLER_ADDR, default port 8080):
curl -X POST http://localhost:8080/api/v1/plan \
-H 'Content-Type: application/json' \
-d '{
"query_string": "sum by (region) (rate(http_requests_total[5m]))",
"repeat_every": "30s",
"accuracy_sla": 0.99,
"latency_sla": "1s",
"workload": {
"series_count": 100000,
"samples_per_sec_per_series": 0.0667,
"bytes_per_raw_sample": 100,
"distinct_keys_per_window": null,
"data_distribution": "zipf",
"memory_budget_bytes": 268435456
}
}'repeat_every describes an expected cadence—for example, a dashboard panel
refreshed every 30 seconds—but does not schedule evaluations. Its current use is
narrow: the legacy deployment cost path uses it as the flush-period proxy for
batch-mode plans. Window-mode plans use their configured window duration, and
the canonical physical-plan request does not yet model general query recurrence.
Do not assume that changing repeat_every will change summary selection.
The workload object describes the incoming data stream and may be omitted to
use conservative defaults. The API also accepts explicit metric_name,
aggregations, time_window, group_by_labels and label_filters instead of
a query string.
Once the matching physical plan is installed and its state is ready, clients execute the query through the data plane's Prometheus-compatible API:
curl -G http://localhost:8088/api/v1/query \
--data-urlencode 'query=sum by (region) (rate(http_requests_total[5m]))'Range evaluations use /api/v1/query_range with query, start, end and
step. Serving requests do not update repeat_every automatically. End-to-end
dashboard-frequency-aware planning still requires a typed recurrence field on
the canonical workload/publication path and an observer or explicit workload
registration to populate it.
Remote Write 204 acknowledges atomic bounded queue admission, not durable
accumulator publication or a raw write-ahead log. Deduplication is in memory;
there is no durable raw-WAL replay guarantee. Stale markers are recognized and
excluded from numeric aggregation, not propagated as general lifecycle events.
Native histograms and exemplars are rejected in this v1 path.
Remote Write does not carry an authoritative completion watermark. Installed producer partition rosters and typed barriers define a separate completion scope; roster membership alone does not provide authentication, durable progress or continuous scheduling. Finite immutable maintenance has explicit source, population, window and operator gates. Continuous/sliding activation must not be inferred from available metadata or a successful ingest response.
Fallback and execution provenance must reflect the path that actually produced a successful result. Missing coverage and unsupported operations must not be reported as warm success. Accuracy and benefit claims need the selected family's contract and workload-specific evidence. Thanos/object-store integrations are optional deployment paths, not the default architecture or a required quickstart.
Run these steps in Bash on Linux. The Docker commands below use host networking; other platforms need equivalent port/address configuration. Each backend runbook has its own ports and artifacts and can be run independently after this setup.
mkdir -p asap-workspace
cd asap-workspace
git clone https://github.com/ProjectASAP/ASAPQuery-backend.git
git clone https://github.com/ProjectASAP/ASAPCollector.git
git clone https://github.com/ProjectASAP/asap_sketchlib.git
cd ASAPQuery-backend
# Follow this backend revision's CI dependency pin, rather than a copied SHA.
ASAP_SKETCH_REF="$(awk '/repository: ProjectASAP\/asap_sketchlib/{found=1;next} found && /^[[:space:]]*ref:/{print $2;exit}' .github/workflows/mvp-ci.yml)"
git -C ../asap_sketchlib checkout "${ASAP_SKETCH_REF:-main}"
git -C ../ASAPCollector checkout mainMVP CI is the source for compatible dependency checkouts; currently Collector uses its default branch. For reproducible runs, record all three exact revisions. ASAPPlanner is fetched at the revision pinned in Cargo manifests; do not substitute an unrelated local planner checkout.
Install Rust through rustup and install protoc, curl, jq, Python 3 and Git
using your system package manager. Docker is needed only for the real
Prometheus/Pushgateway demo below. Rust 1.98.0 is the toolchain used for these
local command checks.
rustup toolchain install 1.98.0 --profile minimal --component rustfmt --component clippy
rustc +1.98.0 --version
protoc --version
curl --version
jq --version
python3 --version
# For Docker-backed demos only:
docker version
cargo +1.98.0 fetch --locked
cargo +1.98.0 build --locked -p control_plane -p data_plane
cargo +1.98.0 build --locked -p control_plane \
--example calibration_candidates --example inspect_physical_dag \
--example compile_clickhouse_workload
target/debug/data_plane --help
mkdir -p target/readme-evidence
{
git rev-parse HEAD
git -C ../ASAPCollector rev-parse HEAD
git -C ../asap_sketchlib rev-parse HEAD
} > target/readme-evidence/revisions.txtThe executable is target/debug/data_plane, or target/release/data_plane if
you build with --release. Access to the pinned Git dependencies is required.
target/debug/examples/calibration_candidates \
docs/examples/asapquery-compatibility-demo-snapshot.json \
> target/readme-evidence/candidates.json
jq '.candidates[] | {candidate_index, unavailable_reason}' \
target/readme-evidence/candidates.json
target/debug/examples/inspect_physical_dag \
docs/examples/asapquery-compatibility-demo-snapshot.json \
> target/readme-evidence/selected.json
jq '.purpose' target/readme-evidence/selected.json
jq '.install_request.summary_catalog' target/readme-evidence/selected.json
jq '.install_request.precompute_plan | {materializations, executable_dags}' \
target/readme-evidence/selected.json
jq '.install_request.query_plan.entries' target/readme-evidence/selected.json
jq '.install_request.precompute_plan.schemas[] | {materialization, schema_id}' \
target/readme-evidence/selected.jsonExpect inspection_only, catalog/plan objects and explicit candidate rejection
reasons where unsupported. One verified demo export contained five candidate
entries (one installable), five selected materializations and six query entries;
these are inspection evidence, not a permanent optimizer-count contract.
Materialization IDs are definitions, not physical SIDs. Demo costs are not
measurements. The E2E walkthrough explains
ERP evidence and the version-2 measured-cost workflow.
The checked-in Prometheus YAML scrapes
Pushgateway at 127.0.0.1:19092 every second and includes:
remote_write:
- url: http://127.0.0.1:19091/api/v1/write
queue_config:
min_shards: 1
max_shards: 1
batch_send_deadline: 1sUse unused ports 19090–19092 and container names below. Prometheus must be healthy
before the asapquery profile starts. Initial Remote Write retries while the
backend starts are expected.
mkdir -p target/readme-evidence/prometheus
docker run -d --name asap-readme-pushgateway --network host \
prom/pushgateway:v1.9.0 --web.listen-address=:19092
docker run -d --name asap-readme-prometheus --network host \
-v "$PWD/demos/asapquery/prometheus.yml:/etc/prometheus/prometheus.yml:ro" \
prom/prometheus:v2.55.1 --config.file=/etc/prometheus/prometheus.yml \
--storage.tsdb.path=/prometheus --web.listen-address=:19090
for attempt in $(seq 1 60); do
curl -fsS http://127.0.0.1:19090/-/healthy && break
sleep 1
done
curl -fsS http://127.0.0.1:19090/-/healthy
target/debug/data_plane --profile asapquery \
--planning-snapshot docs/examples/asapquery-compatibility-demo-snapshot.json \
--prometheus-server http://127.0.0.1:19090 \
--forward-unsupported-queries --http-port 19091 \
--output-dir target/readme-evidence/prometheus/runtime \
> target/readme-evidence/prometheus/backend.log 2>&1 &
echo $! > target/readme-evidence/prometheus/backend.pid
for attempt in $(seq 1 60); do
curl -fsS http://127.0.0.1:19091/api/v1/health && break
sleep 1
done
curl -fsS http://127.0.0.1:19091/api/v1/healthPushgateway accepts exposition text; Prometheus performs the real scrape and
Snappy/protobuf Remote Write encoding. Do not post this text to /api/v1/write.
for sample in $(seq 1 15); do
printf '# TYPE asap_demo_gauge gauge\nasap_demo_gauge %s\n' "$sample" |
curl -fsS --data-binary @- http://127.0.0.1:19092/metrics/job/asapquery-demo
sleep 1
done
curl -fsS http://127.0.0.1:19091/api/v1/physical-plan/status \
| tee target/readme-evidence/prometheus/status.json | jq .
curl -fsS http://127.0.0.1:19091/api/v1/summary-inventory \
| tee target/readme-evidence/prometheus/inventory.json | jq .
curl -sS -D target/readme-evidence/prometheus/query.headers --get \
http://127.0.0.1:19091/api/v1/query \
--data-urlencode 'query=sum(sum_over_time(asap_demo_gauge[5s]))' \
> target/readme-evidence/prometheus/query.json
jq '{status, data, infos}' target/readme-evidence/prometheus/query.json
cat target/readme-evidence/prometheus/query.headersCheck actual response provenance and window coverage; a successful HTTP response alone is not warm execution. For a separately completed finite replay only, after every input has been delivered, the closure operation is:
curl -fsS -X POST http://127.0.0.1:19091/api/v1/precompute/drain | jq .Do not run that command against the live scraping setup above: it closes that receiver generation and later writes are rejected. It is not a periodic flush or an implicit continuous watermark. The real finite maintenance process test is available separately:
cargo +1.98.0 test --locked -p data_plane --test asapquery_compatibility_process_e2e \
immutable_maintenance_process::complete_group_maintenance_is_automatic_and_durable \
-- --exact --nocaptureThe focused protocol matrix uses the real backend process with a mock exact upstream, and removes temporary artifacts. The second command runs the separate real Prometheus/Pushgateway demo and handles its own cleanup. Stop the manual setup before the real demo because it uses the same ports.
kill "$(cat target/readme-evidence/prometheus/backend.pid)"
docker rm -f asap-readme-prometheus asap-readme-pushgateway
cargo +1.98.0 test --locked -p data_plane --test asapquery_compatibility_process_e2e \
collector_free_profile_serves_complete_matrix_and_falls_back_exactly -- --exact
./scripts/e2e.sh asapquery-demoKeep target/readme-evidence/prometheus/ and
target/asapquery-demo-evidence/ for inspection; delete them yourself only after
you no longer need the logs, outputs and runtime state.
This repository has a real backend-process MetricsQL fixture, but not a bundled self-contained native VictoriaMetrics deployment demo. The fixture starts the backend, installs an actual MetricsQL plan, sends Remote Write samples, checks labeled results, and shuts down its child process. Its exact upstream is a health-only test service, not native VictoriaMetrics.
mkdir -p target/readme-evidence/victoriametrics
cargo +1.98.0 test --locked -p data_plane --test asapquery_compatibility_process_e2e \
distinct_planning_process::distinct_range_uses_planner_selected_hll_and_source_labels \
-- --exact --nocapture \
> target/readme-evidence/victoriametrics/process.log 2>&1DISTINCT_PLANNED and DISTINCT_INSTALLED in the log expose selection and the
shared installed publication. The fixture checks the actual MetricsQL listener;
it is not a native differential or a performance benchmark.
For an existing native VM service at port 8428, the following independently starts an exact-fallback adapter. Load the intended dataset into that service using its normal ingestion setup first. The empty bootstrap deliberately has no accelerated bindings; this smoke request must not be called warm.
printf 'aggregations: []\n' > target/readme-evidence/victoriametrics/bootstrap.yaml
target/debug/data_plane \
--streaming-config target/readme-evidence/victoriametrics/bootstrap.yaml \
--http-port 19080 --victoriametrics-http-port 19081 \
--victoriametrics-url http://127.0.0.1:8428 \
--output-dir target/readme-evidence/victoriametrics/runtime \
> target/readme-evidence/victoriametrics/backend.log 2>&1 &
echo $! > target/readme-evidence/victoriametrics/backend.pid
for attempt in $(seq 1 60); do
curl -fsS http://127.0.0.1:19080/api/v1/health && break
sleep 1
done
curl -fsS http://127.0.0.1:19080/api/v1/health
curl -sS -D target/readme-evidence/victoriametrics/query.headers --get \
http://127.0.0.1:19081/api/v1/query \
--data-urlencode 'query=default_rollup(asap_demo_gauge[5s])' \
> target/readme-evidence/victoriametrics/query.json
jq . target/readme-evidence/victoriametrics/query.json
curl -fsS http://127.0.0.1:19080/api/v1/physical-plan/status | jq .
kill "$(cat target/readme-evidence/victoriametrics/backend.pid)"To inspect supported MetricsQL planning independently:
target/debug/examples/inspect_physical_dag \
docs/examples/asapquery-compatibility-demo-snapshot.json --metricsql \
> target/readme-evidence/victoriametrics/selected.json
jq '.install_request.query_plan.entries' \
target/readme-evidence/victoriametrics/selected.jsonThis does not install or ingest the artifact by itself. Use the fixture's normal
stage/activate path for an integrated example. Keep the logs, headers and JSON
under target/readme-evidence/victoriametrics/; see
MetricsQL support
for tenant paths and unsupported constructs.
Use a dedicated test ClickHouse server at http://127.0.0.1:8123, with
credentials supplied through CLICKHOUSE_USER/CLICKHOUSE_PASSWORD if needed.
The real process fixture drops and recreates default.telemetry and
default.divisors at the start of each scenario, and leaves the final tables
on the dedicated server; do not point it at a production database. It loads samples,
compiles an actual mixed query, publishes the shared plans, queries the backend,
and cleans up its child backend. The native server remains yours to manage.
mkdir -p target/readme-evidence/clickhouse
export CLICKHOUSE_URL=http://127.0.0.1:8123
curl -fsS --user "${CLICKHOUSE_USER:-default}:${CLICKHOUSE_PASSWORD:-}" \
"$CLICKHOUSE_URL/ping"
CLICKHOUSE_PLANNING_ARTIFACT="$PWD/target/readme-evidence/clickhouse/planning.json" \
cargo +1.98.0 test --locked -p data_plane --test clickhouse_differential_e2e \
compiled_publication_executes_mixed_dag_in_data_plane_process \
-- --exact --nocapture \
> target/readme-evidence/clickhouse/process.log 2>&1
jq '{selection_trace, catalog: .publication.summary_catalog}' \
target/readme-evidence/clickhouse/planning.jsonThe fixture runs SUM, COUNT and MAX scenarios. planning.json is overwritten
per scenario and retains the last publication; keep process.log for the complete
run. Without CLICKHOUSE_URL the real-server test skips; that is not a successful
native test. See SQL support
for the typed backfill and format boundaries.
The example reads ClickHouseSqlAutomaticWorkload JSON from stdin, not a
Prometheus snapshot. Reuse the current compiler envelope from the shared setup
and provide a typed table schema plus a fixed evaluation interval:
python3 - <<'PY'
import json
from pathlib import Path
root = Path('target/readme-evidence')
envelope = json.loads((root / 'selected.json').read_text())['install_request']['precompute_plan']['envelope']
envelope['plan_id'] = 9001
envelope['plan_version'] = 1
workload = {
'envelope': envelope,
'tables': {'telemetry': {
'columns': [
{'name': 'timestamp_ms', 'dtype': 'timestamp', 'nullable': False},
{'name': 'value', 'dtype': 'float64', 'nullable': False},
{'name': 'metric', 'dtype': 'utf8', 'nullable': False}],
'time_index': 0, 'unique_keys': [], 'closed': True}},
'accuracy': 'Exact',
'queries': [{'sql': 'SELECT sum(value) FROM telemetry WHERE timestamp_ms >= 0 AND timestamp_ms < 2000',
'start_ms': 0, 'end_ms': 2000, 'cumulative': True}]}
(root / 'clickhouse/workload.json').write_text(json.dumps(workload, indent=2))
PY
target/debug/examples/compile_clickhouse_workload \
< target/readme-evidence/clickhouse/workload.json \
> target/readme-evidence/clickhouse/compiled.json
jq '{selection_trace, catalog: .install.summary_catalog, query: .install.query_plan}' \
target/readme-evidence/clickhouse/compiled.jsonThe fixture above supplies real table data and exercises publication/execution; this offline command alone does neither. For a standalone exact-fallback listener against that native service:
printf 'aggregations: []\n' > target/readme-evidence/clickhouse/bootstrap.yaml
target/debug/data_plane \
--streaming-config target/readme-evidence/clickhouse/bootstrap.yaml \
--http-port 19082 --clickhouse-http-port 19083 \
--clickhouse-url "$CLICKHOUSE_URL" --clickhouse-database default \
--output-dir target/readme-evidence/clickhouse/runtime \
> target/readme-evidence/clickhouse/backend.log 2>&1 &
echo $! > target/readme-evidence/clickhouse/backend.pid
for attempt in $(seq 1 60); do
curl -fsS http://127.0.0.1:19082/api/v1/health && break
sleep 1
done
curl -fsS http://127.0.0.1:19082/api/v1/health
curl -sS -D target/readme-evidence/clickhouse/query.headers --get \
--user "${CLICKHOUSE_USER:-default}:${CLICKHOUSE_PASSWORD:-}" \
http://127.0.0.1:19083/ --data-urlencode 'query=SELECT 1 FORMAT JSON' \
> target/readme-evidence/clickhouse/query.json
jq . target/readme-evidence/clickhouse/query.json
curl -fsS http://127.0.0.1:19082/api/v1/physical-plan/status | jq .
kill "$(cat target/readme-evidence/clickhouse/backend.pid)"For authenticated requests, set CLICKHOUSE_USER and CLICKHOUSE_PASSWORD
for the curl commands above, or send X-ClickHouse-User and X-ClickHouse-Key
headers. The proxy forwards incoming authentication headers. Backend
--clickhouse-user and --clickhouse-password configure backfill access; they
do not automatically authenticate proxy fallback requests. The process fixture
uses its matching environment variables. Retain planning/selection artifacts, response headers,
JSON and process logs. A successful SQL response can be exact fallback or an
external-only DAG; only actual summary reads establish ASAP/hybrid execution.
The fixture's mixed-DAG assertions are stronger than a successful SELECT 1.
For recorded datasets, see the replay guide and execution calibration. Report correctness, fallbacks, build/update cost and whole-deployment resources separately from query latency. Manual examples leave evidence directories intact; remove them only when no longer needed. PID-file cleanup commands apply only to the still-running backend started by that manual run. The ClickHouse fixture leaves its final tables on your dedicated native server; remove those test tables or discard that test server separately after collecting evidence.
| Path | Contents |
|---|---|
| control_plane/ | Planner adapters, physical compilation, placement/cost evaluation, publication and runtime configuration. |
| crates/asap_types/ | Shared catalog, SDS identities, plan, grouping, window and producer contracts. |
| crates/asap_otel_proto/ | Modified OTLP protobuf bindings for supported external state ingestion. |
| data_plane/src/precompute_engine/ | Ingest-time operators, coordination and immutable maintenance execution. |
| data_plane/src/storage_engines/sketch_db/ | SummaryStore implementation, physical indexes, lifecycle, backfill and persistence. |
| data_plane/src/query_engines/ | Summary readout, shared DAG execution, protocol adapters and exact routing. |
| data_plane/src/drivers/ | HTTP, ingestion and control-plane interfaces. |
| data_plane/tests/ | Runtime and process integration tests. |
| demos/, scripts/, tools/ | Runnable demonstrations, validation and workload/evaluation tooling. |
| docs/ | Architecture, operator guides, support boundaries and evaluation evidence. |
MIT — see LICENSE.