central: silently drop work_zone envelopes from broadcast pipeline

consumer.py: return None immediately for work_zone/road_closure/road_incident
categories instead of routing through format_work_zone_mesh.

incident_handler.py: add work_zone kind to _parse_itd_511_incident and return
None immediately so itd_511 work_zone events never reach change-detection.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Matt Johnson (via Claude) 2026-06-08 17:21:01 +00:00
commit c6c15e03c2
2 changed files with 6 additions and 1 deletions

View file

@ -526,7 +526,7 @@ class CentralConsumer:
from meshai.central.firms_handler import handle_firms from meshai.central.firms_handler import handle_firms
synthesized = handle_firms(envelope, subject, data=data) or None synthesized = handle_firms(envelope, subject, data=data) or None
elif n is not None and category in ("work_zone", "road_closure", "road_incident"): elif n is not None and category in ("work_zone", "road_closure", "road_incident"):
synthesized = format_work_zone_mesh(n) or None return None # silently drop work zone envelopes
except Exception: except Exception:
logger.exception("normalizer/renderer failed for adapter=%s category=%s", logger.exception("normalizer/renderer failed for adapter=%s category=%s",
inner.get("adapter"), category) inner.get("adapter"), category)

View file

@ -396,8 +396,13 @@ def _parse_itd_511_incident(envelope: dict, category_raw: str, now: int) -> Opti
if category_raw.startswith("incident."): kind = "incident" if category_raw.startswith("incident."): kind = "incident"
elif category_raw.startswith("closure."): kind = "closure" elif category_raw.startswith("closure."): kind = "closure"
elif category_raw.startswith("special_event."): kind = "special_event" elif category_raw.startswith("special_event."): kind = "special_event"
elif category_raw.startswith("work_zone."): kind = "work_zone"
else: return None else: return None
# Drop work_zone envelopes -- silently suppressed
if kind == "work_zone":
return None
# Severity filter # Severity filter
min_sev = str(adapter_config.itd_511.min_severity or "None") min_sev = str(adapter_config.itd_511.min_severity or "None")
sev_order = {"None": 0, "Minor": 1, "Major": 2} sev_order = {"None": 0, "Minor": 1, "Major": 2}