Removes the dispatch/tactical fork entirely (2 commits: hardcode-True, then full removal per owner request). _is_dispatch_channel, _DISPATCH_TG_RE, the is_dispatch parameter, and _call_fits_incident's tactical branch are gone — one evaluation path for every channel.
Why: is_dispatch=False skipped the location-conflict/content-divergence vetoes on a unit-overlap match and defaulted to True on zero signal within 20 minutes ("tactical_default"). Owner correction from direct scanning experience: a channel named tac/tactical only sees materially different traffic during a real incident, and that's rare — the bulk of traffic on any monitored channel, pursuits included, stays on the main channel regardless of name. The permissive path existed for a channel category that's not real in practice.
Reviewed (drb-correlation-review) on the hardcode-True version before the full removal: confirmed the direction is strictly less-permissive (fewer bare unit-overlap absorptions, fewer no-signal absorptions), quantified against the 3 correlation dumps — ~6-7 of 18 calls in one incident chain (TG 363 "Muni") would flip from linked to rejected, ~2 of those plausibly correct links lost, the rest junk. No other reader of the removed fields.
Sandboxed pytest: 380 → 380 (one test deleted — it tested the now-removed tactical path directly — two others updated for the new behavior).
Removes the dispatch/tactical fork entirely (2 commits: hardcode-True, then full removal per owner request). `_is_dispatch_channel`, `_DISPATCH_TG_RE`, the `is_dispatch` parameter, and `_call_fits_incident`'s tactical branch are gone — one evaluation path for every channel.
Why: `is_dispatch=False` skipped the location-conflict/content-divergence vetoes on a unit-overlap match and defaulted to `True` on zero signal within 20 minutes ("tactical_default"). Owner correction from direct scanning experience: a channel named tac/tactical only sees materially different traffic during a real incident, and that's rare — the bulk of traffic on any monitored channel, pursuits included, stays on the main channel regardless of name. The permissive path existed for a channel category that's not real in practice.
Reviewed (`drb-correlation-review`) on the hardcode-True version before the full removal: confirmed the direction is strictly less-permissive (fewer bare unit-overlap absorptions, fewer no-signal absorptions), quantified against the 3 correlation dumps — ~6-7 of 18 calls in one incident chain (TG 363 "Muni") would flip from linked to rejected, ~2 of those plausibly correct links lost, the rest junk. No other reader of the removed fields.
Sandboxed pytest: 380 → 380 (one test deleted — it tested the now-removed tactical path directly — two others updated for the new behavior).
🤖 Generated with [Claude Code](https://claude.com/claude-code)
is_dispatch was computed from _is_dispatch_channel(talkgroup_name) and picked between two _call_fits_incident evaluation orders: dispatch (requires a positive signal, runs location-conflict/content-divergence vetoes on unit overlap) vs tactical (skips both vetoes, defaults to True on no signal at all within 20 min). Per #133's reasoning, a name not literally containing dispatch/patched/primary got the unvetoed, default-True path solely because of its label. Hardcoded is_dispatch=True at its one real call site; the tactical branch and its own tests stay in place, unreached.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Tbknwttzou4s46PAykmtix
Full removal, not a hardcoded flag: _is_dispatch_channel, _DISPATCH_TG_RE, the is_dispatch parameter, and _call_fits_incident's tactical branch are gone. One evaluation path for every channel.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Tbknwttzou4s46PAykmtix
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Removes the dispatch/tactical fork entirely (2 commits: hardcode-True, then full removal per owner request).
_is_dispatch_channel,_DISPATCH_TG_RE, theis_dispatchparameter, and_call_fits_incident's tactical branch are gone — one evaluation path for every channel.Why:
is_dispatch=Falseskipped the location-conflict/content-divergence vetoes on a unit-overlap match and defaulted toTrueon zero signal within 20 minutes ("tactical_default"). Owner correction from direct scanning experience: a channel named tac/tactical only sees materially different traffic during a real incident, and that's rare — the bulk of traffic on any monitored channel, pursuits included, stays on the main channel regardless of name. The permissive path existed for a channel category that's not real in practice.Reviewed (
drb-correlation-review) on the hardcode-True version before the full removal: confirmed the direction is strictly less-permissive (fewer bare unit-overlap absorptions, fewer no-signal absorptions), quantified against the 3 correlation dumps — ~6-7 of 18 calls in one incident chain (TG 363 "Muni") would flip from linked to rejected, ~2 of those plausibly correct links lost, the rest junk. No other reader of the removed fields.Sandboxed pytest: 380 → 380 (one test deleted — it tested the now-removed tactical path directly — two others updated for the new behavior).
🤖 Generated with Claude Code