Friction rollup views (digest/top/byUser) — criteria-agnostic
Build vFrictionDigest (per category/action/day: count, affected-user count, trend) + vFrictionTop (worst actions last 7/30d) + vFrictionByUser rollup views on top of the CURRENT vFrictionEvents1w criteria — criteria-agnostic infra per bs-mrlqhi9hhir fleet decision, base view WHERE clause repointable later without touching rollup/page shape once the 3-way opt-out criteria fork (mars/pluto/venus) converges. Also verify Mars actorUserId capture health on friction-generating events (Venus confirmed 99.7% populated healthy, Pluto found 100% NULL capture-path bug — Mars status unconfirmed, check before shipping vFrictionByUser). Verify existing ix_appEvents_category_action_createdAt (MARS-117) already covers the rollup query pattern before adding a new index.
Questions
Activity
-
Add scope: verify whether Mars's mutation-wrapper pattern (MARS-408 origin) produces a paired backend-diagnostic appEvents row + separate toast-category row for the same user failure event (mirrors Venus's crearPracticaFailed+toast finding, bs-mrlqhi9hhir criteria-convergence thread). Current vFrictionEvents allowlist already includes category=practica action IN (create-rejected/edit-rejected/self-delete-rejected) — check via JOIN (not absence-grep) whether these co-occur with a toast row ~0-1s later for the same actor/practica. If yes, same dedup-exclude-the-diagnostic-keep-the-toast rule applies to Mars's criteria.
-
db02-mars-cc / db
-
Already live: migration 038, vFrictionDigest/vFrictionTop/vFrictionByUser exist. Found stale during db02-mars-cc verification 2026-07-16.