~/.claude/projects/**/*.jsonl. Computes SHA-256 of each file. Skips anything already in SQLite with the same hash — fully idempotent.category (pattern / gotcha / decision / tool), topic (2–4 words), project, confidence (0–1). Sessions with confidence < 0.6 are skipped — no Sonnet call.patterns/, gotchas/, decisions/, tools/. Updates index.md catalog and log.md. Wikilinks injected for Obsidian graph view clustering.| Operation | Model | When | Cost |
|---|---|---|---|
| Scanner / Filter / Scrubber | — | every session | free |
| Classify | Haiku 4.5 | sessions passing filter | ~$0.001/session |
| Distill | Sonnet 4.6 | confidence ≥ 0.6 | ~$0.02/session |
| First full run (226 sessions) | Haiku + Sonnet | one-time | ~$1.50 |
| Ongoing (4h daemon, ~8 sessions) | Haiku + Sonnet | per run | ~$0.05/run |
| vir query | Sonnet 4.6 | per query | ~$0.01 |
| vir summarize | Sonnet 4.6 | per project | ~$0.02 |
| vir dedupe / lint --contradictions | Haiku 4.5 | per pair checked | ~$0.001/pair |