mail-address-semantics/workplans/MAS-WP-0009-declare-v0-2-final.md
tegwick f07576451a MAS v0.2 final (MAS-WP-0009 finished); residual MAS-WP-0014
Founder decision after the second implementation: close the two open gaps,
then declare v0.2 final. Section 13: parsers MUST reject over 64 octets
(fixtures p1-050/051); section 8: equivalence is between targets, key format
not normative. Draft markers removed, CHANGELOG dated 2026-10-19,
MAS_VERSION 0.2, mas_conformance vendors the v0.2 addresses.json. Mode
contract v0.1 stays draft: MAS-WP-0014 (independent email side).

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
2026-10-19 13:35:10 +02:00

4 KiB
Raw Permalink Blame History

id type title domain repo status owner topic_slug created updated origin origin_ref state_hub_workstream_id
MAS-WP-0009 workplan Declare MAS v0.2 final communication mail-address-semantics finished claude coulomb-social 2026-10-19 2026-10-19 residual MAS-WP-0008 31b1e866-2f64-5606-92f4-18a67d12ad78

Declare MAS v0.2 final

Residual of MAS-WP-0008. Founder decision (2026-10-19): v0.2 stays a draft until a second implementation or deployment exists.

Second implementation or deployment

id: MAS-WP-0009-T01
status: done
priority: low
state_hub_task_id: "65fe7a3f-4142-5834-bca8-3de6b8839986"

Wait for, or build, an implementation independent of mas_core, or a second deployment by another operator. It must pass mas-v0.2-spec/conformance/addresses.json and statute-aware.json unchanged. It also covers the second draft (scope widened after the assessment history/2026-10-19T090725Z-scope-vs-intent.md, risk A): a small consumer in a second language that parses addresses and acts as an outside master in the slave role is enough, provided it passes mas-modes-v0.1-spec/conformance/flows.json unchanged. It depends on MAS-WP-0013. Record every case where the fixtures or the spec text had to be read in a way mas_core does not.

Declare final

id: MAS-WP-0009-T02
status: done
priority: low
state_hub_task_id: "a30c1b69-4b41-5636-865a-82341175668b"

Fold in the findings from T01, then remove "draft" from the bundle (README, SPECIFICATION, CONFORMANCE, CHANGELOG) and date the v0.2 release in the changelog.

Outcome of T01 (2026-10-19)

  • Founder interview. TypeScript on Node, with no dependencies, in impl/js/. Scope: parser, statute-aware rules and an outside master. Findings are reported before any decision to declare v0.2 final.

  • impl/js/. Written from the spec texts and fixtures only. It passes, unchanged and read in place: addresses.json (35), statute-aware.json (33 after SCP-9) and auth.json (14). Its outside master passes all 11 slave-setup flows of mas-modes-v0.1-spec against the Python email side: 11 of 11 with the right key, 0 of 11 with a wrong key.

  • Differential test (tests/test_differential.py): 1500 generated local-parts × parse (P1 and P2), interpretation under 4 statutes, and destination transforms.

  • Findings.

    1. §6.3 did not say that the interaction stand-in is read only without ! (q!---callback).
    2. §6.3 did not say that the resource stand-in excludes an id beginning with - (ticket---, ticket---chat).

    Both were mas_core behavior not written in the spec. They are now SCP-9 in the v0.2 draft, with fixtures si-011 to si-013 and dt-109. The ABNF comments still said "v0.1"; fixed. Also noted, not changed: the spec defines no concrete equivalence-key format. Conformance compares only equality, which both implementations agree on. The spec does not say whether a parser must reject more than 64 octets: mas_core does and the JS parser does not. No fixture covers it.

  • Not independently validated: the email side of the mode contract. It exists only in Python; the JS work covers the master side.

Outcome of T02 (2026-10-19)

  • Founder decision: close the open gaps, then declare v0.2 final.
    • Length (§13): parsers MUST reject over 64 octets. Fixtures p1-050 and p1-051. The JS parser was aligned; mas_core already did this.
    • Equivalence (§8): it is between targets (facets and interactions take no part), and the key format is not normative.
  • v0.2 is final (2026-10-19). "Draft" is removed from the bundle and MAS_VERSION is 0.2. mas_conformance/addresses.json now vendors the v0.2 bundle (a superset of v0.1.1's).
  • Results. Both implementations pass every fixture: mas test parser 64/64 and statute-aware 33/33; JS node --test 85/85. They agree on every generated case in the differential test.
  • Mode contract v0.1 stays a draft (founder). Residual: MAS-WP-0014 (an independent email side).