{"episodes": [{"file": "bedrock_clear_210.jsonl", "episode": "clear_210", "planner": "bedrock", "model": "us.anthropic.claude-sonnet-4-6", "score": {"success": true, "true_alerts": 1, "false_alerts": 0, "steps": 14, "wall_s": 19.835}, "rows": [{"episode": "clear_210", "kind": "start", "utc": "2026-10-26T18:54:23.271+00:00", "scenario": {"id": "clear_210", "kind": "clear", "seq": "210", "t0": 20.0, "t1": 23.0, "drone": true, "entry": null}, "planner": "bedrock", "model": "us.anthropic.claude-sonnet-4-6", "budget": {"max_steps": 24, "max_rejections": 4, "max_compute_ms": 30000.0, "max_events_per_call": 6000000, "min_window_ms": 20.0, "max_window_ms": 1000.0, "max_map_ms": 300.0, "buffer_s": 1.0, "max_alerts": 3}, "vision_source": {"spectrum": "strobe.freq (lane L1)", "detect": "strobe.detect.Detector (lane L2, strobe_drone_960x544.onnx, score >= 0.125)"}, "hot_pixels_masked": 33, "now": 20.0, "phase": "start"}, {"episode": "clear_210", "kind": "step", "utc": "2026-10-26T18:54:25.122+00:00", "step": 1, "planner": "bedrock", "now_before": 20.0, "tool": "detect_frame", "args": {"seq": "210", "t": 20.0}, "why": "", "planner_ms": 1661.4, "guard": "ok", "args_checked": {"seq": "210", "t": 20.0}, "result": {"t": 20.0, "frame_t": 19.9988, "detections": [{"box": [218, 350, 272, 377], "score": 0.43, "label": "drone (dnn)"}, {"box": [540, 397, 581, 424], "score": 0.206, "label": "drone (dnn)"}], "n_candidates": 2, "source": "strobe.detect.Detector (lane L2, strobe_drone_960x544.onnx, score >= 0.125)", "now": 20.0}, "tool_ms": 188.5, "attempts": 1, "tool_error": null, "now_after": 20.0, "phase": "perception"}, {"episode": "clear_210", "kind": "step", "utc": "2026-10-26T18:54:26.762+00:00", "step": 2, "planner": "bedrock", "now_before": 20.0, "tool": "box_spectrum", "args": {"seq": "210", "box": [218, 350, 272, 377], "t0": 19.85, "t1": 20.0}, "why": "", "planner_ms": 1627.5, "guard": "ok", "args_checked": {"seq": "210", "box": [218, 350, 272, 377], "t0": 19.85, "t1": 20.0}, "result": {"peak_hz": 259.8, "snr": 92.48, "n_events": 18103, "resolution_hz": 6.67, "mains_like": false, "verdict": "ambiguous", "window_ms": 150, "thresholds": {"hum_snr": 98.0, "ambiguous_snr": 7.9, "min_events": 200}, "source": "strobe.freq (lane L1)", "box": [218, 350, 272, 377], "t0": 19.85, "t1": 20.0, "now": 20.0}, "tool_ms": 12.2, "attempts": 1, "tool_error": null, "now_after": 20.0, "phase": "perception"}, {"episode": "clear_210", "kind": "step", "utc": "2026-10-26T18:54:26.774+00:00", "step": 3, "planner": "bedrock", "now_before": 20.0, "tool": "box_spectrum", "args": {"seq": "210", "box": [540, 397, 581, 424], "t0": 19.85, "t1": 20.0}, "why": "", "planner_ms": 1627.5, "guard": "ok", "args_checked": {"seq": "210", "box": [540, 397, 581, 424], "t0": 19.85, "t1": 20.0}, "result": {"peak_hz": 876.9, "snr": 15.45, "n_events": 12453, "resolution_hz": 6.67, "mains_like": false, "verdict": "ambiguous", "window_ms": 150, "thresholds": {"hum_snr": 98.0, "ambiguous_snr": 7.9, "min_events": 200}, "source": "strobe.freq (lane L1)", "box": [540, 397, 581, 424], "t0": 19.85, "t1": 20.0, "now": 20.0}, "tool_ms": 11.7, "attempts": 1, "tool_error": null, "now_after": 20.0, "phase": "perception"}, {"episode": "clear_210", "kind": "step", "utc": "2026-10-26T18:54:28.869+00:00", "step": 4, "planner": "bedrock", "now_before": 20.0, "tool": "request_window", "args": {"seq": "210", "box": [218, 350, 272, 377], "length_ms": 300}, "why": "", "planner_ms": 2079.4, "guard": "ok", "args_checked": {"seq": "210", "box": [218, 350, 272, 377], "length_ms": 300.0}, "result": {"peak_hz": 262.4, "snr": 85.64, "n_events": 19346, "resolution_hz": 3.33, "mains_like": false, "verdict": "ambiguous", "window_ms": 300, "thresholds": {"hum_snr": 98.0, "ambiguous_snr": 7.9, "min_events": 200}, "source": "strobe.freq (lane L1)", "box": [218, 350, 272, 377], "t0": 19.7, "t1": 20.0, "previous": {"window_ms": 150, "peak_hz": 259.8, "snr": 92.48, "verdict": "ambiguous"}, "verdict_changed": false, "now": 20.0}, "tool_ms": 15.0, "attempts": 1, "tool_error": null, "now_after": 20.0, "phase": "perception"}, {"episode": "clear_210", "kind": "step", "utc": "2026-10-26T18:54:28.887+00:00", "step": 5, "planner": "bedrock", "now_before": 20.0, "tool": "request_window", "args": {"seq": "210", "box": [540, 397, 581, 424], "length_ms": 300}, "why": "", "planner_ms": 2079.4, "guard": "ok", "args_checked": {"seq": "210", "box": [540, 397, 581, 424], "length_ms": 300.0}, "result": {"peak_hz": 878.1, "snr": 10.15, "n_events": 12529, "resolution_hz": 3.33, "mains_like": false, "verdict": "ambiguous", "window_ms": 300, "thresholds": {"hum_snr": 98.0, "ambiguous_snr": 7.9, "min_events": 200}, "source": "strobe.freq (lane L1)", "box": [540, 397, 581, 424], "t0": 19.7, "t1": 20.0, "previous": {"window_ms": 150, "peak_hz": 876.9, "snr": 15.45, "verdict": "ambiguous"}, "verdict_changed": false, "now": 20.0}, "tool_ms": 17.5, "attempts": 1, "tool_error": null, "now_after": 20.0, "phase": "perception"}, {"episode": "clear_210", "kind": "step", "utc": "2026-10-26T18:54:30.321+00:00", "step": 6, "planner": "bedrock", "now_before": 20.0, "tool": "request_window", "args": {"box": [218, 350, 272, 377], "length_ms": 1000, "seq": "210"}, "why": "", "planner_ms": 1396.4, "guard": "ok", "args_checked": {"seq": "210", "box": [218, 350, 272, 377], "length_ms": 1000.0}, "result": {"peak_hz": 262.6, "snr": 67.57, "n_events": 19326, "resolution_hz": 1.0, "mains_like": false, "verdict": "ambiguous", "window_ms": 1000, "thresholds": {"hum_snr": 98.0, "ambiguous_snr": 7.9, "min_events": 200}, "source": "strobe.freq (lane L1)", "box": [218, 350, 272, 377], "t0": 19.0, "t1": 20.0, "previous": {"window_ms": 300, "peak_hz": 262.4, "snr": 85.64, "verdict": "ambiguous"}, "verdict_changed": false, "now": 20.0}, "tool_ms": 37.3, "attempts": 1, "tool_error": null, "now_after": 20.0, "phase": "perception"}, {"episode": "clear_210", "kind": "step", "utc": "2026-10-26T18:54:30.370+00:00", "step": 7, "planner": "bedrock", "now_before": 20.0, "tool": "request_window", "args": {"box": [540, 397, 581, 424], "length_ms": 1000, "seq": "210"}, "why": "", "planner_ms": 1396.4, "guard": "ok", "args_checked": {"seq": "210", "box": [540, 397, 581, 424], "length_ms": 1000.0}, "result": {"peak_hz": 873.9, "snr": 15.62, "n_events": 12827, "resolution_hz": 1.0, "mains_like": false, "verdict": "ambiguous", "window_ms": 1000, "thresholds": {"hum_snr": 98.0, "ambiguous_snr": 7.9, "min_events": 200}, "source": "strobe.freq (lane L1)", "box": [540, 397, 581, 424], "t0": 19.0, "t1": 20.0, "previous": {"window_ms": 300, "peak_hz": 878.1, "snr": 10.15, "verdict": "ambiguous"}, "verdict_changed": false, "now": 20.0}, "tool_ms": 48.1, "attempts": 1, "tool_error": null, "now_after": 20.0, "phase": "perception"}, {"episode": "clear_210", "kind": "step", "utc": "2026-10-26T18:54:31.495+00:00", "step": 8, "planner": "bedrock", "now_before": 20.0, "tool": "detect_frame", "args": {"seq": "210", "t": 21.0}, "why": "", "planner_ms": 967.7, "guard": "ok", "args_checked": {"seq": "210", "t": 21.0}, "result": {"t": 21.0, "frame_t": 20.9988, "detections": [{"box": [283, 329, 351, 361], "score": 0.432, "label": "drone (dnn)"}], "n_candidates": 1, "source": "strobe.detect.Detector (lane L2, strobe_drone_960x544.onnx, score >= 0.125)", "now": 21.0}, "tool_ms": 156.6, "attempts": 1, "tool_error": null, "now_after": 21.0, "phase": "perception"}, {"episode": "clear_210", "kind": "step", "utc": "2026-10-26T18:54:32.621+00:00", "step": 9, "planner": "bedrock", "now_before": 21.0, "tool": "box_spectrum", "args": {"box": [283, 329, 351, 361], "seq": "210", "t0": 20.85, "t1": 21}, "why": "", "planner_ms": 1108.2, "guard": "ok", "args_checked": {"seq": "210", "box": [283, 329, 351, 361], "t0": 20.85, "t1": 21.0}, "result": {"peak_hz": 312.7, "snr": 509.39, "n_events": 4379, "resolution_hz": 6.67, "mains_like": false, "verdict": "hum", "window_ms": 150, "thresholds": {"hum_snr": 98.0, "ambiguous_snr": 7.9, "min_events": 200}, "source": "strobe.freq (lane L1)", "box": [283, 329, 351, 361], "t0": 20.85, "t1": 21.0, "now": 21.0}, "tool_ms": 17.8, "attempts": 1, "tool_error": null, "now_after": 21.0, "phase": "perception"}, {"episode": "clear_210", "kind": "step", "utc": "2026-10-26T18:54:33.921+00:00", "step": 10, "planner": "bedrock", "now_before": 21.0, "tool": "track", "args": {"box": [283, 329, 351, 361], "seq": "210", "t0": 21, "t1": 21.5}, "why": "", "planner_ms": 1261.0, "guard": "ok", "args_checked": {"seq": "210", "box": [283, 329, 351, 361], "t0": 21.0, "t1": 21.5}, "result": {"box": [357, 323, 425, 355], "velocity_px_s": [27.6, -2.1], "displacement_px": 72.1, "miss_rate": 0.0, "lost": false, "steps": 50, "path_tail": [[383.1, 339.4], [385.2, 339.3], [387.4, 339.3], [389.1, 339.1], [390.9, 338.8]], "method": "cv.KalmanFilter constant-velocity on event centroids (cv.moments)", "now": 21.5}, "tool_ms": 38.4, "attempts": 1, "tool_error": null, "now_after": 21.5, "phase": "perception"}, {"episode": "clear_210", "kind": "step", "utc": "2026-10-26T18:54:36.110+00:00", "step": 11, "planner": "bedrock", "now_before": 21.5, "tool": "box_spectrum", "args": {"box": [357, 323, 425, 355], "seq": "210", "t0": 21.35, "t1": 21.5}, "why": "", "planner_ms": 2179.5, "guard": "ok", "args_checked": {"seq": "210", "box": [357, 323, 425, 355], "t0": 21.35, "t1": 21.5}, "result": {"peak_hz": 646.0, "snr": 121.87, "n_events": 9556, "resolution_hz": 6.67, "mains_like": false, "verdict": "hum", "window_ms": 150, "thresholds": {"hum_snr": 98.0, "ambiguous_snr": 7.9, "min_events": 200}, "source": "strobe.freq (lane L1)", "box": [357, 323, 425, 355], "t0": 21.35, "t1": 21.5, "now": 21.5}, "tool_ms": 8.9, "attempts": 1, "tool_error": null, "now_after": 21.5, "phase": "perception"}, {"episode": "clear_210", "kind": "step", "utc": "2026-10-26T18:54:38.701+00:00", "step": 12, "planner": "bedrock", "now_before": 21.5, "tool": "ask_human", "args": {"seq": "210", "box": [357, 323, 425, 355], "severity": "critical", "question": "Drone candidate confirmed: strong propeller hum (SNR 509 at 312 Hz, then 121 at 646 Hz) in a moving target tracked 72 px over 0.5 s (not lost). Start box [283,329,351,361] at t=21.0, current box [357,323,425,355] at t=21.5. Approve critical alert?"}, "why": "", "planner_ms": 2590.5, "guard": "ok", "args_checked": {"seq": "210", "box": [357, 323, 425, 355], "severity": "critical", "question": "Drone candidate confirmed: strong propeller hum (SNR 509 at 312 Hz, then 121 at 646 Hz) in a moving target tracked 72 px over 0.5 s (not lost). Start box [283,329,351,361] at t=21.0, current box [357,323,425,355] at t=21.5. Approve critical alert?"}, "result": {"approved": true, "responder": "auto-approve (evaluation stand-in for the operator, SIMULATED)", "now": 21.5}, "tool_ms": 0.3, "attempts": 1, "tool_error": null, "now_after": 21.5, "phase": "approval"}, {"episode": "clear_210", "kind": "step", "utc": "2026-10-26T18:54:40.775+00:00", "step": 13, "planner": "bedrock", "now_before": 21.5, "tool": "raise_alert", "args": {"box": [357, 323, 425, 355], "seq": "210", "severity": "critical", "reason": "Drone confirmed: propeller hum SNR 509 (312 Hz) at t=21.0 in box [283,329,351,361], tracked 72 px rightward over 0.5 s (not lost), hum re-confirmed SNR 122 (646 Hz) at current position [357,323,425,355] at t=21.5. Not mains-like, not stationary."}, "why": "", "planner_ms": 2073.5, "guard": "ok", "args_checked": {"seq": "210", "box": [357, 323, 425, 355], "severity": "critical", "reason": "Drone confirmed: propeller hum SNR 509 (312 Hz) at t=21.0 in box [283,329,351,361], tracked 72 px rightward over 0.5 s (not lost), hum re-confirmed SNR 122 (646 Hz) at current position [357,323,425,355] at t=21.5. Not mains-like, not stationary."}, "result": {"alert_id": 1, "box": [357, 323, 425, 355], "severity": "critical", "reason": "Drone confirmed: propeller hum SNR 509 (312 Hz) at t=21.0 in box [283,329,351,361], tracked 72 px rightward over 0.5 s (not lost), hum re-confirmed SNR 122 (646 Hz) at current position [357,323,425,355] at t=21.5. Not mains-like, not stationary.", "t": 21.5, "wall": 1793040880.7752862, "now": 21.5}, "tool_ms": 0.4, "attempts": 1, "tool_error": null, "now_after": 21.5, "phase": "action"}, {"episode": "clear_210", "kind": "step", "utc": "2026-10-26T18:54:43.107+00:00", "step": 14, "planner": "bedrock", "now_before": 21.5, "tool": "finish", "args": {"verdict": "drone_alerted", "reason": "Drone confirmed and critical alert raised. A moving target was detected at t=21.0 in box [283,329,351,361] with a strong propeller hum (SNR 509, peak 312 Hz). Tracking over 0.5 s showed 72 px displacement (not lost, velocity ~28 px/s rightward). Hum was re-confirmed at the new position [357,323,425,355] with SNR 122 at 646 Hz. Not mains-like, not stationary. Human operator approved the critical alert."}, "why": "", "planner_ms": 2330.9, "guard": "ok", "args_checked": {"verdict": "drone_alerted", "reason": "Drone confirmed and critical alert raised. A moving target was detected at t=21.0 in box [283,329,351,361] with a strong propeller hum (SNR 509, peak 312 Hz). Tracking over 0.5 s showed 72 px displacement (not lost, velocity ~28 px/s rightward). Hum was re-confirmed at the new position [357,323,425,355] with SNR 122 at 646 Hz. Not mains-like, not stationary. Human operator approved the critical alert."}, "result": {"verdict": "drone_alerted", "reason": "Drone confirmed and critical alert raised. A moving target was detected at t=21.0 in box [283,329,351,361] with a strong propeller hum (SNR 509, peak 312 Hz). Tracking over 0.5 s showed 72 px displacement (not lost, velocity ~28 px/s rightward). Hum was re-confirmed at the new position [357,323,425,355] with SNR 122 at 646 Hz. Not mains-like, not stationary. Human operator approved the critical alert.", "now": 21.5}, "tool_ms": 0.2, "attempts": 1, "tool_error": null, "now_after": 21.5, "phase": "action"}, {"episode": "clear_210", "kind": "end", "utc": "2026-10-26T18:54:43.107+00:00", "verdict": "drone_alerted", "alerts": [{"box": [357, 323, 425, 355], "severity": "critical", "reason": "Drone confirmed: propeller hum SNR 509 (312 Hz) at t=21.0 in box [283,329,351,361], tracked 72 px rightward over 0.5 s (not lost), hum re-confirmed SNR 122 (646 Hz) at current position [357,323,425,355] at t=21.5. Not mains-like, not stationary.", "t": 21.5, "wall": 1793040880.7752862}], "steps": 14, "rejections": 0, "planner_final": "bedrock", "planner_failures": 0, "wall_s": 19.835, "tool_ms": 553.1, "stream_now": 21.5, "asks": 1, "bedrock_usage": {"input": 49289, "output": 1544, "calls": 11, "latency_ms": 19275.304099952336}, "phase": "end"}]}, {"file": "bedrock_late_142.jsonl", "episode": "late_142", "planner": "bedrock", "model": "us.anthropic.claude-sonnet-4-6", "score": {"success": true, "true_alerts": 1, "false_alerts": 0, "steps": 11, "wall_s": 17.985}, "rows": [{"episode": "late_142", "kind": "start", "utc": "2026-10-26T18:56:19.427+00:00", "scenario": {"id": "late_142", "kind": "late", "seq": "142", "t0": 24.0, "t1": 29.0, "drone": true, "entry": 26.0}, "planner": "bedrock", "model": "us.anthropic.claude-sonnet-4-6", "budget": {"max_steps": 24, "max_rejections": 4, "max_compute_ms": 30000.0, "max_events_per_call": 6000000, "min_window_ms": 20.0, "max_window_ms": 1000.0, "max_map_ms": 300.0, "buffer_s": 1.0, "max_alerts": 3}, "vision_source": {"spectrum": "strobe.freq (lane L1)", "detect": "strobe.detect.Detector (lane L2, strobe_drone_960x544.onnx, score >= 0.125)"}, "hot_pixels_masked": 18, "now": 24.0, "phase": "start"}, {"episode": "late_142", "kind": "step", "utc": "2026-10-26T18:56:21.218+00:00", "step": 1, "planner": "bedrock", "now_before": 24.0, "tool": "detect_frame", "args": {"seq": "142", "t": 24.0}, "why": "", "planner_ms": 1650.6, "guard": "ok", "args_checked": {"seq": "142", "t": 24.0}, "result": {"t": 24.0, "frame_t": 23.9805, "detections": [], "n_candidates": 0, "source": "strobe.detect.Detector (lane L2, strobe_drone_960x544.onnx, score >= 0.125)", "now": 24.0}, "tool_ms": 140.4, "attempts": 1, "tool_error": null, "now_after": 24.0, "phase": "perception"}, {"episode": "late_142", "kind": "step", "utc": "2026-10-26T18:56:22.418+00:00", "step": 2, "planner": "bedrock", "now_before": 24.0, "tool": "detect_frame", "args": {"seq": "142", "t": 25.5}, "why": "", "planner_ms": 1048.9, "guard": "ok", "args_checked": {"seq": "142", "t": 25.5}, "result": {"t": 25.5, "frame_t": 25.4805, "detections": [], "n_candidates": 0, "source": "strobe.detect.Detector (lane L2, strobe_drone_960x544.onnx, score >= 0.125)", "now": 25.5}, "tool_ms": 149.7, "attempts": 1, "tool_error": null, "now_after": 25.5, "phase": "perception"}, {"episode": "late_142", "kind": "step", "utc": "2026-10-26T18:56:23.487+00:00", "step": 3, "planner": "bedrock", "now_before": 25.5, "tool": "detect_frame", "args": {"seq": "142", "t": 27.0}, "why": "", "planner_ms": 949.6, "guard": "ok", "args_checked": {"seq": "142", "t": 27.0}, "result": {"t": 27.0, "frame_t": 26.9805, "detections": [], "n_candidates": 0, "source": "strobe.detect.Detector (lane L2, strobe_drone_960x544.onnx, score >= 0.125)", "now": 27.0}, "tool_ms": 118.9, "attempts": 1, "tool_error": null, "now_after": 27.0, "phase": "perception"}, {"episode": "late_142", "kind": "step", "utc": "2026-10-26T18:56:25.217+00:00", "step": 4, "planner": "bedrock", "now_before": 27.0, "tool": "frequency_map", "args": {"seq": "142", "t0": 26.7, "t1": 27.0}, "why": "", "planner_ms": 1096.6, "guard": "ok", "args_checked": {"seq": "142", "t0": 26.7, "t1": 27.0}, "result": {"active_pixels": 1734, "hum_pixels": 9, "dominant_hz": 545.0, "dominant_share": 0.0029, "hum_spots": [{"box": [116, 461, 136, 479], "hum_pixels": 8, "median_hz": 545.0, "max_snr": 192.18}], "source": "strobe.freq (lane L1)", "now": 27.0}, "tool_ms": 633.4, "attempts": 1, "tool_error": null, "now_after": 27.0, "phase": "perception"}, {"episode": "late_142", "kind": "step", "utc": "2026-10-26T18:56:26.460+00:00", "step": 5, "planner": "bedrock", "now_before": 27.0, "tool": "box_spectrum", "args": {"seq": "142", "box": [116, 461, 136, 479], "t0": 26.8, "t1": 27.0}, "why": "", "planner_ms": 1234.3, "guard": "ok", "args_checked": {"seq": "142", "box": [116, 461, 136, 479], "t0": 26.8, "t1": 27.0}, "result": {"peak_hz": 542.6, "snr": 495.05, "n_events": 9281, "resolution_hz": 5.0, "mains_like": false, "verdict": "hum", "window_ms": 200, "thresholds": {"hum_snr": 98.0, "ambiguous_snr": 7.9, "min_events": 200}, "source": "strobe.freq (lane L1)", "box": [116, 461, 136, 479], "t0": 26.8, "t1": 27.0, "now": 27.0}, "tool_ms": 8.2, "attempts": 1, "tool_error": null, "now_after": 27.0, "phase": "perception"}, {"episode": "late_142", "kind": "step", "utc": "2026-10-26T18:56:27.594+00:00", "step": 6, "planner": "bedrock", "now_before": 27.0, "tool": "track", "args": {"seq": "142", "box": [116, 461, 136, 479], "t0": 27.0, "t1": 27.5}, "why": "", "planner_ms": 1117.2, "guard": "ok", "args_checked": {"seq": "142", "box": [116, 461, 136, 479], "t0": 27.0, "t1": 27.5}, "result": {"box": [160, 453, 180, 471], "velocity_px_s": [16.4, -2.2], "displacement_px": 42.0, "miss_rate": 0.0, "lost": false, "steps": 50, "path_tail": [[164.9, 462.4], [165.6, 462.1], [166.5, 462.2], [167.8, 462.3], [169.6, 462.0]], "method": "cv.KalmanFilter constant-velocity on event centroids (cv.moments)", "now": 27.5}, "tool_ms": 16.6, "attempts": 1, "tool_error": null, "now_after": 27.5, "phase": "perception"}, {"episode": "late_142", "kind": "step", "utc": "2026-10-26T18:56:28.738+00:00", "step": 7, "planner": "bedrock", "now_before": 27.5, "tool": "box_spectrum", "args": {"box": [160, 453, 180, 471], "seq": "142", "t0": 27.3, "t1": 27.5}, "why": "", "planner_ms": 1132.8, "guard": "ok", "args_checked": {"seq": "142", "box": [160, 453, 180, 471], "t0": 27.3, "t1": 27.5}, "result": {"peak_hz": 508.9, "snr": 835.24, "n_events": 6101, "resolution_hz": 5.0, "mains_like": false, "verdict": "hum", "window_ms": 200, "thresholds": {"hum_snr": 98.0, "ambiguous_snr": 7.9, "min_events": 200}, "source": "strobe.freq (lane L1)", "box": [160, 453, 180, 471], "t0": 27.3, "t1": 27.5, "now": 27.5}, "tool_ms": 10.3, "attempts": 1, "tool_error": null, "now_after": 27.5, "phase": "perception"}, {"episode": "late_142", "kind": "step", "utc": "2026-10-26T18:56:29.905+00:00", "step": 8, "planner": "bedrock", "now_before": 27.5, "tool": "track", "args": {"box": [160, 453, 180, 471], "seq": "142", "t0": 27.5, "t1": 28.0}, "why": "", "planner_ms": 1152.9, "guard": "ok", "args_checked": {"seq": "142", "box": [160, 453, 180, 471], "t0": 27.5, "t1": 28.0}, "result": {"box": [225, 448, 245, 466], "velocity_px_s": [24.4, -1.7], "displacement_px": 63.2, "miss_rate": 0.0, "lost": false, "steps": 50, "path_tail": [[229.5, 458.0], [231.4, 458.0], [232.6, 457.9], [233.7, 457.8], [234.9, 457.3]], "method": "cv.KalmanFilter constant-velocity on event centroids (cv.moments)", "now": 28.0}, "tool_ms": 13.7, "attempts": 1, "tool_error": null, "now_after": 28.0, "phase": "perception"}, {"episode": "late_142", "kind": "step", "utc": "2026-10-26T18:56:32.566+00:00", "step": 9, "planner": "bedrock", "now_before": 28.0, "tool": "ask_human", "args": {"seq": "142", "box": [225, 448, 245, 466], "severity": "critical", "question": "A moving object with a strong propeller hum (~510-543 Hz, SNR >495) has been tracked continuously from [116,461] to [225,448] over ~1 second, displacing ~105 px at ~20 px/s. No mains-like signature. Confirm critical drone alert?"}, "why": "", "planner_ms": 2661.1, "guard": "ok", "args_checked": {"seq": "142", "box": [225, 448, 245, 466], "severity": "critical", "question": "A moving object with a strong propeller hum (~510-543 Hz, SNR >495) has been tracked continuously from [116,461] to [225,448] over ~1 second, displacing ~105 px at ~20 px/s. No mains-like signature. Confirm critical drone alert?"}, "result": {"approved": true, "responder": "auto-approve (evaluation stand-in for the operator, SIMULATED)", "now": 28.0}, "tool_ms": 0.1, "attempts": 1, "tool_error": null, "now_after": 28.0, "phase": "approval"}, {"episode": "late_142", "kind": "step", "utc": "2026-10-26T18:56:34.869+00:00", "step": 10, "planner": "bedrock", "now_before": 28.0, "tool": "raise_alert", "args": {"box": [225, 448, 245, 466], "reason": "Drone confirmed: strong propeller blade-pass hum at ~510\u2013543 Hz (SNR 495\u2013835, not mains-like) detected in a small moving box tracked continuously from [116,461] at t=27.0 to [225,448] at t=28.0, displacing ~105 px at ~20 px/s with zero track loss. Consistent with a low-flying drone crossing the scene.", "seq": "142", "severity": "critical"}, "why": "", "planner_ms": 2302.2, "guard": "ok", "args_checked": {"seq": "142", "box": [225, 448, 245, 466], "severity": "critical", "reason": "Drone confirmed: strong propeller blade-pass hum at ~510\u2013543 Hz (SNR 495\u2013835, not mains-like) detected in a small moving box tracked continuously from [116,461] at t=27.0 to [225,448] at t=28.0, displacing ~105 px at ~20 px/s with zero track loss. Consistent with a low-flying drone crossing the scene."}, "result": {"alert_id": 1, "box": [225, 448, 245, 466], "severity": "critical", "reason": "Drone confirmed: strong propeller blade-pass hum at ~510\u2013543 Hz (SNR 495\u2013835, not mains-like) detected in a small moving box tracked continuously from [116,461] at t=27.0 to [225,448] at t=28.0, displacing ~105 px at ~20 px/s with zero track loss. Consistent with a low-flying drone crossing the scene.", "t": 28.0, "wall": 1793040994.8693137, "now": 28.0}, "tool_ms": 0.2, "attempts": 1, "tool_error": null, "now_after": 28.0, "phase": "action"}, {"episode": "late_142", "kind": "step", "utc": "2026-10-26T18:56:37.412+00:00", "step": 11, "planner": "bedrock", "now_before": 28.0, "tool": "finish", "args": {"verdict": "drone_alerted", "reason": "A drone was confirmed by: (1) a strong blade-pass hum at 510\u2013543 Hz (SNR 495\u2013835, not mains-like) in a small localized box found via frequency_map; (2) continuous Kalman-filter tracking showing ~105 px displacement at ~20 px/s with zero miss-rate over 1 second \u2014 ruling out a fixed lamp or sensor artifact. Critical alert raised at [225,448,245,466] after operator approval."}, "why": "", "planner_ms": 2542.1, "guard": "ok", "args_checked": {"verdict": "drone_alerted", "reason": "A drone was confirmed by: (1) a strong blade-pass hum at 510\u2013543 Hz (SNR 495\u2013835, not mains-like) in a small localized box found via frequency_map; (2) continuous Kalman-filter tracking showing ~105 px displacement at ~20 px/s with zero miss-rate over 1 second \u2014 ruling out a fixed lamp or sensor artifact. Critical alert raised at [225,448,245,466] after operator approval."}, "result": {"verdict": "drone_alerted", "reason": "A drone was confirmed by: (1) a strong blade-pass hum at 510\u2013543 Hz (SNR 495\u2013835, not mains-like) in a small localized box found via frequency_map; (2) continuous Kalman-filter tracking showing ~105 px displacement at ~20 px/s with zero miss-rate over 1 second \u2014 ruling out a fixed lamp or sensor artifact. Critical alert raised at [225,448,245,466] after operator approval.", "now": 28.0}, "tool_ms": 0.3, "attempts": 1, "tool_error": null, "now_after": 28.0, "phase": "action"}, {"episode": "late_142", "kind": "end", "utc": "2026-10-26T18:56:37.412+00:00", "verdict": "drone_alerted", "alerts": [{"box": [225, 448, 245, 466], "severity": "critical", "reason": "Drone confirmed: strong propeller blade-pass hum at ~510\u2013543 Hz (SNR 495\u2013835, not mains-like) detected in a small moving box tracked continuously from [116,461] at t=27.0 to [225,448] at t=28.0, displacing ~105 px at ~20 px/s with zero track loss. Consistent with a low-flying drone crossing the scene.", "t": 28.0, "wall": 1793040994.8693137}], "steps": 11, "rejections": 0, "planner_final": "bedrock", "planner_failures": 0, "wall_s": 17.985, "tool_ms": 1091.9, "stream_now": 28.0, "asks": 1, "bedrock_usage": {"input": 39783, "output": 1197, "calls": 11, "latency_ms": 16887.825099925976}, "phase": "end"}]}, {"file": "bedrock_background_138.jsonl", "episode": "background_138", "planner": "bedrock", "model": "us.anthropic.claude-sonnet-4-6", "score": {"success": true, "true_alerts": 0, "false_alerts": 0, "steps": 10, "wall_s": 13.45}, "rows": [{"episode": "background_138", "kind": "start", "utc": "2026-10-26T18:55:22.780+00:00", "scenario": {"id": "background_138", "kind": "background", "seq": "138", "t0": 10.0, "t1": 13.0, "drone": false, "entry": null}, "planner": "bedrock", "model": "us.anthropic.claude-sonnet-4-6", "budget": {"max_steps": 24, "max_rejections": 4, "max_compute_ms": 30000.0, "max_events_per_call": 6000000, "min_window_ms": 20.0, "max_window_ms": 1000.0, "max_map_ms": 300.0, "buffer_s": 1.0, "max_alerts": 3}, "vision_source": {"spectrum": "strobe.freq (lane L1)", "detect": "strobe.detect.Detector (lane L2, strobe_drone_960x544.onnx, score >= 0.125)"}, "hot_pixels_masked": 7, "now": 10.0, "phase": "start"}, {"episode": "background_138", "kind": "step", "utc": "2026-10-26T18:55:24.607+00:00", "step": 1, "planner": "bedrock", "now_before": 10.0, "tool": "detect_frame", "args": {"seq": "138", "t": 10.0}, "why": "", "planner_ms": 1666.1, "guard": "ok", "args_checked": {"seq": "138", "t": 10.0}, "result": {"t": 10.0, "frame_t": 9.9932, "detections": [], "n_candidates": 0, "source": "strobe.detect.Detector (lane L2, strobe_drone_960x544.onnx, score >= 0.125)", "now": 10.0}, "tool_ms": 160.8, "attempts": 1, "tool_error": null, "now_after": 10.0, "phase": "perception"}, {"episode": "background_138", "kind": "step", "utc": "2026-10-26T18:55:25.757+00:00", "step": 2, "planner": "bedrock", "now_before": 10.0, "tool": "detect_frame", "args": {"seq": "138", "t": 10.5}, "why": "", "planner_ms": 986.3, "guard": "ok", "args_checked": {"seq": "138", "t": 10.5}, "result": {"t": 10.5, "frame_t": 10.4932, "detections": [], "n_candidates": 0, "source": "strobe.detect.Detector (lane L2, strobe_drone_960x544.onnx, score >= 0.125)", "now": 10.5}, "tool_ms": 162.5, "attempts": 1, "tool_error": null, "now_after": 10.5, "phase": "perception"}, {"episode": "background_138", "kind": "step", "utc": "2026-10-26T18:55:26.824+00:00", "step": 3, "planner": "bedrock", "now_before": 10.5, "tool": "detect_frame", "args": {"seq": "138", "t": 11.0}, "why": "", "planner_ms": 936.7, "guard": "ok", "args_checked": {"seq": "138", "t": 11.0}, "result": {"t": 11.0, "frame_t": 10.9933, "detections": [], "n_candidates": 0, "source": "strobe.detect.Detector (lane L2, strobe_drone_960x544.onnx, score >= 0.125)", "now": 11.0}, "tool_ms": 130.1, "attempts": 1, "tool_error": null, "now_after": 11.0, "phase": "perception"}, {"episode": "background_138", "kind": "step", "utc": "2026-10-26T18:55:28.273+00:00", "step": 4, "planner": "bedrock", "now_before": 11.0, "tool": "detect_frame", "args": {"seq": "138", "t": 11.5}, "why": "", "planner_ms": 1288.2, "guard": "ok", "args_checked": {"seq": "138", "t": 11.5}, "result": {"t": 11.5, "frame_t": 11.4933, "detections": [], "n_candidates": 0, "source": "strobe.detect.Detector (lane L2, strobe_drone_960x544.onnx, score >= 0.125)", "now": 11.5}, "tool_ms": 160.8, "attempts": 1, "tool_error": null, "now_after": 11.5, "phase": "perception"}, {"episode": "background_138", "kind": "step", "utc": "2026-10-26T18:55:29.769+00:00", "step": 5, "planner": "bedrock", "now_before": 11.5, "tool": "frequency_map", "args": {"seq": "138", "t0": 11.2, "t1": 11.5}, "why": "", "planner_ms": 1454.7, "guard": "ok", "args_checked": {"seq": "138", "t0": 11.2, "t1": 11.5}, "result": {"active_pixels": 25, "hum_pixels": 0, "dominant_hz": null, "dominant_share": 0.0, "hum_spots": [], "source": "strobe.freq (lane L1)", "now": 11.5}, "tool_ms": 40.9, "attempts": 1, "tool_error": null, "now_after": 11.5, "phase": "perception"}, {"episode": "background_138", "kind": "step", "utc": "2026-10-26T18:55:30.724+00:00", "step": 6, "planner": "bedrock", "now_before": 11.5, "tool": "detect_frame", "args": {"seq": "138", "t": 12}, "why": "", "planner_ms": 832.0, "guard": "ok", "args_checked": {"seq": "138", "t": 12.0}, "result": {"t": 12.0, "frame_t": 11.9933, "detections": [], "n_candidates": 0, "source": "strobe.detect.Detector (lane L2, strobe_drone_960x544.onnx, score >= 0.125)", "now": 12.0}, "tool_ms": 122.9, "attempts": 1, "tool_error": null, "now_after": 12.0, "phase": "perception"}, {"episode": "background_138", "kind": "step", "utc": "2026-10-26T18:55:31.797+00:00", "step": 7, "planner": "bedrock", "now_before": 12.0, "tool": "detect_frame", "args": {"seq": "138", "t": 12.5}, "why": "", "planner_ms": 944.2, "guard": "ok", "args_checked": {"seq": "138", "t": 12.5}, "result": {"t": 12.5, "frame_t": 12.4933, "detections": [], "n_candidates": 0, "source": "strobe.detect.Detector (lane L2, strobe_drone_960x544.onnx, score >= 0.125)", "now": 12.5}, "tool_ms": 127.6, "attempts": 1, "tool_error": null, "now_after": 12.5, "phase": "perception"}, {"episode": "background_138", "kind": "step", "utc": "2026-10-26T18:55:33.127+00:00", "step": 8, "planner": "bedrock", "now_before": 12.5, "tool": "frequency_map", "args": {"seq": "138", "t0": 12.2, "t1": 12.5}, "why": "", "planner_ms": 1295.0, "guard": "ok", "args_checked": {"seq": "138", "t0": 12.2, "t1": 12.5}, "result": {"active_pixels": 19, "hum_pixels": 0, "dominant_hz": null, "dominant_share": 0.0, "hum_spots": [], "source": "strobe.freq (lane L1)", "now": 12.5}, "tool_ms": 35.5, "attempts": 1, "tool_error": null, "now_after": 12.5, "phase": "perception"}, {"episode": "background_138", "kind": "step", "utc": "2026-10-26T18:55:34.121+00:00", "step": 9, "planner": "bedrock", "now_before": 12.5, "tool": "detect_frame", "args": {"seq": "138", "t": 13}, "why": "", "planner_ms": 844.9, "guard": "ok", "args_checked": {"seq": "138", "t": 13.0}, "result": {"t": 13.0, "frame_t": 12.9933, "detections": [], "n_candidates": 0, "source": "strobe.detect.Detector (lane L2, strobe_drone_960x544.onnx, score >= 0.125)", "now": 13.0}, "tool_ms": 148.4, "attempts": 1, "tool_error": null, "now_after": 13.0, "phase": "perception"}, {"episode": "background_138", "kind": "step", "utc": "2026-10-26T18:55:36.230+00:00", "step": 10, "planner": "bedrock", "now_before": 13.0, "tool": "finish", "args": {"verdict": "no_drone", "reason": "No drone candidates detected across the full watch window (t=10.0\u201313.0 s). Six detect_frame passes returned zero detections, and two frequency_map sweeps found no humming spots, no dominant blade-pass frequency, and negligible active-pixel counts. No propeller hum signature was present anywhere in the scene."}, "why": "", "planner_ms": 2108.6, "guard": "ok", "args_checked": {"verdict": "no_drone", "reason": "No drone candidates detected across the full watch window (t=10.0\u201313.0 s). Six detect_frame passes returned zero detections, and two frequency_map sweeps found no humming spots, no dominant blade-pass frequency, and negligible active-pixel counts. No propeller hum signature was present anywhere in the scene."}, "result": {"verdict": "no_drone", "reason": "No drone candidates detected across the full watch window (t=10.0\u201313.0 s). Six detect_frame passes returned zero detections, and two frequency_map sweeps found no humming spots, no dominant blade-pass frequency, and negligible active-pixel counts. No propeller hum signature was present anywhere in the scene.", "now": 13.0}, "tool_ms": 0.2, "attempts": 1, "tool_error": null, "now_after": 13.0, "phase": "action"}, {"episode": "background_138", "kind": "end", "utc": "2026-10-26T18:55:36.231+00:00", "verdict": "no_drone", "alerts": [], "steps": 10, "rejections": 0, "planner_final": "bedrock", "planner_failures": 0, "wall_s": 13.45, "tool_ms": 1089.9, "stream_now": 13.0, "asks": 0, "bedrock_usage": {"input": 33115, "output": 677, "calls": 10, "latency_ms": 12356.166600016877}, "phase": "end"}]}, {"file": "rule_clear_210.jsonl", "episode": "clear_210", "planner": "rule", "model": null, "score": {"success": true, "true_alerts": 1, "false_alerts": 0, "steps": 6, "wall_s": 0.181}, "rows": [{"episode": "clear_210", "kind": "start", "utc": "2026-10-26T18:56:39.233+00:00", "scenario": {"id": "clear_210", "kind": "clear", "seq": "210", "t0": 20.0, "t1": 23.0, "drone": true, "entry": null}, "planner": "rule", "model": null, "budget": {"max_steps": 24, "max_rejections": 4, "max_compute_ms": 30000.0, "max_events_per_call": 6000000, "min_window_ms": 20.0, "max_window_ms": 1000.0, "max_map_ms": 300.0, "buffer_s": 1.0, "max_alerts": 3}, "vision_source": {"spectrum": "strobe.freq (lane L1)", "detect": "strobe.detect.Detector (lane L2, strobe_drone_960x544.onnx, score >= 0.125)"}, "hot_pixels_masked": 33, "now": 20.0, "phase": "start"}, {"episode": "clear_210", "kind": "step", "utc": "2026-10-26T18:56:39.396+00:00", "step": 1, "planner": "rule", "now_before": 20.0, "tool": "detect_frame", "args": {"seq": "210", "t": 20.0}, "why": "look at the newest frame", "planner_ms": 0.0, "guard": "ok", "args_checked": {"seq": "210", "t": 20.0}, "result": {"t": 20.0, "frame_t": 19.9988, "detections": [{"box": [218, 350, 272, 377], "score": 0.43, "label": "drone (dnn)"}, {"box": [540, 397, 581, 424], "score": 0.206, "label": "drone (dnn)"}], "n_candidates": 2, "source": "strobe.detect.Detector (lane L2, strobe_drone_960x544.onnx, score >= 0.125)", "now": 20.0}, "tool_ms": 162.6, "attempts": 1, "tool_error": null, "now_after": 20.0, "phase": "perception"}, {"episode": "clear_210", "kind": "step", "utc": "2026-10-26T18:56:39.404+00:00", "step": 2, "planner": "rule", "now_before": 20.0, "tool": "box_spectrum", "args": {"seq": "210", "box": [218, 350, 272, 377], "t0": 19.9, "t1": 20.0}, "why": "check candidate [218, 350, 272, 377] for a blade-pass peak", "planner_ms": 0.1, "guard": "ok", "args_checked": {"seq": "210", "box": [218, 350, 272, 377], "t0": 19.9, "t1": 20.0}, "result": {"peak_hz": 257.4, "snr": 197.74, "n_events": 5397, "resolution_hz": 10.0, "mains_like": false, "verdict": "hum", "window_ms": 100, "thresholds": {"hum_snr": 98.0, "ambiguous_snr": 7.9, "min_events": 200}, "source": "strobe.freq (lane L1)", "box": [218, 350, 272, 377], "t0": 19.9, "t1": 20.0, "now": 20.0}, "tool_ms": 6.9, "attempts": 1, "tool_error": null, "now_after": 20.0, "phase": "perception"}, {"episode": "clear_210", "kind": "step", "utc": "2026-10-26T18:56:39.413+00:00", "step": 3, "planner": "rule", "now_before": 20.0, "tool": "track", "args": {"seq": "210", "box": [218, 350, 272, 377], "t0": 20.0, "t1": 20.2}, "why": "hum at 257.4 Hz; follow the target before alerting", "planner_ms": 0.0, "guard": "ok", "args_checked": {"seq": "210", "box": [218, 350, 272, 377], "t0": 20.0, "t1": 20.2}, "result": {"box": [226, 338, 280, 365], "velocity_px_s": [2.1, -2.4], "displacement_px": 11.5, "miss_rate": 0.0, "lost": false, "steps": 20, "path_tail": [[250.0, 352.5], [250.7, 352.2], [252.3, 352.1], [252.8, 352.0], [253.3, 351.7]], "method": "cv.KalmanFilter constant-velocity on event centroids (cv.moments)", "now": 20.2}, "tool_ms": 8.6, "attempts": 1, "tool_error": null, "now_after": 20.2, "phase": "perception"}, {"episode": "clear_210", "kind": "step", "utc": "2026-10-26T18:56:39.414+00:00", "step": 4, "planner": "rule", "now_before": 20.2, "tool": "ask_human", "args": {"seq": "210", "box": [226, 338, 280, 365], "severity": "critical", "question": "Drone hum 257.4 Hz (snr 197.74) at [226, 338, 280, 365]. Approve critical alert?"}, "why": "critical alert needs approval", "planner_ms": 0.0, "guard": "ok", "args_checked": {"seq": "210", "box": [226, 338, 280, 365], "severity": "critical", "question": "Drone hum 257.4 Hz (snr 197.74) at [226, 338, 280, 365]. Approve critical alert?"}, "result": {"approved": true, "responder": "auto-approve (evaluation stand-in for the operator, SIMULATED)", "now": 20.2}, "tool_ms": 0.2, "attempts": 1, "tool_error": null, "now_after": 20.2, "phase": "approval"}, {"episode": "clear_210", "kind": "step", "utc": "2026-10-26T18:56:39.414+00:00", "step": 5, "planner": "rule", "now_before": 20.2, "tool": "raise_alert", "args": {"seq": "210", "box": [226, 338, 280, 365], "severity": "critical", "reason": "blade-pass 257.4 Hz snr 197.74, tracked 11.5 px"}, "why": "confirmed", "planner_ms": 0.0, "guard": "ok", "args_checked": {"seq": "210", "box": [226, 338, 280, 365], "severity": "critical", "reason": "blade-pass 257.4 Hz snr 197.74, tracked 11.5 px"}, "result": {"alert_id": 1, "box": [226, 338, 280, 365], "severity": "critical", "reason": "blade-pass 257.4 Hz snr 197.74, tracked 11.5 px", "t": 20.2, "wall": 1793040999.41454, "now": 20.2}, "tool_ms": 0.2, "attempts": 1, "tool_error": null, "now_after": 20.2, "phase": "action"}, {"episode": "clear_210", "kind": "step", "utc": "2026-10-26T18:56:39.415+00:00", "step": 6, "planner": "rule", "now_before": 20.2, "tool": "finish", "args": {"verdict": "drone_alerted", "reason": "alert raised"}, "why": "done", "planner_ms": 0.0, "guard": "ok", "args_checked": {"verdict": "drone_alerted", "reason": "alert raised"}, "result": {"verdict": "drone_alerted", "reason": "alert raised", "now": 20.2}, "tool_ms": 0.2, "attempts": 1, "tool_error": null, "now_after": 20.2, "phase": "action"}, {"episode": "clear_210", "kind": "end", "utc": "2026-10-26T18:56:39.415+00:00", "verdict": "drone_alerted", "alerts": [{"box": [226, 338, 280, 365], "severity": "critical", "reason": "blade-pass 257.4 Hz snr 197.74, tracked 11.5 px", "t": 20.2, "wall": 1793040999.41454}], "steps": 6, "rejections": 0, "planner_final": "rule", "planner_failures": 0, "wall_s": 0.181, "tool_ms": 178.7, "stream_now": 20.2, "asks": 1, "bedrock_usage": null, "phase": "end"}]}]}