SQL FDD rules → Haystack / data-model roles

Every production DataFusion SQL rule in sql_rules/registry.yaml and the Haystack point names (or package map keys) that ingest into the SQL roles those rules need.

Ingest maps Haystack tags → SQL roles via haystack_point_to_role in crates/fdd_core/src/columns.rs. Blank / missing Haystack tags in a package = empty Overview / FDD / RCx — not a broken engine. See Package authoring and Rule readiness.

Registry count: 77 SQL rules (live, including the nine FCU-* rows). Re-generate this page when the registry changes.

The FCU-* rows are the roles both engines need before a later tip stress. The Haystack tag is the pandas oracle column. The arrow target is the DataFusion SQL role. Required cells are required on both engines. Optional cells are registry optional_roles: pandas duration rules read fan-status / fan-cmd from that set; the other optional columns are selected by the shared SQL CTE and may be absent (DataFusion injects NULL). Family parity stays sql_screening until tip and field stress, not until CI is green. Per-rule equations live in both cookbooks under Fan coil / zone_other.

Those Haystack names are flattened multi-tags, not a second id scheme. One fan-coil equip carries equip + fanCoilUnit + zone together; each point carries its own marker set (zone + air + temp + sensor becomes zone-air-temp). Open-FDD consumes the equipment stamp (equipType: fanCoil → kind zone_other for a sensor-owning master; resolved kind general for a setpoint-only follower) and these mapped roles. It does not classify the controller from equipment_id. See Zone terminals.

