P0 rule catalog — full metadata

Standards-first metadata for every validated cookbook rule (vibe19 catalog). Detection SQL/Pandas live in the SQL and Pandas cookbooks.

All thresholds are defaults — site-adjustable. confirmation_seconds default 300 unless noted.


Validated rules

id family equipment roles confirmation_s equation
SV-RANGE sensor ahu, vav, chiller, boiler, weather, zone, heatpump   300 Any modeled sensor reads outside its physical hard range (e.g. OAT −60–130°F, SAT 30–150°F, CHWS 30–80°F).
SV-FLATLINE sensor ahu, vav, chiller, boiler, weather, zone, heatpump   300 Sensor value unchanged (Δ ≤ tolerance) across the flatline window — stuck / frozen sensor.
SV-SPIKE sensor ahu, vav, chiller, boiler, weather, zone, heatpump   300 Sample-to-sample jump exceeds the physical spike limit for the sensor type.
SV-STALE sensor ahu, vav, chiller, boiler, weather, zone, heatpump   300 All modeled sensors unchanged over the stale window — data feed likely dropped.
SV-RATE sensor ahu, vav, chiller, boiler, weather, zone, heatpump   600 Implausible sustained rate-of-change for mapped sensors. Thresholds depend on quantity, location, and operating state…
PID-HUNT-1 control ahu, vav, chiller, boiler, heatpump   300 Rolling 1h total variation of any 0–100% control output (dampers, valves, fan speeds, heat/cool cmds) with span ≥20%,…
FC1 ahu ahu duct-static-pressure, duct-static-pressure-sp, fan-cmd 300 Fan ≥ 87% AND duct static < static SP − 0.12 in.w.c.
FC2 ahu ahu mixed-air-temp, outside-air-temp, return-air-temp, fan-cmd 600 Fan on AND MAT + mix_tol < min(RAT − mix_tol, OAT − mix_tol) (≡ MAT < min(RAT, OAT) − 2·mix_tol; default mix_tol = 1.…
FC3 ahu ahu mixed-air-temp, outside-air-temp, return-air-temp, fan-cmd 600 Fan on AND MAT − mix_tol > max(RAT + mix_tol, OAT + mix_tol) (≡ MAT > max(RAT, OAT) + 2·mix_tol; default mix_tol = 1.…
FC4 ahu ahu outside-air-damper, cooling-valve, fan-cmd 3600 More than 5 operating-mode entry transitions in any hour (heating/econ/mech modes).
FC5 ahu ahu discharge-air-temp, mixed-air-temp, fan-cmd, heating-valve 600 Fan on AND heating > 1% AND SAT + mix_tol ≤ MAT − mix_tol + 0.55°F (default mix_tol = 1.15°F).
FC6 ahu ahu mixed-air-temp, outside-air-temp, return-air-temp, vav-total-airflow 600 |RAT−OAT| ≥ 5°F AND |estimated OA% − design min OA%| > 15% in heating/mech-only modes.
FC7 ahu ahu discharge-air-temp, discharge-air-temp-sp, fan-cmd, heating-valve 600 Fan on AND heating > 90% AND SAT < SAT SP − 1.0°F.
FC8 ahu ahu discharge-air-temp, mixed-air-temp, outside-air-damper, cooling-valve 600 Economizer open, CHW < 10%, |SAT − 0.55°F − MAT| > √(supply_tol²+mix_tol²).
FC9 ahu ahu outside-air-temp, discharge-air-temp-sp, outside-air-damper, cooling-valve 600 Economizer open, CHW < 10%, OAT − mix_tol > SAT SP − 0.55°F + mix_tol.
FC10 ahu ahu mixed-air-temp, outside-air-temp, outside-air-damper, cooling-valve 600 CHW > 1%, economizer > 90%, |MAT − OAT| > √(mix_tol²+mix_tol²).
FC11 ahu ahu outside-air-temp, discharge-air-temp-sp, outside-air-damper, cooling-valve 600 CHW > 1%, economizer > 90%, OAT + mix_tol < SAT SP − 0.55°F − mix_tol.
FC12 ahu ahu discharge-air-temp, mixed-air-temp, outside-air-damper, cooling-valve 600 CHW > 1%, SAT − supply_tol − 0.55°F > MAT + mix_tol at min or full economizer.
FC13 ahu ahu discharge-air-temp, discharge-air-temp-sp, outside-air-damper, cooling-valve 600 CHW > 1%, SAT > SAT SP + 1.0°F at min or full economizer.
FC14 ahu ahu cooling-coil-entering-temp, cooling-coil-leaving-temp, outside-air-damper, cooling-valve 600 Cooling coil ΔT ≥ √(mix_tol²+mix_tol²)+0.55°F while coil should be inactive.
FC15 ahu ahu heating-coil-entering-temp, heating-coil-leaving-temp, outside-air-damper, cooling-valve 600 Heating coil ΔT ≥ √(mix_tol²+mix_tol²)+0.55°F while coil should be inactive.
AHU-SATDEV ahu ahu discharge-air-temp, discharge-air-temp-sp 600 |SAT − SAT SP| > 5°F.
AHU-DUCTHI ahu ahu duct-static-pressure, duct-static-pressure-sp 300 Duct static > static SP + margin. Evaluates when fan is proven on OR duct static itself exceeds pressure_on_min (catc…
AHU-SIMUL ahu ahu heating-valve, cooling-valve 300 Heating valve > 10% AND cooling valve > 10% at once.
OAT-METEO ahu ahu outside-air-temp, web-outside-air-temp 900 BAS OAT sensor differs from Open-Meteo dry bulb by more than 5°F.
ECON-1 ahu ahu fan-cmd, outside-air-damper, outside-air-temp 600 Fan on, OA damper < 5%, OAT > 55°F (should be economizing).
ECON-2 ahu ahu outside-air-temp, outside-air-damper 300 OAT > 63°F AND OA damper > 42% (should be at minimum).
ECON-3 ahu ahu outside-air-damper, cooling-valve 300 Web free-cooling opportunity: 60°F ≤ dry-bulb < 72°F AND dewpoint < 60°F (dewpoint from web sensor or calculated from…
ECON-4 ahu ahu mixed-air-temp, return-air-temp, outside-air-temp, fan-cmd 600 Fan on, |RAT−OAT| > 2.2°F, estimated OA fraction < 21%.
ECON-5 ahu ahu preheat-leaving-temp, discharge-air-temp-sp, outside-air-temp, heating-valve 600 Preheat leaving air > 2.2°F above target while preheat active.
ECON-6 ahu ahu outside-air-damper 600 Web dry-bulb < 25°F AND OA damper above winter min-OA ceiling (default 25%). AHU should be at minimum OA in cold weat…
ECON-7 ahu ahu outside-air-damper 600 Economizer-OK web weather: dew point < 60°F AND dry-bulb < 72°F (above a 35°F freeze-guard floor; dewpoint from web s…
MECH-OAT-1 ahu ahu, chiller, heatpump   600 Proven DX/chiller mechanical cooling while web dry-bulb < 60°F. Uses compressor/chiller/pump/amps/power proof — not A…
CHW-NOLOAD-1 plant chiller   1800 Chiller/plant proven running while building load is satisfied: all mapped zones inside comfort band OR all mapped AHU…
VAV-1 vav vav, zone zone-air-temp 900 Zone temp < 70°F or > 75°F.
VAV-2 vav vav, zone zone-air-temp, occupied 900 Unoccupied AND zone temp > setback_hi (default 68°F).
VAV-3 vav vav outside-air-temp, reheat-valve 300 Air flowing AND OAT > 78°F AND reheat valve > 52%.
VAV-4 vav vav damper 900 Air flowing AND damper > 97.5% sustained across the window.
VAV-5 vav vav zone-airflow, damper 900 Airflow > 50 cfm while damper < 10% (implausible flow).
VAV-6 vav vav outside-air-temp, reheat-valve 900 OAT < 65°F AND reheat valve > 25%.
VAV-REHEAT vav vav reheat-valve, vav-discharge-air-temp, vav-inlet-air-temp 900 Air flowing AND reheat valve > 30% AND box discharge temp rises < 3°F above duct inlet (air from AHU) — stuck or fail…
VAV-AHU-LEAVE vav vav vav-discharge-air-temp, ahu-discharge-air-temp 900 Air flowing AND |VAV discharge − parent AHU SAT| > band. Needs package topology (vav_to_ahu) so ahu_sat is enrich…
VAV-7 vav vav zone-airflow 900 Flow below min SP (when mapped), OR airflow stays flat (low rolling std) at a high mean while air is on (mins too hig…
CHW-1 plant chiller chilled-water-supply-temp, chilled-water-return-temp 900 Pump on AND (CHWR − CHWS) < 4°F.
CHW-2 plant chiller chw-diff-pressure, chw-diff-pressure-sp, chw-pump-cmd 300 Pump ≥ 87% AND CHW DP < DP SP − 2.2.
CHW-3 plant chiller chilled-water-supply-temp, chilled-water-supply-temp-sp, chw-pump-cmd 300 Pump on AND |CHWS − CHWS SP| > 2.2°F.
CHW-4 plant chiller chw-flow, chw-pump-cmd 300 Pump ≥ 87% AND CHW flow > 1100 gpm.
HP-1 heatpump heatpump discharge-air-temp, zone-air-temp, fan-cmd 600 Fan on, zone < 69°F, discharge SAT < 85°F.
WX-1 weather weather outside-air-temp 300 OAT sample-to-sample jump > 16°F.
CW-OPT-1 plant chiller, cooling_tower condenser-water-supply-temp 900 CW supply significantly colder than web wet-bulb + design approach (Stull WB) — tower over-cooling / not optimized.
CW-APR-1 plant chiller, cooling_tower condenser-water-supply-temp 900 At full tower fan speed, leaving CW − web wet-bulb exceeds approach_max (default 8°F, typically 5–10°F). Suspect OA→w…
CW-FAN-1 plant chiller, cooling_tower condenser-water-supply-temp 900 Tower fans at full speed while leaving CW is well above web wet-bulb + design approach (approach + excess_beyond). Fa…
TRIM-1 trim ahu duct-static-pressure, vav-pressure-request-sum 1800 Duct static high (> 1.35 in.w.c.) while VAV pressure requests are low.
TRIM-3 trim boiler hot-water-supply-temp, hw-reset-request-sum 1800 HW supply > 160°F while reset requests are low.
TRIM-4 trim chiller chilled-water-supply-temp, chw-reset-request-sum 1800 CHW supply < 45°F while reset requests are low.
SCHED-1 schedule ahu occupied, fan-status 1800 Fan running while occupancy is unoccupied (Overview calendar → occ_mode). When zone_t is mapped, also require zone in…
SCHED-247 schedule ahu, vav, chiller, boiler, heatpump   3600 Fan or pump (or similar motor proof/command) is on for ≥ always_on_pct of the analysis window — highlights equipment …
CMD-1 ahu ahu fan-cmd, fan-status 600 Fan command and proven status disagree.
OA-1 ahu ahu mixed-air-temp, return-air-temp, outside-air-temp, fan-status 900 Estimated OA fraction < 15% with adequate OAT/RAT split.
DMP-1 ahu ahu outside-air-temp, mixed-air-temp, outside-air-damper 900 Damper ≤ 5% but MAT tracks OAT within 2°F — leaking OA damper.
VLV-1 ahu ahu discharge-air-temp, discharge-air-temp-sp, cooling-valve 900 Cooling valve ≤ 5% AND (SAT < sat_sp − sat_err OR SAT < MAT − mat_leak_delta). Fan proven on when fan_status/fan_cmd …
RESET-1 ahu ahu discharge-air-temp-sp, outside-air-temp 900 Fan on AND |SAT SP − (52 + 0.25×(OAT−65))| > 3°F.

Tunable params (summary)

Per-rule slider params are listed under each section in the Pandas/SQL cookbooks. Common patterns:

Pattern Examples
Error / deadband duct_static_err, sat_err, mat_env
Command high/low fan_hi, valve closed ≤ 0.05
Confirm delay confirm_seconds (via CONFIRM_PARAM)
Sweep scales range_scale_*, spike_scale_*, flatline_tol

Validation scenarios

scenario expected fault_raw
normal false
obvious_fault true after confirmation
borderline document sensitivity
missing_point false
bad_sensor false (gated)

Fixtures: benchmark strategy · docs/rules/cookbook/fixtures/