Standards-first metadata for every shipped cookbook rule. Detection SQL/Pandas live in the SQL and Pandas cookbooks. P2 rules: extended P2 section.
All thresholds are defaults — site-adjustable. confirmation_seconds default 300 unless noted.
Sensor validation
| id |
taxonomy_path |
equipment |
severity |
required_points |
confirmation_s |
root_cause_candidates |
| SV-1 |
sensor.quality.vav.zone_range |
vav |
2 |
zone_t, occ_mode |
300 |
Bad sensor, miscalibrated zone T |
| SV-2 |
sensor.quality.site.oa_range |
ahu |
2 |
oa_t |
300 |
OA sensor fault, exposure issue |
| SV-3 |
sensor.quality.site.oa_humidity |
ahu |
2 |
oa_h |
300 |
Humidity sensor drift |
| SV-4 |
sensor.quality.ahu.mixing_envelope |
ahu |
2 |
mat, oat, rat |
300 |
MAT sensor, mixed damper fault |
| SV-5 |
sensor.quality.site.stale_data |
site |
3 |
timestamp |
300 |
Poll failure, historian gap |
| SV-6 |
sensor.quality.generic.flatline_roc |
site |
2 |
(per rule) |
300 |
Stuck sensor, comm loss |
| SV-7 |
sensor.quality.generic.wrong_units |
site |
2 |
(per rule) |
300 |
Scaling error in BAS export |
AHU FC1–FC15 (GL36-aligned)
| id |
taxonomy_path |
severity |
required_points |
confirmation_s |
recommended_action |
| FC1 |
control.loop.ahu.duct_static_low |
3 |
duct_static, duct_static_sp, fan_cmd |
300 |
Check fan VFD, duct leaks, SP sensor |
| FC2 |
safety.envelope.ahu.mat_below_mix |
2 |
mat, oat, rat, fan_cmd |
600 |
Verify MAT/OAT/RAT sensors, damper |
| FC3 |
safety.envelope.ahu.mat_above_mix |
2 |
mat, oat, rat, fan_cmd |
600 |
Same as FC2 |
| FC4 |
control.loop.ahu.pid_hunting |
2 |
htg_valve_pct, clg_valve_pct, fan_cmd, oa_damper_pct |
3600 |
Tune PID, check hunting loops |
| FC5 |
control.loop.ahu.sat_cold_heating |
3 |
sat, htg_valve_pct, fan_cmd |
300 |
Heating valve, SAT sensor |
| FC6 |
ventilation.ahu.oa_fraction_mismatch |
2 |
mat, rat, oat, fan_cmd |
300 |
Economizer, OA damper |
| FC7 |
control.loop.ahu.sat_low_full_heat |
3 |
sat, htg_valve_pct, fan_cmd |
300 |
Heating capacity, valve |
| FC8 |
economizer.ahu.sat_above_blend_econ |
2 |
sat, oat, rat, mat, fan_cmd |
300 |
Economizer control |
| FC9 |
economizer.ahu.oat_too_warm_free_cool |
2 |
oat, clg_valve_pct, oa_damper_pct |
300 |
Economizer lockout setpoints |
| FC10 |
economizer.ahu.oat_mat_mismatch_mech |
2 |
oat, mat, clg_valve_pct |
300 |
MAT sensor, economizer |
| FC11 |
economizer.ahu.oat_mat_mismatch_econ |
2 |
oat, mat, oa_damper_pct |
300 |
Same as FC10 |
| FC12 |
control.loop.ahu.sat_above_blend_cool |
2 |
sat, oat, rat, clg_valve_pct |
300 |
Cooling/economizer sequencing |
| FC13 |
control.loop.ahu.sat_above_sp_full_cool |
3 |
sat, sat_sp, clg_valve_pct, fan_cmd |
300 |
Cooling capacity, SAT SP |
| FC14 |
actuator.leakage.ahu.chw_coil_inactive |
2 |
chw_valve_pct, sat, sat_sp |
300 |
CHW valve leakage |
| FC15 |
actuator.leakage.ahu.hw_coil_inactive |
2 |
htg_valve_pct, sat, sat_sp |
300 |
HW valve leakage |
AHU auxiliary · VAV · economizer · plant · HP · WX · TRIM · v2
| id |
taxonomy_path |
equipment |
severity |
confirmation_s |
| SAT_DEVIATION |
control.loop.ahu.sat_tracking |
ahu |
2 |
600 |
| DUCT_STATIC_HIGH |
control.loop.ahu.duct_static_high |
ahu |
2 |
300 |
| HEAT_COOL_SIMULT |
control.loop.ahu.simultaneous_heat_cool |
ahu |
3 |
300 |
| FAN_OFF_DUCT_WARM |
schedule.ahu.fan_off_warm_duct |
ahu |
2 |
600 |
| VAV-1 |
terminal.vav.comfort_band |
vav |
2 |
900 |
| VAV-2 |
schedule.vav.night_setback_miss |
vav |
2 |
1800 |
| VAV-3 |
terminal.vav.excessive_reheat |
vav |
2 |
300 |
| VAV-4 |
actuator.leakage.vav.damper_stuck_open |
vav |
2 |
900 |
| VAV-5 |
terminal.vav.airflow_sensor_bias |
vav |
2 |
900 |
| VAV-6 |
terminal.vav.reheat_with_cooling |
vav |
2 |
300 |
| VAV-7 |
terminal.vav.min_airflow_violation |
vav |
2 |
900 |
| ECON-1–5 |
economizer.ahu.* |
ahu |
2 |
300–600 |
| OA-1 |
ventilation.ahu.low_oa_fraction |
ahu |
2 |
900 |
| OA-2 |
ventilation.ahu.dcv_minimum_oa |
ahu |
2 |
900 |
| CHW-1–4 |
plant.performance.chw.* |
plant.chw |
2–3 |
300–900 |
| PLANT-1 |
reset.plant.chw.dp_reset_missing |
plant.chw |
2 |
900 |
| TOWER-1 |
plant.performance.tower.approach_high |
plant.tower |
2 |
900 |
| HP-1 |
control.loop.hp.discharge_cold |
hp |
2 |
600 |
| WX-1–2 |
sensor.quality.weather.* |
sensor.weather |
2 |
300 |
| TRIM-1–4 |
kpi.advisory.* |
site |
1 |
1800 |
| RESET-1 |
reset.ahu.sat_oa_reset_missing |
ahu |
2 |
900 |
| SCHED-1 |
schedule.ahu.unoccupied_runtime |
ahu |
2 |
1800 |
| OVR-1 |
override.ahu.persistent_manual |
ahu |
2 |
3600 |
| CMD-1 |
command.status.ahu.fan_cmd_status |
ahu |
3 |
600 |
| VLV-1 |
actuator.leakage.ahu.clg_valve |
ahu |
2 |
900 |
| DMP-1 |
actuator.leakage.ahu.oa_damper |
ahu |
2 |
900 |
| SP-HIGH / SP-LOW |
reset.vav.occupied_sp_drift |
vav |
2 |
900 |
| CTRL-2 |
control.loop.generic.hunting |
ahu |
2 |
3600 |
| KPI-1 |
kpi.advisory.site.performance_score |
site |
1 |
86400 |
Validation scenarios (all nontrivial rules)
| scenario |
expected fault_raw |
| normal |
false |
| obvious_fault |
true after confirmation |
| borderline |
document sensitivity |
| missing_point |
false |
| bad_sensor |
false (gated) |
| wrong_units |
false or true (SV-7) |
Fixtures: benchmark strategy · docs/rules/cookbook/fixtures/