groups: - name: citygen rules: - alert: CitygenDown expr: up{job="citygen"} == 0 for: 1m labels: severity: critical annotations: summary: Citygen cannot be scraped - alert: CitygenSlowTick expr: citygen_room_tick_seconds > 0.05 for: 30s labels: severity: warning annotations: summary: Room tick exceeds 50 ms - alert: CitygenSaveFailure expr: increase(citygen_room_save_errors_total[5m]) > 0 labels: severity: critical annotations: summary: Room snapshot failed; check disk quota and logs