The endpoint (routers/events/batch.py, its schemas in schemas/event.py, its tests) ships and nothing in the app calls it: the queue publishes one detection at a time because a batch publish let badly filled events through. No re-publish flow is scoped, so the route is maintenance without a user. Delete it with lib/events.ts::batchCompletionBlockers (the frontend mirror of services/events/batch._publish_detection's per-row floor) and the AGENTS.md mirror entry; if a bulk re-tag flow is ever scoped, it starts from its own design, not from this route.
Imported from planning/backlog.md.
Note: batchCompletionBlockers is not dead code. frontend/src/components/detections/DetectionQueueRow.tsx calls it for the per-row blockers, so it stays when the endpoint goes.
The endpoint (
routers/events/batch.py, its schemas inschemas/event.py, its tests) ships and nothing in the app calls it: the queue publishes one detection at a time because a batch publish let badly filled events through. No re-publish flow is scoped, so the route is maintenance without a user. Delete it withlib/events.ts::batchCompletionBlockers(the frontend mirror ofservices/events/batch._publish_detection's per-row floor) and the AGENTS.md mirror entry; if a bulk re-tag flow is ever scoped, it starts from its own design, not from this route.Imported from planning/backlog.md.
Note:
batchCompletionBlockersis not dead code.frontend/src/components/detections/DetectionQueueRow.tsxcalls it for the per-row blockers, so it stays when the endpoint goes.