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
3.3 KiB
MAS v0.2 Conformance
1. Test surfaces
An implementation can claim any of the following independently:
MAS-P1-PARSERMAS-P2-PARSERMAS-V0.2-GENERATORMAS-V0.2-STATUTEMAS-V0.2-STATUTE-AWARE
2. Parser requirements
A parser claiming MAS-P1-PARSER MUST produce the expected result for every
fixture whose profile is p1.
A parser claiming MAS-P2-PARSER MUST produce the expected result for every
fixture whose profile is p2, and MUST also satisfy MAS-P1-PARSER.
The parsed object in the fixture file is normative for the test corpus.
A parser MUST NOT infer person, actor, or function from ., -, _.
3. Generator requirements
A generator:
- MUST emit only grammar-valid canonical ASCII local-parts;
- MUST NOT emit empty target, resource type, resource id, facet, or interaction;
- MUST emit
+before!; - MUST NOT emit more than one
+or one!; - MUST NOT emit
$or^; - MUST NOT emit both
+and!; - MUST keep the encoded SMTP local-part at or below 64 octets.
Fixtures with generator_allowed: false may still be accepted by a P2 parser,
but a conforming generator MUST NOT create them.
4. Statute requirements
A statute implementation MUST validate discovery documents using
schema/mas-statute-v0.2.schema.json when mas_version is 0.2. A 0.1
statute is validated with the v0.1.1 schema and gets no v0.2 features.
It MUST NOT apply:
- case folding,
- dot folding,
- address classification,
- resource-type semantics,
- interaction-mode semantics,
unless the exact-host statute successfully validates and declares them.
5. Statute-aware requirements (v0.2)
An implementation claiming MAS-V0.2-STATUTE-AWARE MUST produce the
expected result for every case in conformance/statute-aware.json. Each
case names one of the file's inline statutes, whose namespace is the host.
interpretation: the received local-part is read ascanonical, using the listedstand_ins(§6.3). The parser alone never interprets stand-ins.equivalence:aandbhave the same equivalence key exactly whenequivalentis true (§8,resource_id_case).destination: applying the transforms inneedstolocal_partyieldsexpect. Whenexpectisnull, the generator MUST refuse (§12.1).reasonis informative, and refusal codes are not normative.allow_lossymarks an explicit request for a drop transform.
Handoff behavior (§7.1) is not tested here. Its conformance surfaces
(MAS-MODES-EMAIL-MASTER, MAS-MODES-EMAIL-SLAVE) and fixtures are in
mas-modes-v0.1-spec/.
6. Discovery failure
Failure to retrieve or validate a statute:
- does not invalidate the email address;
- does invalidate any claim that MAS namespace semantics were discovered;
- falls back to ordinary email handling plus exact local configuration.
7. Inheritance
Implementations are not required to implement inherits.
Implementations that do implement it MUST:
- fetch the explicit URI only;
- detect cycles;
- treat inherited data as defaults;
- never inherit explicit
addressesregistry entries; - let the child override inherited resource types and interaction modes.
8. Test command
The bundled reference parser can be run with:
python reference/mas_parser.py --self-test
The reference parser is non-normative; the grammar, specification, schema, and fixtures are normative for v0.2.