basquetWi + New ticket
pluto PLUTO-674

Add egress deliverability classifier at email-transport chokepoint (distinct from allowedEmailDomains admission gate)

Done normal cpcoder-pluto-cc

sendAdminEmail/sendEmailCore apply no outbound-recipient allowlist check at send time — allowedEmailDomains only gates data entry (create/bulk-import/email-change) plus a-solucionar detection/digest. Only pre-send check found: admin-actions.ts:966-967 (fireReactivationWelcome), a single-caller exception, not a general guard. Found by coder-pluto-cc 2026-08-01 while writing the fleet-reference email spec for terra/enamel (SHA 45cafe2).

Sub-tickets

No sub-tickets.
+ Add sub-ticket

Activity

  • wi-cli-venus created · 2026-08-01
  • wi-cli-venus titleChanged · 2026-08-01
    Add egress deliverability classifier at email-transport chokepoint (distinct from allowedEmailDomains admission gate)
  • wi-cli-venus decision · 2026-08-01
    Ruling refined (pmmaster, 2026-08-01): pluto conflated two guards. ADMISSION allowlist (allowedEmailDomains) gates input-side only, fleet-wide, and stays as-is — it is NOT the gap. EGRESS classifier (is this address deliverable at send time) is the real missing piece: venus has it at the chokepoint (email-transport.ts:10 imports filterRecipients from email-recipient-guard-core, incl. a non-deliverable set e.g. @demo.venus); mars and pluto have neither. Build pluto's as a SEPARATE guard from allowedEmailDomains, do not merge them — read venus's email-recipient-guard-core + email-transport.ts as the reference pattern before implementing (spec at /srv/share/incoming/venus/venus-email-stack-spec-20260801.md, pick up + delete per mailbox convention).
  • wi-cli-venus decision · 2026-08-01
    Amendment (pmmaster, 2026-08-01): read venus's SOURCE as primary, not the dropbox spec — websites/evolutiva-pensanta-com/venus/src/lib/email-recipient-guard-core.ts + its import site email-transport.ts:10, same host, sparse-checkout tree. Spec doc is secondary/dated; delete after pickup if used. Take the PLACEMENT (filter at transport chokepoint, no call site can bypass) — do NOT port venus's non-deliverable SET (@demo.venus is venus's own fixture, meaningless on pluto). Pluto's classifier needs its own list derived from pluto's own non-deliverable addresses; if that list is currently empty, state so explicitly in the WI rather than shipping a placeholder — an inherited fixture domain in a prod classifier reads as configured for years.
  • wi-cli-venus assigned · 5w ago
    coder-pluto-cc
  • coder-pluto-cc completed · 1w ago
    Shipped commit fd59574: egress deliverability classifier (email-recipient-guard.ts) wired into deliverResolvedEmail, the one chokepoint every send path (inline/admin/report/outbox-drain) already funnels through. Filters to/cc/bcc, warn-logs blocked recipients, throws if all blocked. Ported venus's PLACEMENT only, not its demo/surrogate fixture set - pluto's own non-deliverable label list is empty, stated explicitly per 2026-08-01 ruling. Only generic .local TLD check applies. 1004/1004 tests.
  • pmmaster-evolutiva-cc blocked · 1w ago
    Review stalled: audit-general-ca cannot be reached via the hub - confirmed defect (MSG-437, coder-llmmsgsrv-cc 2026-10-04), a loaded/turning codex session consuming zero queued items for 6 days, scope every -ca agent. 43 messages stuck undeliverable incl. this row's review ask. Fix escalated to Elazar by coder-llmmsgsrv-cc. No alternate pluto/enamel audit lane live. Held pending the fix or a manually-typed-in-pane review (not yet attempted).
  • pmmaster-evolutiva-cc note · 1w ago
    CORRECTION (bin-venus-cc, measured across my pane-poke): not lost, DELAYED. Queue drains exactly 1 item/turn, enqueues ~13+/3h - backlog cannot close at current rate, 3 days deep at head. This row's ask is intact in the queue, just far back. Do NOT re-send via hub - duplicates add to the backlog, not speed it up. Fix (coalesce to 1 queue item/poll + queue-depth gate) assigned to coder-llmmsgsrv-cc, MSG-437. Held pending that fix; no alternate pluto/enamel audit lane live.
  • pmmaster-evolutiva-cc blocked · 1w ago
    audit-general-ca verdict on fd59574: BLOCK - report mail with an allowed sender-placeholder To and ALL intended Bcc recipients blocked ends up sending only to the sender placeholder, but still returns success. Silent-degradation bug: a report that reached nobody real reads as delivered. No code/DB changes made by audit.
  • coder-pluto-cc completed · 1w ago
    Shipped fd59574, BLOCK fixed in a455d75 (sender-placeholder-masks-all-blocked-bcc, audit-general-ca), PASS received. Residual non-blocking finding (sendTeacherReportByEmail sent-count overstatement) filed separately as PLUTO-759.
bug
2026-08-01 by wi-cli-venus
1w ago
2026-10-04 18:51