Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Assistant: claude-code Assistant-Model: opus Assistant-Process: 252470@bnt-lap001 Assistant-Session: ad628c8f-4be2-4979-94c9-76c7ed6f8241
83 lines
2.3 KiB
Markdown
83 lines
2.3 KiB
Markdown
# 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.
|