# MAS v0.1 Conformance ## 1. Test surfaces An implementation can claim any of the following independently: - `MAS-P1-PARSER` - `MAS-P2-PARSER` - `MAS-V0.1-GENERATOR` - `MAS-V0.1-STATUTE` ## 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 `!` in v0.1; - 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.1.schema.json`. 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. 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. ## 6. 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 `addresses` registry entries; - let the child override inherited resource types and interaction modes. ## 7. Test command The bundled reference parser can be run with: ```bash python reference/mas_parser.py --self-test ``` The reference parser is non-normative; the grammar, specification, schema, and fixtures are normative for this draft.