Skip to content

docs: mailing-lists explanation + manage-mailing-lists polish - #79

Merged
addisonkline merged 2 commits into
kline/v2-docsfrom
mpm/v2-docs-lists
Jun 23, 2026
Merged

docs: mailing-lists explanation + manage-mailing-lists polish#79
addisonkline merged 2 commits into
kline/v2-docsfrom
mpm/v2-docs-lists

Conversation

@rheaton64

Copy link
Copy Markdown
Contributor

Mailing-lists docs for the v2 release (second of two offers from the dev-list thread)

The companion to PR #78 (webhook docs). Adds the missing
conceptual explainer for mailing lists and rounds out the
existing how-to with the verbs that were absent.

New page

  • docs/explanations/mailing-lists.md — the conceptual model:
    what a list is (swarm-scoped, addressable, inbox-less
    fan-out target), why lists exist, the anatomy (name / swarm
    / host / owner / members / policy), the three-axis policy
    shape with v1 honored variants flagged, message flow
    through the local-delivery path, the admin vs user-agent
    permission split, address-shape examples, and a "things
    lists are not" set of clarifying negatives.

Updated page

  • docs/howtos/manage-mailing-lists.md — added the missing
    steps (list-patch for policy edits, list-delete for
    removal), updated the Starting Point to point at the new
    explainer, expanded the send-to-list step with a forward
    reference to the webhook metadata.list_address field,
    added a See Also section linking explanation /
    webhook-delivery / addressing-model / http-api.

Index update

  • docs/explanations/README.md gains a row for the new
    mailing-lists explainer.

Sources verified against

  • src/mail/protocol/src/mail_protocol/core/lists.py — the
    policy enum and the "forward-looking" framing for the
    deferred variants are paraphrased from the inline docstring.
  • src/mail/server/src/mail_server/backends/memory/api.py
    the list-expansion flow (_fan_out_to_list,
    _deliver_to_address, nested-list skip, per-member webhook
    fire with metadata.list_address).

Caveats / notes

  • Same as PR docs: webhook delivery contract, manage-webhooks how-to, and build-webhook-receiver tutorial #78: the branch is based on kline/v2-docs,
    which is behind main on some changes. The lists docs as
    written should be merge-clean either way, but worth a
    cross-check.
  • The how-to refers to list-patch and list-delete CLI
    commands as if they exist on mail-admin. The protocol
    layer ships them; please confirm the CLI surface matches
    what's documented (and adjust the doc OR the CLI to align
    if there's drift).

Pairs with

— minichorus-pm

minichorus-pm and others added 2 commits June 23, 2026 16:21
Second of the two docs offers from the dev-list thread on Final
Prep for v2. Adds the conceptual explainer that was missing and
fills the gaps in the existing how-to.

## docs/explanations/mailing-lists.md (new)

The conceptual model. Coverage:

- What a list is: a swarm-scoped, addressable fan-out target
  with no inbox.
- The address shape: list:<name>@<swarm>@<host>, with the list:
  prefix as the distinguishing marker against the agent / user
  / admin shapes.
- Why lists exist: three concrete problems (broadcast in one
  send, stable address for changing audience, policy
  separated from membership).
- Anatomy: name, swarm, host, owner, members, policy, metadata.
  Canonical address immutable; policy and members mutable.
- The policy shape: three independent enumerations
  (visibility, join_policy, send_policy), each with v1's
  honored variant flagged and the deferred variants explained
  as forward-looking wire-format reservations.
- How messages flow: local delivery picks up list:, looks up
  list by address, fans out per-member with metadata.list_address,
  nested-list members get skipped, webhook firing is per-member.
- Admin vs user-agent permission split: admin owns create /
  patch / member add-remove / delete and gets unconditional
  reads; user-agents get policy-gated read / subscribe /
  unsubscribe / send.
- Addressability examples (table of the four address shapes).
- Things lists are NOT: not a queue or buffer, not a history
  store, not a privacy boundary in v1.

Sources verified against
src/mail/protocol/src/mail_protocol/core/lists.py — the policy
enum and 'forward-looking' framing are paraphrased from the
inline docstring.

## docs/howtos/manage-mailing-lists.md (polished)

The existing how-to covered list / list-get / create / subscribe
/ unsubscribe / member-post / member-delete / send. Added:

- An updated Starting Point that points at the new explanation
  and names the address-shape convention explicitly.
- Step 6 (NEW): update list policy via list-patch with the v1
  honored variants and a pointer to the deferred-variant
  discussion.
- Step 7 (NEW): delete a list via list-delete with the
  in-flight-messages-already-expanded note.
- Step 8 (was step 6): send to a list, plus a forward
  reference to the webhook delivery doc for how the
  list_address metadata surfaces on the wire.
- See-also section with cross-links to mailing-lists,
  webhook-delivery, addressing-model, and http-api.

## docs/explanations/README.md

Index row added for the new mailing-lists explainer.
Signed-off-by: Addison Kline <77369109+addisonkline@users.noreply.github.com>
@addisonkline
addisonkline merged commit ce3a801 into kline/v2-docs Jun 23, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants