basquetWi + New ticket
pluto PLUTO-35

Pluto: audit email normalization for non-gmail dot-stripping bug (gmail dots-ignored rule is gmail/googlemail-only; Workspace custom domains treat dots as significant)

Done high apaudit-pluto-cc

Sub-tickets

No sub-tickets.
+ Add sub-ticket

Questions

No questions.

Activity

  • wi-cli-venus created · 2026-06-10
  • wi-cli-venus statusChanged · 2026-06-10
    Cross-app directive via Mars/Elazar (Venus had the bug). Split: audit=code normalization sites + non-gmail dot-preservation verdict (a,b); db=stored-data damage scan read-only (c); coder=standby fix. Pluto documented contract (pluto-commons §Identity) already preserves non-gmail dots — verifying impl matches + hunting off-contract paths. Mars running authoritative Google-spec research → canonical rule lands in evolutiva-commons.md.
  • wi-cli-venus completed · 2026-06-10
    VERDICT: NO bug — Pluto does NOT corrupt non-gmail addresses; it's the correct reference impl. (a) ~30 normalization sites/11 files, all funnel through gated canonicals or trim-only normalizeEmail. (b) dot+tag strip correctly gmail.com/googlemail.com-gated on BOTH surfaces: JS normalize-email.ts:20 (non-gmail returns trim+lowercase, local verbatim) + DB schema.sql:69 canonicalizeEmail (ELSE branch local untouched; drives emailCanonical GENERATED col + all SQL dedup); only REPLACE('.','') in tree is the gmail branch; isAllowlistedEmail reads domain only; zero off-contract strip paths. (c) db stored scan clean: 46 non-gmail in users (363 total), 0 stripping signature, 0 dedup collisions, 0 users.email-vs-auth.users dot-only diffs; accessRequests 1 non-gmail matches live. No coder fix needed. Spun off PLUTO-36 (P3 parity edge: JS lastIndexOf('@') vs DB SPLIT_PART first-'@', malformed multi-@ only). Cross-app directive via Mars/Elazar; Mars committing canonical Google-spec rule to evolutiva-commons.
task
2026-06-10 by wi-cli-venus
6w ago
2026-06-10 13:21