Both of this week's embarrassing bugs (#193 fabricated demo data, #188 decorative search box) were frontend, and the frontend has zero tests; the only CI gate is bundle drift. Scope: minimal vitest setup for pure frontend logic (empty-state branches, filter functions, payload mappers), wired into CI beside check:frontend. Follow-up (separate, privacy-gated): a count-only window.onerror beacon under the same telemetry privacy line so fleet JS errors stop being invisible. From the 2026-06-12 gap review.
Both of this week's embarrassing bugs (#193 fabricated demo data, #188 decorative search box) were frontend, and the frontend has zero tests; the only CI gate is bundle drift. Scope: minimal vitest setup for pure frontend logic (empty-state branches, filter functions, payload mappers), wired into CI beside check:frontend. Follow-up (separate, privacy-gated): a count-only window.onerror beacon under the same telemetry privacy line so fleet JS errors stop being invisible. From the 2026-06-12 gap review.