stops review + provisional LLM closure
Replay of433b35d(server-26#170): traffic stops now open incidents ("45 Adam" stop, "CM2" stop), but the bridge MVA split 33/56 — one transmission ("transport complete") was read as scene-resolved at 14:44 and an LLM closure was final, so the rest of the MVA opened a new one. - LLM closure is now provisional (reopenable), like a timer close: it is inferred from a single transmission. - review of433b35d: backstop only matches a unit's own "on a stop" self-report (bare "car stop" mentions and "pull over" dropped), never on MTA/rail/bridge/fire/EMS/DPW talkgroups ("Train 4 holding on the stop"), negation looks 5 words back, and <=5-word reports ("Adam 3 on a stop") get a minimal scene instead of being skipped before the backstop. c2-core: 471 pass. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5.5
parent
433b35d2ba
commit
9f19750ea6
@@ -105,7 +105,7 @@ def test_traffic_stops_become_events():
|
||||
from app.internal.intelligence import _self_initiated_backstop as b
|
||||
for t in ("45 Adam on a stop, Eastbound Central Express.",
|
||||
"11-0. CM2 on the stop, southbound, KFLA on the right.",
|
||||
"Car 7, traffic stop, Route 9 at Main"):
|
||||
"Car 7 on a traffic stop, Route 9 at Main"):
|
||||
tags, typ, sev = b(t, [], None, "routine")
|
||||
assert "traffic-stop" in tags and typ == "police" and sev == "minor", t
|
||||
tags, typ, sev = b("Charlie 1. You put me out with a pedestrian on a parkway", [], None, "routine")
|
||||
@@ -115,3 +115,28 @@ def test_traffic_stops_become_events():
|
||||
assert b("45-8, go ahead.", [], None, "routine") == ([], None, "routine")
|
||||
# an existing type/severity is never downgraded
|
||||
assert b("on a stop", ["dwi"], "police", "moderate") == (["dwi", "traffic-stop"], "police", "moderate")
|
||||
|
||||
|
||||
def test_stop_backstop_stays_off_rail_bridge_and_ems_channels():
|
||||
from app.internal.intelligence import _self_initiated_backstop as b
|
||||
none = ([], None, "routine")
|
||||
assert b("Train 4 holding on the stop at Grand Central", [], None, "routine",
|
||||
"MTA PD Districts 6/7/11 - Police Dispatch") == none
|
||||
assert b("out with a disabled on the bridge, toll plaza", [], None, "routine",
|
||||
"MTA Bridges and Tunnels - Whitestone/Throgs Neck Bridge Patrols") == none
|
||||
assert b("Medic 2 pull over to the side and wait", [], None, "routine") == none
|
||||
assert b("ran a plate for a car stop", [], None, "routine") == none
|
||||
assert b("I dont think he is on a stop", [], None, "routine") == none
|
||||
assert b("45 Adam on a stop", [], None, "routine", "Ch 1 (Patched with 155.310)")[0] == ["traffic-stop"]
|
||||
|
||||
|
||||
def test_short_stop_report_opens_a_scene():
|
||||
import asyncio
|
||||
from unittest.mock import patch
|
||||
from app.internal import firestore as fstore, intelligence
|
||||
|
||||
async def run():
|
||||
with patch.object(fstore, "doc_set"), patch.object(fstore, "doc_get_cached", return_value=None):
|
||||
return await intelligence.extract_scenes("c1", "Adam 3 on a stop.", "Ch 1 (Patched with 155.310)")
|
||||
scenes = asyncio.run(run())
|
||||
assert len(scenes) == 1 and scenes[0]["tags"] == ["traffic-stop"] and scenes[0]["incident_type"] == "police"
|
||||
|
||||
Reference in New Issue
Block a user