Problem
The totem mail CLI under-exposes two things that exist in the mechanism but not the front-door, making multi-seat repos awkward to operate by hand. Surfaced by lc-codex (2026-06-19) during an lc blind-round reply, sanity-checked by strategy-claude (the doctrine is correct; this is CLI exposure/docs, not a doctrine change).
1. No seat-specific self selector
totem mail --json resolves selfAgents.source = "dirs" → every agent dir in the repo is treated as "self." From liquid-city that returned ["lc-agy", "lc-claude", "lc-codex", "lc-gemini"] and listed mail addressed to lc-claude, not just the querying seat. Fine for a repo-level dashboard, surprising when the operator asks one seat to "check for a dispatch."
The seat-specific mechanism already exists — TOTEM_SELF_AGENT env (the SessionStart hooks call pollMail({ env: { TOTEM_SELF_AGENT: <seat> } }), and mmnto-ai/totem-strategy:scripts/poll-cohort-mail.mjs takes --to <seat>) — but totem mail surfaces no --self <seat> / --to <seat> flag.
2. No consume command, and no docs pointer saying so
totem mail --help exposes show/send/reply but no consume/mark-processed op. This is intended — processed markers are written by the consuming tooling (/signoff, the handoff CLI) at consumption time, holding the single-writer invariant (ADR-106 Amendment 1 §A1.3). But the CLI doesn't say it's skill-owned, so a seat has to guess (lc-codex correctly avoided hand-writing a marker, but only after uncertainty).
Asks
Not in scope
The ECL doctrine itself — it is correct (ADR-106 §3 glob discovery; Amendment 1 §A1.3 skill-owned markers). This issue is @mmnto/cli ergonomics + docs only.
Provenance
lc-codex dispatch liquid-city:.totem/orchestration/lc-codex/outbox/2026-06-19T2147Z-strategy-claude-mail-tool-self-resolution-gap.md; strategy-claude sanity-check reply 2026-06-19T2155Z-lc-codex-mail-tool-self-resolution-sanity-check.md. Doctrine: ADR-106 §3 + Amendment 1 §A1.3.
Problem
The
totem mailCLI under-exposes two things that exist in the mechanism but not the front-door, making multi-seat repos awkward to operate by hand. Surfaced by lc-codex (2026-06-19) during an lc blind-round reply, sanity-checked by strategy-claude (the doctrine is correct; this is CLI exposure/docs, not a doctrine change).1. No seat-specific self selector
totem mail --jsonresolvesselfAgents.source = "dirs"→ every agent dir in the repo is treated as "self." Fromliquid-citythat returned["lc-agy", "lc-claude", "lc-codex", "lc-gemini"]and listed mail addressed tolc-claude, not just the querying seat. Fine for a repo-level dashboard, surprising when the operator asks one seat to "check for a dispatch."The seat-specific mechanism already exists —
TOTEM_SELF_AGENTenv (the SessionStart hooks callpollMail({ env: { TOTEM_SELF_AGENT: <seat> } }), andmmnto-ai/totem-strategy:scripts/poll-cohort-mail.mjstakes--to <seat>) — buttotem mailsurfaces no--self <seat>/--to <seat>flag.2. No consume command, and no docs pointer saying so
totem mail --helpexposes show/send/reply but no consume/mark-processed op. This is intended — processed markers are written by the consuming tooling (/signoff, the handoff CLI) at consumption time, holding the single-writer invariant (ADR-106 Amendment 1 §A1.3). But the CLI doesn't say it's skill-owned, so a seat has to guess (lc-codex correctly avoided hand-writing a marker, but only after uncertainty).Asks
totem mail(--self <seat>/--to <seat>), surfacing the existingTOTEM_SELF_AGENTresolution as a flag.totem mail --helpnote: processed markers are written by/signoff(read/send/reply only here).unread = inbound − handled).Not in scope
The ECL doctrine itself — it is correct (ADR-106 §3 glob discovery; Amendment 1 §A1.3 skill-owned markers). This issue is
@mmnto/cliergonomics + docs only.Provenance
lc-codex dispatch
liquid-city:.totem/orchestration/lc-codex/outbox/2026-06-19T2147Z-strategy-claude-mail-tool-self-resolution-gap.md; strategy-claude sanity-check reply2026-06-19T2155Z-lc-codex-mail-tool-self-resolution-sanity-check.md. Doctrine: ADR-106 §3 + Amendment 1 §A1.3.