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
4 KiB
| 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) andauth.json(14). Its outside master passes all 11 slave-setup flows ofmas-modes-v0.1-specagainst 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.
- §6.3 did not say that the interaction stand-in is read only without
!(q!---callback). - §6.3 did not say that the resource stand-in excludes an id beginning
with
-(ticket---,ticket---chat).
Both were
mas_corebehavior 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_coredoes and the JS parser does not. No fixture covers it. - §6.3 did not say that the interaction stand-in is read only without
-
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_corealready did this. - Equivalence (§8): it is between targets (facets and interactions take no part), and the key format is not normative.
- Length (§13): parsers MUST reject over 64 octets. Fixtures p1-050 and
p1-051. The JS parser was aligned;
- v0.2 is final (2026-10-19). "Draft" is removed from the bundle and
MAS_VERSIONis 0.2.mas_conformance/addresses.jsonnow vendors the v0.2 bundle (a superset of v0.1.1's). - Results. Both implementations pass every fixture:
mas testparser 64/64 and statute-aware 33/33; JSnode --test85/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).