Rule id Required Haystack → SQL role Optional Haystack → SQL role
FAN-RUNTIME-HOURS fan-cmd → fan_cmd —
VAV-1 zone-air-temp → zone_t occupied → occ_mode
VAV-2 zone-air-temp → zone_t, occupied → occ_mode —
AVG-ZONE-TEMP zone-air-temp → zone_t —
ZONE-COMFORT-PCT zone-air-temp → zone_t —
FAULT-ELAPSED-HOURS zone-air-temp → zone_t —
OAT-METEO outside-air-temp → oa_t web-outside-air-temp → web_oa_t
FC13-SAT-HIGH discharge-air-temp → sat, discharge-air-temp-sp → sat_sp, cooling-valve → clg_valve_pct, outside-air-damper → oa_damper_pct fan-status → fan_status, fan-cmd → fan_cmd
ECON-2 outside-air-temp → oa_t, outside-air-damper → oa_damper_pct fan-status → fan_status, fan-cmd → fan_cmd
FC1 duct-static-pressure → duct_static, duct-static-pressure-sp → duct_static_sp, fan-cmd → fan_cmd fan-status → fan_status, fan-cmd → fan_cmd
FC2 mixed-air-temp → mat, outside-air-temp → oa_t, return-air-temp → rat, fan-cmd → fan_cmd fan-status → fan_status, fan-cmd → fan_cmd
FC3 mixed-air-temp → mat, outside-air-temp → oa_t, return-air-temp → rat, fan-cmd → fan_cmd fan-status → fan_status, fan-cmd → fan_cmd
FC7 discharge-air-temp → sat, discharge-air-temp-sp → sat_sp, heating-valve → htg_valve_pct fan-cmd → fan_cmd, fan-status → fan_status
FC8 discharge-air-temp → sat, mixed-air-temp → mat, outside-air-damper → oa_damper_pct, cooling-valve → clg_valve_pct fan-status → fan_status, fan-cmd → fan_cmd
FC9 outside-air-temp → oa_t, discharge-air-temp-sp → sat_sp, outside-air-damper → oa_damper_pct, cooling-valve → clg_valve_pct fan-status → fan_status, fan-cmd → fan_cmd
FC10 mixed-air-temp → mat, outside-air-temp → oa_t, outside-air-damper → oa_damper_pct, cooling-valve → clg_valve_pct fan-status → fan_status, fan-cmd → fan_cmd
FC11 outside-air-temp → oa_t, discharge-air-temp-sp → sat_sp, outside-air-damper → oa_damper_pct, cooling-valve → clg_valve_pct fan-status → fan_status, fan-cmd → fan_cmd
FC12 discharge-air-temp → sat, mixed-air-temp → mat, outside-air-damper → oa_damper_pct, cooling-valve → clg_valve_pct fan-status → fan_status, fan-cmd → fan_cmd
ECON-1 fan-cmd → fan_cmd, outside-air-damper → oa_damper_pct, outside-air-temp → oa_t fan-status → fan_status, fan-cmd → fan_cmd
ECON-4 mixed-air-temp → mat, return-air-temp → rat, outside-air-temp → oa_t, fan-cmd → fan_cmd fan-status → fan_status, fan-cmd → fan_cmd
SV-RANGE — outside-air-temp → oa_t, mixed-air-temp → mat, zone-air-temp → zone_t, return-air-temp → rat, discharge-air-temp → sat, chilled-water-supply-temp → chw_supply_t, chilled-water-return-temp → chw_return_t, hot-water-supply-temp → hw_supply_t, hot-water-return-temp → hw_return_t, outside-air-humidity → oa_h, duct-static-pressure → duct_static, fan-status → fan_status, fan-cmd → fan_cmd, pump-status → pump_status, chw-pump-cmd → chw_pump_cmd, chiller-status → chiller_status, elec-energy → kwh, elec-power → electric_kw, elec-energy → electric_kwh
SV-FLATLINE — outside-air-temp → oa_t, mixed-air-temp → mat, zone-air-temp → zone_t, return-air-temp → rat, discharge-air-temp → sat, chilled-water-supply-temp → chw_supply_t, chilled-water-return-temp → chw_return_t, hot-water-supply-temp → hw_supply_t, hot-water-return-temp → hw_return_t, outside-air-humidity → oa_h, fan-status → fan_status, fan-cmd → fan_cmd, pump-status → pump_status, chw-pump-cmd → chw_pump_cmd, chiller-status → chiller_status
SV-SPIKE — outside-air-temp → oa_t, mixed-air-temp → mat, zone-air-temp → zone_t, return-air-temp → rat, discharge-air-temp → sat, chilled-water-supply-temp → chw_supply_t, chilled-water-return-temp → chw_return_t, hot-water-supply-temp → hw_supply_t, hot-water-return-temp → hw_return_t, outside-air-humidity → oa_h, duct-static-pressure → duct_static, fan-status → fan_status, fan-cmd → fan_cmd, pump-status → pump_status, chw-pump-cmd → chw_pump_cmd, chiller-status → chiller_status
SV-STALE — outside-air-temp → oa_t, mixed-air-temp → mat, zone-air-temp → zone_t, return-air-temp → rat, discharge-air-temp → sat, chilled-water-supply-temp → chw_supply_t, chilled-water-return-temp → chw_return_t, hot-water-supply-temp → hw_supply_t, hot-water-return-temp → hw_return_t, outside-air-humidity → oa_h
SV-RATE — outside-air-temp → oa_t, mixed-air-temp → mat, zone-air-temp → zone_t, return-air-temp → rat, discharge-air-temp → sat
PID-HUNT-1 — outside-air-damper → oa_damper_pct, cooling-valve → clg_valve_pct, heating-valve → htg_valve_pct, damper → damper_pct, loop-enabled → loop_enabled, fan-status → fan_status, fan-cmd → fan_cmd
FC4 outside-air-damper → oa_damper_pct, cooling-valve → clg_valve_pct, fan-cmd → fan_cmd fan-status → fan_status
FC5 discharge-air-temp → sat, mixed-air-temp → mat, heating-valve → htg_valve_pct, fan-cmd → fan_cmd fan-status → fan_status, fan-cmd → fan_cmd
FC6 mixed-air-temp → mat, return-air-temp → rat, outside-air-temp → oa_t, fan-cmd → fan_cmd, vav-total-airflow → vav_total_flow fan-status → fan_status, fan-cmd → fan_cmd
FC14 cooling-valve → clg_valve_pct cooling-coil-entering-temp → cooling_coil_entering_temp, cooling-coil-leaving-temp → cooling_coil_leaving_temp, mixed-air-temp → mat, discharge-air-temp → sat, outside-air-damper → oa_damper_pct, fan-status → fan_status, fan-cmd → fan_cmd
FC15 — heating-coil-entering-temp → heating_coil_entering_temp, heating-coil-leaving-temp → heating_coil_leaving_temp, mixed-air-temp → mat, discharge-air-temp → sat, heating-valve → htg_valve_pct, cooling-valve → clg_valve_pct, fan-status → fan_status, fan-cmd → fan_cmd
AHU-SATDEV discharge-air-temp → sat, discharge-air-temp-sp → sat_sp fan-status → fan_status, fan-cmd → fan_cmd
AHU-DUCTHI duct-static-pressure → duct_static, duct-static-pressure-sp → duct_static_sp, fan-cmd → fan_cmd fan-status → fan_status, fan-cmd → fan_cmd
AHU-SIMUL heating-valve → htg_valve_pct, cooling-valve → clg_valve_pct fan-status → fan_status, fan-cmd → fan_cmd
ECON-3 outside-air-damper → oa_damper_pct, cooling-valve → clg_valve_pct web-outside-air-temp → web_oa_t, web-outside-air-dewpoint → web_oa_dp, fan-status → fan_status, fan-cmd → fan_cmd
ECON-5 preheat-leaving-temp → preheat_leave_t, discharge-air-temp-sp → sat_sp, outside-air-temp → oa_t, heating-valve → htg_valve_pct fan-status → fan_status, fan-cmd → fan_cmd
ECON-6 outside-air-damper → oa_damper_pct web-outside-air-temp → web_oa_t, fan-status → fan_status, fan-cmd → fan_cmd
ECON-7 outside-air-damper → oa_damper_pct, cooling-valve → clg_valve_pct web-outside-air-temp → web_oa_t, web-outside-air-dewpoint → web_oa_dp, fan-status → fan_status, fan-cmd → fan_cmd
MECH-OAT-1 web-outside-air-temp → web_oa_t cooling-valve → clg_valve_pct, chiller-status → chiller_status
CMD-1 fan-cmd → fan_cmd, fan-status → fan_status —
OA-1 mixed-air-temp → mat, return-air-temp → rat, outside-air-temp → oa_t, fan-cmd → fan_cmd fan-status → fan_status, fan-cmd → fan_cmd
DMP-1 outside-air-damper → oa_damper_pct, outside-air-temp → oa_t, mixed-air-temp → mat fan-status → fan_status, fan-cmd → fan_cmd
VLV-1 cooling-valve → clg_valve_pct, discharge-air-temp → sat, discharge-air-temp-sp → sat_sp, mixed-air-temp → mat fan-status → fan_status, fan-cmd → fan_cmd
VAV-3 outside-air-temp → oa_t, reheat-valve → reheat_valve_pct, zone-airflow → zone_flow fan-status → fan_status, fan-cmd → fan_cmd
VAV-4 damper → damper_pct, zone-airflow → zone_flow fan-status → fan_status, fan-cmd → fan_cmd
VAV-5 zone-airflow → zone_flow, damper → damper_pct fan-status → fan_status, fan-cmd → fan_cmd
VAV-6 outside-air-temp → oa_t, reheat-valve → reheat_valve_pct clg-available → clg_available
VAV-REHEAT reheat-valve → reheat_valve_pct, vav-discharge-air-temp → vav_discharge_t, vav-inlet-air-temp → vav_inlet_t, zone-airflow → zone_flow fan-status → fan_status, fan-cmd → fan_cmd
VAV-AHU-LEAVE vav-discharge-air-temp → vav_discharge_t, ahu-discharge-air-temp → ahu_sat, zone-airflow → zone_flow fan-status → fan_status, fan-cmd → fan_cmd
VAV-7 zone-airflow → zone_flow min-flow-sp → min_flow_sp, fan-status → fan_status, fan-cmd → fan_cmd
FCU-SENSOR-NULL zone-air-temp-sp → zone_air_temp_sp zone-air-temp → zone_t
FCU-HTG-COIL discharge-air-temp → sat, zone-air-temp → zone_t, heating-valve → htg_valve_pct cooling-valve → clg_valve_pct, damper-cmd → damper_cmd, damper → damper_pct, zone-co2 → zone_co2, fan-status → fan_status, fan-cmd → fan_cmd
FCU-CLG-COIL discharge-air-temp → sat, zone-air-temp → zone_t, cooling-valve → clg_valve_pct, heating-valve → htg_valve_pct damper-cmd → damper_cmd, damper → damper_pct, zone-co2 → zone_co2, fan-status → fan_status, fan-cmd → fan_cmd
FCU-VALVE-PASS-HTG discharge-air-temp → sat, zone-air-temp → zone_t, heating-valve → htg_valve_pct, cooling-valve → clg_valve_pct damper-cmd → damper_cmd, damper → damper_pct, zone-co2 → zone_co2, fan-status → fan_status, fan-cmd → fan_cmd
FCU-VALVE-PASS-CLG discharge-air-temp → sat, zone-air-temp → zone_t, heating-valve → htg_valve_pct, cooling-valve → clg_valve_pct damper-cmd → damper_cmd, damper → damper_pct, zone-co2 → zone_co2, fan-status → fan_status, fan-cmd → fan_cmd
FCU-DAMPER-POS damper-cmd → damper_cmd, damper → damper_pct discharge-air-temp → sat, zone-air-temp → zone_t, heating-valve → htg_valve_pct, cooling-valve → clg_valve_pct, zone-co2 → zone_co2, fan-status → fan_status, fan-cmd → fan_cmd
FCU-CO2-DAMPER zone-co2 → zone_co2, damper-cmd → damper_cmd discharge-air-temp → sat, zone-air-temp → zone_t, heating-valve → htg_valve_pct, cooling-valve → clg_valve_pct, damper → damper_pct, fan-status → fan_status, fan-cmd → fan_cmd
FCU-DEADBAND cooling-sp → cooling_sp, heating-sp → heating_sp —
FCU-MODE-CYCLE heating-valve → htg_valve_pct, cooling-valve → clg_valve_pct —
RESET-1 discharge-air-temp-sp → sat_sp, outside-air-temp → oa_t fan-status → fan_status, fan-cmd → fan_cmd
CHW-NOLOAD-1 — chiller-status → chiller_status, chiller-cmd → chiller_cmd, chw-pump-status → chw_pump_status, chw-pump-cmd → chw_pump_cmd, building-zone-load-satisfied → building_zone_load_satisfied, building-ahu-load-satisfied → building_ahu_load_satisfied
CHW-1 chilled-water-supply-temp → chw_supply_t, chilled-water-return-temp → chw_return_t chw-pump-cmd → chw_pump_cmd, pump-status → pump_status, chiller-status → chiller_status, chiller-current → chiller_current, chiller-amps → chiller_amps, chiller-power → chiller_power, chw-flow → chw_flow
CHW-2 chw-diff-pressure → chw_dp, chw-diff-pressure-sp → chw_dp_sp, chw-pump-cmd → chw_pump_cmd —
CHW-3 chilled-water-supply-temp → chw_supply_t, chilled-water-supply-temp-sp → chw_supply_sp, chw-pump-cmd → chw_pump_cmd —
CHW-4 chw-flow → chw_flow, chw-pump-cmd → chw_pump_cmd —
CW-OPT-1 condenser-water-supply-temp → cw_supply_t, web-outside-air-wetbulb → web_wb_t pump-status → pump_status, chiller-status → chiller_status, chw-flow → chw_flow, chw-pump-cmd → chw_pump_cmd
CW-APR-1 condenser-water-supply-temp → cw_supply_t, web-outside-air-wetbulb → web_wb_t, tower-fan-cmd → tower_fan_cmd pump-status → pump_status, chiller-status → chiller_status, chw-flow → chw_flow, chw-pump-cmd → chw_pump_cmd
CW-FAN-1 condenser-water-supply-temp → cw_supply_t, web-outside-air-wetbulb → web_wb_t, tower-fan-cmd → tower_fan_cmd pump-status → pump_status, chiller-status → chiller_status, chw-flow → chw_flow, chw-pump-cmd → chw_pump_cmd
HP-1 discharge-air-temp → sat, zone-air-temp → zone_t, fan-cmd → fan_cmd compressor-status → compressor_status, fan-status → fan_status
WX-1 outside-air-temp → oa_t —
TRIM-1 duct-static-pressure → duct_static duct-static-pressure-sp → duct_static_sp, static-reset-request → static_reset_request, fan-status → fan_status, fan-cmd → fan_cmd
TRIM-3 hot-water-supply-temp → hw_supply_t pump-status → pump_status, chiller-status → chiller_status, chw-flow → chw_flow, chw-pump-cmd → chw_pump_cmd
TRIM-4 chilled-water-supply-temp → chw_supply_t pump-status → pump_status, chiller-status → chiller_status, chw-flow → chw_flow, chw-pump-cmd → chw_pump_cmd
SCHED-1 occupied → occ_mode, fan-status → fan_status zone-air-temp → zone_t
SCHED-247 — fan-status → fan_status, pump-status → pump_status, chiller-status → chiller_status, fan-cmd → fan_cmd
UTIL-MONTHLY — elec-energy → kwh, elec-power → electric_kw
UTIL-INTERVAL — elec-energy → kwh, elec-power → electric_kw

