mirror of
https://github.com/zvx-echo6/meshai.git
synced 2026-06-10 17:04:45 +02:00
EIGHTH and FINAL family of the v0.5.7 NATS-and-categories campaign. Smallest scope of the entire campaign: zero source code changes, regression-tests only. The tracking family is a Phase 7 PLACEHOLDER -- everywhere we looked it is intentionally empty.
FIX 1 -- Central tracking adapter check: VERIFIED ABSENT in Central v0.10.0. Searched the consumer integration guide (docs/CONSUMER-INTEGRATION.md at v0.10.0-itd-511): 22 per-adapter sections in §6, none tracking-related (no APRS / ADS-B / OpenSky / aircraft / satellite). Subject prefixes in use: central.{disaster,fire,fires,hydro,meta,models,quake,space,traffic,traffic_cameras,traffic_flow,wx}.> -- no central.tracking.* / central.aprs.* / central.adsb.*. Producer source tree src/central/adapters/ has 24 adapter files; none tracking-named.
meshai already accounts for this -- _SUBJECTS_BARE has no `tracking` / `aprs` / `adsb` key; CENTRAL_ADAPTER_TO_SOURCE has no tracking entries on either side; _subjects_for("tracking", *) returns [] for any region (no key in the table). No code change needed.
FIX 2 -- ALERT_CATEGORIES tracking-family audit: VERIFIED EMPTY-BY-DESIGN. The tracking family is documented at meshai/notifications/categories.py:19 as "tracking - ADS-B, AIS, satellite passes (Phase 7)" -- a reserved-but-unimplemented family. State as of v0.5.7-tracking:
- "tracking" in VALID_TOGGLES (the toggle name is reserved)
- ZERO ALERT_CATEGORIES entries with toggle="tracking"
- ZERO native adapter files in meshai/env/ (no aprs.py, adsb.py, etc.)
- ZERO entries in _TOGGLE_PREFIX_FALLBACK routing to "tracking"
- dashboard-frontend/src/pages/Environment.tsx FAMILIES list has the
placeholder { key: "tracking", label: "Tracking", icon: Satellite,
adapters: [] } -- empty adapter list
No native emissions to audit against. Every emitted = selectable is trivially satisfied: zero emissions, zero registry entries, zero gap. No code change needed.
Regression guards (the whole commit)
------------------------------------
The risk this commit guards against is: a future Phase 7 implementer adds an APRS or ADS-B adapter (or wires a tracking Central subject) without doing the family-audit shape (registry entries with required fields, composer emoji/labels, paired test refresh). That would create orphan emissions -- the exact failure mode v0.5.7 spent eight phases eliminating across the other families.
tests/test_tracking_v057.py pins ALL of the above placeholder invariants as regression guards:
- No Central tracking-style subject prefixes anywhere in _SUBJECTS_BARE
(sweeps every adapter sub for "tracking" / "aprs" / "adsb" / "opensky").
- No tracking-style entries in CENTRAL_ADAPTER_TO_SOURCE on either side.
- _subjects_for("tracking" / "aprs" / "adsb", *) returns [] for every region.
- "tracking" reserved in VALID_TOGGLES.
- Zero ALERT_CATEGORIES entries with toggle="tracking".
- Zero env adapter files matching tracking-related needles.
- Environment.tsx FAMILIES tracking entry has adapters=[] (regex-pinned).
- No _TOGGLE_PREFIX_FALLBACK rule silently routes to tracking.
Each failure message points the future implementer at the paired changes required -- new registry entries, new composer glyphs, new env adapter file, paired test update. Phase 7 cannot ship partial.
Same outcome shape as v0.5.7-avalanche (Central has no counterpart; meshai handles it correctly already; regression-test-only commit).
Tests
-----
PYTHONPATH=. pytest -q: 450 passed (was 442; +8 net).
- tests/test_tracking_v057.py (new): eight regression guards covering Central absence, meshai-side placeholder state, frontend placeholder, and the no-silent-routing safety.
Campaign-wide test count progression across the eight v0.5.7 families:
v0.5.7-weather 345 (baseline 328 + 17)
v0.5.7-traffic 366 (+21)
v0.5.7-fire 380 (+14)
v0.5.7-seismic 400 (+20)
v0.5.7-water 413 (+13)
v0.5.7-rf 431 (+18)
v0.5.7-avalanche 442 (+11)
v0.5.7-tracking 450 (+8)
Safe-mode preserved (master off, all family toggles off, all adapters native, central disabled). No live toggle flipped. v0.5.7 tag deferred -- waiting on explicit instruction after Matt reviews the campaign-wide summary.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
||
|---|---|---|
| .. | ||
| test_adapter_avalanche.py | ||
| test_adapter_ducting.py | ||
| test_adapter_fires.py | ||
| test_adapter_firms.py | ||
| test_adapter_nws.py | ||
| test_adapter_roads511.py | ||
| test_adapter_swpc.py | ||
| test_adapter_traffic.py | ||
| test_adapter_usgs.py | ||
| test_adapter_usgs_quake.py | ||
| test_avalanche_v057.py | ||
| test_central_consumer.py | ||
| test_central_region_routing.py | ||
| test_central_sub_adapter_routing.py | ||
| test_channel_rendering.py | ||
| test_config_loader.py | ||
| test_config_source_field.py | ||
| test_dashboard_config_save.py | ||
| test_fire_v057.py | ||
| test_notification_toggles.py | ||
| test_pipeline_digest.py | ||
| test_pipeline_grouper.py | ||
| test_pipeline_inhibitor_grouper.py | ||
| test_pipeline_scheduler.py | ||
| test_pipeline_skeleton.py | ||
| test_pipeline_toggle_filter.py | ||
| test_renderers.py | ||
| test_rf_v057.py | ||
| test_save_section_secret_preserve.py | ||
| test_seismic_v057.py | ||
| test_tracking_v057.py | ||
| test_traffic_v057.py | ||
| test_v052_dispatcher.py | ||
| test_water_v057.py | ||
| test_weather_v057.py | ||