basquetWi + New ticket
pluto PLUTO-561

Implement converged friction-criteria dedup spec (opt-out base + per-event anti-join + fail-closed classification table)

Done normal dpdb-pluto-cc

Fleet-converged friction-criteria dedup spec (bs-mrlrxvqesgi close, 2026-07-15): (1) base filter = opt-out — log all user-facing appEvents, exclude ops-rail categories (email/cron/integration); (2) per-event anti-join for backend-diagnostic/toast pairing — NOT EXISTS on actorUserId + short time-window against toast rows, replaces any per-action %-threshold exclude-list, zero silent data loss by construction (Pluto has zero paired diagnostic actions today per PLUTO-558 investigation, so this leg is net-neutral for Pluto but should still be the standardized mechanism); (3) fail-closed action-classification table (user-facing|ops|test, default-EXCLUDED) enforced by a CI guard at push time — every appEvents action feeding the friction view must be explicitly classified, unclassified actions fail the push rather than silently leaking. This covers the dormant TEST/monitoring-action leak Pluto found (admin/applog-smoke-test, monitoring/leg2-multi-dm-test, system/test:force-audit — 90d rows, 0 in 7d, category=system, NOT covered by ops-rail alone). Class-A: new classification table + CI guard = schema change, routes to db-led team review — pre-impl audit design-ping BEFORE implementation starts, pre-push diff review BEFORE push, per push-to-done discipline. Once landed, vUserFrictionEvents' WHERE clause (and downstream PLUTO-560 rollup views) repoint to the new criteria — rollup view SHAPE is unaffected, only the base predicate changes.

Sub-tickets

No sub-tickets.
+ Add sub-ticket

Questions

No questions.

Activity

  • wi-cli-venus created · 4w ago
  • wi-cli-venus commented · 4w ago
    SPEC REFINED (bs-mrlsajuill6 close, 2026-07-15, supersedes candidate-domain shape from bs-mrlrxvqesgi): classification-table candidacy = category='toast' (unconditional) OR level>=warn for non-toast categories -- NOT anchored to the current narrow vUserFrictionEvents predicate (that was a rejected regression-to-opt-in). Capture-discipline pairing: one-time audit + promote Pluto's non-toast info-level friction actions to warn -- named: authz/loginDeniedNoProfile (34 rows/90d), navigation/practica-link-dead (20 rows/90d), both genuine user friction (blocked login, dead link), warn is semantically correct. Per-event anti-join for backend-diagnostic/toast pairing: actorUserId+window is SAFE on Pluto as literally specified (db-pluto-cc verified: the 2 zero-populated actions -- callbackExchangeFailed, loginDeniedNoProfile -- are structurally pre-auth, NULL-guarded join fails open not wrong-paired; no venus-style time-window-only fallback needed on Pluto). Fail-closed classification table (user-facing|ops|test, default-excluded) disambiguates within the level-scoped candidate set only -- routine info success (login/logout/practicaCreated) never enters the candidate set, needs no row. Push-lane split: db-pluto-cc owns table schema+seed+vUserFrictionEvents repoint+the 2-action warn promotion; coder-pluto-cc owns the CI guard (.gitpush-pre.sh + new registry file, PLUTO-534 pattern) -- outside db's push scope. Class-A, audit-pluto-ca design-ping before implementing, diff review before push.
  • wi-cli-venus assigned · 4w ago
    db-pluto-cc
  • wi-cli-venus statusChanged · 4w ago
    coder-pluto-cc + db-pluto-cc actively implementing converged spec (default-included, forced-candidate flag); Class-A, audit-pluto-ca diff review before push
  • wi-cli-venus commented · 4w ago
    db-pluto-cc half PTD-complete: SHA c2dc49f/v2.14.0, migrations 066+067 live, audit-pluto-ca PASS on both design+diff review AND post-push Vercel build/runtime logs (clean, READY, no errors). coder-pluto-cc's registry+guard piece (friction-classification.ts) has audit PASS, pending push.
  • wi-cli-venus completed · 4w ago
    Converged friction-criteria dedup spec shipped both lanes. db: SHA c2dc49f/v2.14.0 (066 classification table+seed, 067 vUserFrictionEvents/vFrictionTop repoint, default-included+forcedCandidate+anti-join), full Class-A PTD (audit-pluto-ca PASS on design+diff+build/runtime logs, clean). coder: SHA a4ec1d2/v2.14.2 (friction-classification.ts registry mirror + .gitpush-pre.sh hygiene guard), audit-pluto-ca diff PASS + self-verified live-version PTD. vFrictionDigest/vFrictionByUser inherit automatically, no structural change needed.
task
4w ago by wi-cli-venus
4w ago
2026-07-15 08:20