Role ↔ Haystack quick reference

SQL role Preferred Haystack tag
ahu_sat ahu-discharge-air-temp
building_ahu_load_satisfied building-ahu-load-satisfied
building_zone_load_satisfied building-zone-load-satisfied
chiller_amps chiller-amps
chiller_cmd chiller-cmd
chiller_current chiller-current
chiller_power chiller-power
chiller_status chiller-status
chw_dp chw-diff-pressure
chw_dp_sp chw-diff-pressure-sp
chw_flow chw-flow
chw_pump_cmd chw-pump-cmd
chw_pump_status chw-pump-status
chw_return_t chilled-water-return-temp
chw_supply_sp chilled-water-supply-temp-sp
chw_supply_t chilled-water-supply-temp
clg_valve_pct cooling-valve
compressor_status compressor-status
cooling_coil_entering_temp cooling-coil-entering-temp
cooling_coil_leaving_temp cooling-coil-leaving-temp
cooling_sp cooling-sp
cw_pump_cmd cw-pump-cmd
cw_return_t condenser-water-return-temp
cw_supply_t condenser-water-supply-temp
damper_cmd damper-cmd
damper_pct damper
duct_static duct-static-pressure
duct_static_sp duct-static-pressure-sp
elec_power elec-power
electric_kw elec-power
electric_kwh elec-energy
fan_cmd fan-cmd
fan_status fan-status
heating_coil_entering_temp heating-coil-entering-temp
heating_coil_leaving_temp heating-coil-leaving-temp
heating_sp heating-sp
htg_valve_pct heating-valve
hw_pump_cmd hw-pump-cmd
hw_pump_status hw-pump-status
hw_return_t hot-water-return-temp
hw_supply_t hot-water-supply-temp
kwh elec-energy
loop_enabled loop-enabled
mat mixed-air-temp
min_flow_sp min-flow-sp
oa_damper_pct outside-air-damper
oa_h outside-air-humidity
oa_t outside-air-temp
occ_mode occupied
preheat_leave_t preheat-leaving-temp
pump_status pump-status
rat return-air-temp
reheat_valve_pct reheat-valve
return_fan return-fan-cmd
sat discharge-air-temp
sat_sp discharge-air-temp-sp
static_reset_request static-reset-request
tower_fan_cmd tower-fan-cmd
vav_discharge_t vav-discharge-air-temp
vav_inlet_t vav-inlet-air-temp
vav_total_flow vav-total-airflow
web_oa_dp web-outside-air-dewpoint
web_oa_h web-outside-air-humidity
web_oa_t web-outside-air-temp
web_wb_t web-outside-air-wetbulb
zone_air_temp_sp zone-air-temp-sp
zone_co2 zone-co2
zone_flow zone-airflow
zone_rh zone-air-humidity
zone_t zone-air-temp