Mode contract v0.1 final (MAS-WP-0014 finished)
Founder decision after the independent JS email side. Draft markers removed (bundle, address spec v0.2 section 7.1, reuse surface), CHANGELOG v0.1 with MCP-1..6 and known limits. SCOPE: all workplans but MAS-WP-0007 finished. 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
This commit is contained in:
parent
71c17fb5f9
commit
001cab57d1
7 changed files with 62 additions and 23 deletions
29
SCOPE.md
29
SCOPE.md
|
|
@ -7,10 +7,9 @@ Reference implementation and spec workbench for Mail Address Semantics
|
|||
framework. Contents: parser, statute discovery, pure policy, generator,
|
||||
CLI, mail gateway, reference ticket service, a tested Postfix integration
|
||||
profile, and the mode contract with an email side that works as master or
|
||||
slave. It implements address spec v0.1.1 and v0.2 (final), and mode
|
||||
contract v0.1 (draft). A second, independent implementation in
|
||||
JavaScript (`impl/js/`) validates v0.2 and the master side of the mode
|
||||
contract.
|
||||
slave. It implements address spec v0.1.1 and v0.2, and mode contract
|
||||
v0.1; all are final. A second, independent implementation in JavaScript
|
||||
(`impl/js/`) validates v0.2 and both sides of the mode contract.
|
||||
|
||||
## Core Idea
|
||||
|
||||
|
|
@ -86,20 +85,18 @@ delivery stays external.
|
|||
- Status: active. The reference experiment (MAS-WP-0002) passed its
|
||||
decision gate on 2026-10-18; the findings are in
|
||||
`docs/experiment-review.md`.
|
||||
- Finished: MAS-WP-0001 to 0006 and 0008 to 0013. That covers v0.2,
|
||||
which is final; the mode contract with authentication, one outbound
|
||||
path and harness-independent flows; and the second implementation. Postfix profile, v0.1.1
|
||||
errata, v0.2 draft, address composer, v0.2 conformance cases, and the
|
||||
mode contract with its reference implementation.
|
||||
- Open: MAS-WP-0007 (retire the live MX; backlog, kept by decision) and
|
||||
MAS-WP-0014 (finalize mode contract v0.1; waits for an independent email
|
||||
side).
|
||||
- Finished: MAS-WP-0001 to 0006 and 0008 to 0014. That covers the
|
||||
Postfix profile, the v0.1.1 errata, v0.2 (final), the address composer,
|
||||
the mode contract v0.1 (final) with authentication, one outbound path
|
||||
and bundle-only flows, and the second implementation (`impl/js/`, both
|
||||
specs, both contract sides).
|
||||
- Open: MAS-WP-0007 (retire the live MX; backlog, kept by decision).
|
||||
- v0.2 is final (founder, 2026-10-19, after MAS-WP-0009). Mode contract
|
||||
v0.1 stays a draft.
|
||||
v0.1 is final too (founder, 2026-10-19, after MAS-WP-0014: independent
|
||||
JS email side; MCP-1 to MCP-6).
|
||||
- P2 is decided: `!MODE` requests a handoff (founder, 2026-10-19; SCP-8,
|
||||
v0.2 §7.1). The mode contract v0.1 draft and the reference
|
||||
implementation are done (MAS-WP-0010); `mas test` runs the contract
|
||||
corpus.
|
||||
v0.2 §7.1). The mode contract and its reference implementation are
|
||||
done (MAS-WP-0010); `mas test` runs the contract corpus.
|
||||
- The live MX runs image `mas-live:v0.2-480e69a` (redeployed 2026-10-19)
|
||||
and is kept up by founder decision (MAS-WP-0007 stays in backlog).
|
||||
The deployment with MAS-WP-0012 (one outbound path) is recorded in
|
||||
|
|
|
|||
|
|
@ -9,8 +9,8 @@ how stable each part is.
|
|||
|
||||
| Part | Where | Stability |
|
||||
|---|---|---|
|
||||
| MAS address spec | `mas-v0.1-spec/` (v0.1.1), `mas-v0.2-spec/` (draft) | v0.1.1 stable. v0.2 draft until a second implementation passes its corpus (MAS-WP-0009) |
|
||||
| Mode contract | `mas-modes-v0.1-spec/` | v0.1 draft. Changes are versioned; messages carry `mas_modes_version` |
|
||||
| MAS address spec | `mas-v0.1-spec/` (v0.1.1), `mas-v0.2-spec/` | v0.1.1 and v0.2 final (v0.2: 2026-10-19, two independent implementations) |
|
||||
| Mode contract | `mas-modes-v0.1-spec/` | v0.1 final (2026-10-19), with two independent email sides. Changes are versioned; messages carry `mas_modes_version` |
|
||||
| Gateway event | `mas-modes-v0.1-spec/schema/mas-event-v0.1.schema.json` | v0.1. Events carry `mas_event_version` |
|
||||
| Conformance corpora | the bundles' `conformance/` | Normative for their version. Consume them unchanged |
|
||||
| `mas_core` | parse (no I/O), discover (exact host), resolve (pure), generate / `for_destination` | Python reference library |
|
||||
|
|
|
|||
29
mas-modes-v0.1-spec/CHANGELOG.md
Normal file
29
mas-modes-v0.1-spec/CHANGELOG.md
Normal file
|
|
@ -0,0 +1,29 @@
|
|||
# MAS mode contract changelog
|
||||
|
||||
## v0.1 (2026-10-19)
|
||||
|
||||
Declared final by the founder after the second, independent email side
|
||||
(MAS-WP-0014). `impl/js/src/email.mjs`, written from CONTRACT.md and
|
||||
`conformance/FLOWS.md` alone, passes all 22 flows. With the independent JS
|
||||
outside master it passes the 12 slave-setup flows with no Python contract
|
||||
party.
|
||||
|
||||
Built in MAS-WP-0010, 0011 and 0013: roles, the status machine, message
|
||||
types, principle 10 with one send cap that holds over it (MAS-WP-0012),
|
||||
peer authentication (§7), and bundle-only conformance flows.
|
||||
|
||||
Folded in before release (`docs/mode-contract-proposals.md`):
|
||||
|
||||
- MCP-1: a new email-mastered case is acknowledged by mail (§3.1.1).
|
||||
- MCP-2: details are `Field: value` lines; questions list `Field: ...`
|
||||
(§3.1.4).
|
||||
- MCP-3: a resume mail names the terminal status and its reason or detail
|
||||
(§3.1.3).
|
||||
- MCP-4: `case.key` is chosen by email and opaque to others (§1).
|
||||
- MCP-5: error table (§5.1).
|
||||
- MCP-6: what a blocked or forwarded transfer reports and relays (§3.2.4).
|
||||
- Flow a-008 (a master commands only its own resource types).
|
||||
|
||||
Known limits, not gates: neither email side has run against a real CMS or
|
||||
telephony system yet. Evidence from such integrations goes into the next
|
||||
version as MCP proposals.
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
# MAS mode contract v0.1 (draft)
|
||||
# MAS mode contract v0.1
|
||||
|
||||
How email hands a conversation to another communication mode, and how
|
||||
email works inside a control flow it does not own. The bundle is
|
||||
|
|
|
|||
|
|
@ -1,4 +1,8 @@
|
|||
# MAS mode contract v0.1 (draft): specification bundle
|
||||
# MAS mode contract v0.1: specification bundle
|
||||
|
||||
Final as of 2026-10-19. Two independent email sides pass its flows
|
||||
unchanged: `mas_modes.email_mode` (Python) and `impl/js/src/email.mjs`
|
||||
(JavaScript). See `CHANGELOG.md`.
|
||||
|
||||
How email hands a case to another communication mode, and how email works
|
||||
as one element of a control flow it does not own. It is versioned
|
||||
|
|
|
|||
|
|
@ -322,7 +322,7 @@ A receiver that acts on an interaction request treats it as a request to
|
|||
hand the conversation over to `MODE`. What can happen to that request
|
||||
(negotiation, scheduling, completion, failure, refusal, timeout), and who
|
||||
owns the conversation meanwhile, is defined by the MAS mode contract. The
|
||||
contract is versioned separately (`mas-modes-v0.1-spec/`, draft). Email
|
||||
contract is versioned separately (`mas-modes-v0.1-spec/`). Email
|
||||
remains the durable thread when it is the master. The handoff stays a
|
||||
request: refusal is a normal outcome, and the address grants nothing.
|
||||
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@ type: workplan
|
|||
title: "Finalize mode contract v0.1: an independent email side"
|
||||
domain: communication
|
||||
repo: mail-address-semantics
|
||||
status: active
|
||||
status: finished
|
||||
owner: claude
|
||||
topic_slug: coulomb-social
|
||||
created: "2026-10-19"
|
||||
|
|
@ -41,7 +41,7 @@ the findings into CONTRACT.md as proposals, as SCP-9 did for v0.2.
|
|||
|
||||
```task
|
||||
id: MAS-WP-0014-T02
|
||||
status: progress
|
||||
status: done
|
||||
priority: low
|
||||
state_hub_task_id: "63e4028d-ff57-5855-92d5-fa6ece0382c2"
|
||||
```
|
||||
|
|
@ -77,3 +77,12 @@ final. Then remove "draft" from the bundle and v0.2 §7.1.
|
|||
pass it, and it catches the mutation.
|
||||
- **Tests.** `tests/test_js_impl.py`: JS email, all flows; JS email with JS
|
||||
master. `mas test`: mode corpus 196/196.
|
||||
|
||||
## Outcome of T02 (2026-10-19)
|
||||
|
||||
**Founder decision: mode contract v0.1 is final.** "Draft" is removed from
|
||||
the bundle and from address spec v0.2 §7.1. `mas-modes-v0.1-spec/CHANGELOG.md`
|
||||
records v0.1, MCP-1 to MCP-6, flow a-008 and the known limits: no real CMS
|
||||
or telephony integration yet, and the JS side checks message shape by
|
||||
hand. Evidence from real integrations goes into the next contract version
|
||||
as MCP proposals; it does not gate v0.1.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue