Mail Address Semantics is a voluntary convention for naming people, actors and functions, and for addressing resources, facets, and optional interaction preferences through ordinary email addresses while keeping classification, authority, authentication, equivalence, and delivery implementation explicit and external to the address syntax.
impl/js/src/email.mjs (written from CONTRACT.md + FLOWS.md): both roles, case store, handoffs, timeouts, one-cap outbox with holding, authorization. Passes all 22 flows from the bundle; with the JS master all 12 slave flows (no Python contract party). Writing it found six contract gaps, folded into the draft as MCP-1..6 (acknowledgement, details convention, resume names the outcome, opaque case key, error table, transfer reporting); flows now check outcome tokens, not reference prose. A mutation check found a missing flow: a-008 (per-type master check). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Assistant: claude-code Assistant-Model: opus Assistant-Process: 5787@bnt-lap001 Assistant-Session: 5db26b82-138b-40cc-9856-4d5eb0f752fd |
||
|---|---|---|
| deploy/railiance | ||
| docs | ||
| examples | ||
| experiments/postfix-probe | ||
| history | ||
| impl/js | ||
| integrations | ||
| mas-modes-v0.1-spec | ||
| mas-v0.1-spec | ||
| mas-v0.2-spec | ||
| mas_cli | ||
| mas_conformance | ||
| mas_core | ||
| mas_gateway | ||
| mas_modes | ||
| tests | ||
| workplans | ||
| .custodian-brief.md | ||
| .gitignore | ||
| AGENTS.md | ||
| INTENT.md | ||
| pyproject.toml | ||
| README.md | ||
| SCOPE.md | ||
| WORK-RECORDS.md | ||
mail-address-semantics
Mail Address Semantics is a voluntary convention for naming people, actors and functions, and for addressing resources, facets, and optional interaction preferences through ordinary email addresses while keeping classification, authority, authentication, equivalence, and delivery implementation explicit and external to the address syntax.
This repo holds the normative MAS v0.1 bundle (mas-v0.1-spec/) and a Python
reference experiment (see INTENT.md and workplans/MAS-WP-0002-*).
Parsing is local and deterministic. Discovery is networked. Policy is pure. Delivery remains external.
Layout
| Path | Role |
|---|---|
mas_core/ |
parser, model, generator, statute (schema + semantic lint + inheritance), discovery, policy |
mas_conformance/ |
Shared corpus: spec fixtures (vendored, drift-tested), property cases, statute cases |
mas_cli/ |
mas parse / explain / discover / compose / lint-statute / test |
mas_gateway/ |
Generic inbound mail → MAS event → HTTP (pipe for MTAs, webhook for providers) |
mas_modes/ |
Mode contract v0.1: email side as master or slave (email_mode), callback stub, stub outside master, flow runner |
mas-modes-v0.1-spec/ |
Mode contract bundle: CONTRACT.md, schemas (contract + gateway event), conformance flows |
examples/statute/ |
Static /.well-known/mas for great-service.example + tiny server |
examples/ticket_service/ |
Reference app proving create / correlate / closed / unknown |
docs/experiment-review.md |
Milestone 9 findings |
docs/reuse-surface.md |
What a multimodal framework can depend on |
Quick start
uv venv && uv pip install -e '.[test]'
.venv/bin/pytest # full suite, offline (Postfix probe needs Docker)
.venv/bin/mas test # conformance corpus
.venv/bin/mas explain 'ticket!callback@great-service.example' \
--statute examples/statute/great-service.example/.well-known/mas
.venv/bin/mas lint-statute examples/statute/great-service.example/.well-known/mas
.venv/bin/mas compose mas.coulomb.social ticket=GS-1 --facet comments --for google-groups \
--statute examples/statute/mas.coulomb.social/.well-known/mas # canonical + forwarder-safe
Local end-to-end run:
python examples/ticket_service/ticket_service.py --db /tmp/t.sqlite3 & # :8025
mas-gateway --statute examples/statute/great-service.example/.well-known/mas \
pipe --recipient 'ticket!callback@great-service.example' \
--app-url http://127.0.0.1:8025/mas-events < message.eml
curl -s http://127.0.0.1:8025/outbox