Analytics boundary
Status: active product contract (Wave J Stage A, 2026-09-08).
Boundary
React SPA → typed /api/analytics/* → central Rust → DataFusion SQL and/or
central-analytics-v1 inline Rust → Arrow/JSON → UI render only
Do not scatter ad-hoc SQL through React. Do not reintroduce frontend/web/app/*.py
(removed; historical inventory only).
Domains
runtime · sensor_health · weather · economizer · comfort · airside · hydronic · mechanical_cooling · metering · schedules · equipment · rcx · wattlab_exports
Each domain: typed inputs, params, SQL or documented Rust path, null/unit rules, tests.
Engine labels (honest)
| Label | Meaning |
|---|---|
datafusion |
Historian / package Parquet via DataFusion SQL |
central-analytics-v1 |
Deterministic Rust compute on registered samples (not “secret pandas”) |
An engine label alone is not qualification — dispatch path + plan/fixture evidence required (Wave J J5/J6).
Today
- FDD:
sql_rules/+crates/fdd_rules(production) - Analytics:
services/central/src/analytics/+POST /api/analytics/* - SPA:
frontend/web/src/(Overview tables, RCx/Inspect Plotly) — no local pandas FDD
No arbitrary operator SQL editor. Integrator SQL lab (if any) is separate and gated.
SoT: openfdd_agent_spec/ARCHITECTURE.md · compute_boundary_ownership.yaml.