Users routinely use the VIN-only /dashboard/search box to look for a part by name (e.g. "Cam düğme") or fiddle with search/history and rage-click out of affordance confusion — while nothing is actually broken. The generic ux_friction / frustrated_session tags turned these pure-rage sessions into insights (noise; ~40 of the first 67 open insights were exactly this, all dismissed by the founder). apps/worker/src/lib/tagger.ts: when a session used the search box (search_input_focused) but carries NO concrete failure (errorCount=0, network5xxCount=0, no vin_decode_failed, search_input_validation_failed<3, no payment_initiated/failed, no checkout_started), do not emit the generic ux_friction / frustrated_session tags. With no other actionable tag the session becomes tag-less and tag-sessions discards it → no compress / analyze / insight. Scoped narrowly to search-box sessions on purpose, to avoid hiding genuine parts/category bugs. Every concrete signal stays actionable: JS errors (bug_suspected), 5xx (server_error_impact), payment friction, VIN upstream provider failures, and ≥3 client validation failures (search_validation_friction). Smoke: apps/worker/src/lib/tagger.smoke.ts (12/12) covers the misuse case plus six must-keep cases. tsc --noEmit clean. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
536 B
536 B