Analysis and Comparison
vidtrace analyze and vidtrace compare help agents and reviewers connect a ticket description to extracted video evidence.
These commands are heuristic. They search ticket terms across OCR and transcript evidence and cite matching timeline entries. They do not replace human or model review of the generated bundle.
Term matching is deterministic and offline. It normalizes punctuation-separated words, so examples like log-in, log in, and login can match the same evidence.
Analyze
vidtrace analyze /path/to/bug_artifacts_YYYYMMDD_HHMMSS --ticket ticket.mdanalyze writes a Markdown report with:
- summary
- ticket match status
- matched and missing terms
- evidence references with timestamps and paths
- reproduction notes
- gaps
Compare
vidtrace compare /path/to/bug_artifacts_YYYYMMDD_HHMMSS --ticket ticket.md
vidtrace compare /path/to/bug_artifacts_YYYYMMDD_HHMMSS --ticket ticket.md --jsoncompare returns a coverage-aware status:
supported: enough ticket terms appear in OCR/transcript evidenceno_observation: evidence exists but ticket terms do not appearinconclusive: some terms match, but not enough for confidencecontradicted: the ticket claims a failure, but evidence mostly shows success languageunknown: no usable terms or evidence were available
Pass --mode hybrid to also rank the full ticket text against a temporary evidence index (BM25). Classic term hits still appear; hybrid mainly reorders evidence and can lift thin inconclusive cases when the ticket text finds strong timeline hits. confidence explains how much support the heuristic found:
high: a match with broad term coverage and multiple term-level hitsmedium: a match with enough evidence for a first passlow: a mismatch or thin evidence that needs manual inspection
The JSON output is intended for agents:
{
"ok": true,
"status": "supported",
"coverage": "supported",
"confidence": "medium",
"score": 0.5,
"matched_terms": ["login", "submit"],
"missing_terms": ["network"],
"term_hits": [
{
"term": "login",
"source": "ocr",
"time_seconds": 0,
"frame": "frames/frame_0001.png",
"ocr_path": "ocr/frame_0001.txt",
"text": "Login failed after submit"
}
],
"evidence": [
{
"time_seconds": 0,
"frame": "frames/frame_0001.png",
"ocr_path": "ocr/frame_0001.txt",
"text": "Login failed after submit"
}
]
}Known limitations:
- Text matching cannot prove visual state by itself; inspect frames for important conclusions.
- OCR errors can hide real matches or create noisy terms.
- Generic ticket terms can inflate the score. Prefer
term_hitsandevidenceover score alone. - The command does not use embeddings or remote models.
Agent Guidance
- Run
vidtrace extract VIDEO --json. - Read
output_dirfrom stdout. - Run
vidtrace validate "$output_dir" --json. - Run
vidtrace compare "$output_dir" --ticket ticket.md --json. - If the result is
mismatchorinconclusive, inspecttimeline.json,ocr/ocr_all_frames.txt, transcript JSON, and selected frames before deciding.