Event has no AI evidence
You opened an event on the Events page and the AI evidence panel is empty — no frames, no canonical tags, no detected objects, no detected faces. Other recent events from the same camera have complete evidence. This page helps the admin who owns the v5 AI pipeline triage what went wrong.
Symptom
On the event detail page you see one of:
- The AI evidence panel shows zero frames AND zero canonical tags AND
ai_status = pendingorprocessingbeyond the expected ~5–30 second window for v5 indexing. - The event’s
ai_statusisfailedorskipped. - The Events list shows the event with no canonical-tag chips next to the camera name.
Likely causes (v5)
- AI Runtime sidecar is degraded. The local Python AI Runtime process (
ai-runtime/) is unreachable or returning HTTP 503. The cloud client retries 3 times with backoff (500ms then 5s, 3s per-attempt timeout); persistent failures mark the event AI evidence stage as failed. - Master toggle is off.
ai_v5_intelligence_enabled = falseon/admin/aishort-circuits the AI pipeline — no event is enqueued. New events stay inpending. - Master feature flag for the missing surface is off. If
object_detection_enabled = false, the YOLO stage is skipped and the AI evidence panel’s “Objects” tab is empty; same forface_recognition_enabledand the “Faces” tab. - Frame extraction failed. The pipeline pulls N=4 uniform frames from the event clip before calling the AI Runtime. If the clip is missing, corrupted, or uses a codec ffmpeg cannot decode on the cloud, S1 fails and the event reaches
failed. - Embedding-norm mismatch. A returned embedding’s L2 norm fell outside
[0.99, 1.01]. The cloud client rejects the response and retries; a model artifact swap or corrupt ONNX export typically causes this. - Org is in
ai_maintenancemode. The AI queue is paused so admins can run a clean migration / backfill. New events sit inpendinguntil maintenance finishes. - Clip upload failed. When the gateway / cloud recorder cannot upload the clip, the event is
skippedwithclip_status = 'failed'and the AI pipeline never runs.
Fixes
If the AI Runtime is degraded
- Open
/admin/aiand look at AI Runtime — Model health. - If any of the three local cards (MobileCLIP2-B / YOLO26n / InsightFace) reads Unloaded, Degraded, or Unknown for more than a refresh cycle, the sidecar is not serving requests.
- Use the operator runbook in Emergency: handle Gemini and AI Runtime degraded modes to restart the sidecar or fall back to feature-flagged degradation.
- After the sidecar is healthy, trigger a bulk reprocess: /admin/ai → Maintenance wizard is the safer path for a backlog;
POST /api/v1/ai/reprocesswith{"scope": "failed"}works for a small failed-event count.
If the master or feature toggle is off
- Open
/admin/aiand click the Scope matrix tab in AI features. - Verify the master toggle is on and the per-feature flag for the missing surface (object detection, face recognition, etc.) is on.
- Toggle it back on. Audit row
ai_feature_flags.updatedis emitted automatically. - New events will be analysed immediately; reprocess past events via
POST /api/v1/ai/reprocess.
If frame extraction failed
- Open the event, check the Clip tab. If the clip will not play, the v5 frame extractor cannot decode it either.
- Check the camera’s codec on the Cameras detail page. H.264 is universal; H.265 requires a healthy cloud H.265 decoder.
- If many events from the same camera fail, the camera’s stream configuration is the common cause — see the live-view troubleshooting page for codec checks.
If the event is stuck because of ai_maintenance mode
- Open
/admin/ai → Maintenance wizard. The wizard shows the current mode. - If the org is in
ai_maintenanceand a backfill is in progress, wait for it to finish. The Finish button is gated server-side:POST /api/v1/admin/ai-maintenance/finishreturns 409 while backfill is running. - Once the wizard exits to
normalmode, the AI queue drains and new events index.
If the embedding norm is out of range
This indicates a model artifact mismatch. Run the checksum preflight:
- Open
/admin/ai → Maintenance wizard. - Click Run checksum preflight (or
GET /api/v1/admin/ai-maintenance/preflight/checksums). - Any model whose actual SHA256 does not match
ai-runtime/reference_checksums.jsonis degraded — the sidecar must be rebuilt with the canonical artifact before indexing can resume.
Verify the fix
- Trigger a new event from the affected camera — record a clip manually from the Cameras page.
- Wait up to 30 seconds.
- Open the new event’s AI evidence panel. You should see:
- Overview tab:
ai_status = indexed(orunderstoodif the VLM summary already ran). - Frames tab: 4 frame thumbnails (signed URLs from object storage).
- Tags tab: 1–8 canonical tags with similarity scores.
- Objects tab: YOLO26n detections (when
object_detection_enabled = true). - Faces tab: InsightFace faces with matched profile labels (when
face_recognition_enabled = true).
- Overview tab:
Still stuck?
- Why NovaVMS uses one AI stack with v5 evidence-first design — pipeline rationale
- Canonical AI tags — what tag values to expect
- Configure AI for your organization — admin surface and knobs
- Emergency: handle Gemini and AI Runtime degraded modes — full degraded-mode runbook