mail-address-semantics/mas_conformance/__init__.py
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

42 lines
1.2 KiB
Python

"""MAS v0.1 conformance corpus.
`addresses.json` is vendored unchanged from the spec bundle
(`mas-v0.2-spec/conformance/addresses.json`, a superset of v0.1.1's) and is
normative.
`properties.json` adds implementation-independent property and boundary
cases. `statutes/` holds statute validation cases. `statute_aware.json` is
vendored unchanged from the v0.2 draft bundle
(`mas-v0.2-spec/conformance/statute-aware.json`). Every language
implementation should consume these files unchanged.
"""
from __future__ import annotations
import json
from importlib import resources
def _load(name: str):
return json.loads(resources.files(__name__).joinpath(name).read_text(encoding="utf-8"))
def address_fixtures() -> list[dict]:
return _load("addresses.json")
def property_fixtures() -> list[dict]:
return _load("properties.json")
def statute_cases() -> list[dict]:
"""Each case: {id, file, host, expect: "valid"|"schema"|"semantic", codes?}."""
return _load("statutes/cases.json")
def statute_document(file: str) -> dict:
return _load(f"statutes/{file}")
def statute_aware_fixtures() -> dict:
"""v0.2: {statutes, interpretation, equivalence, destination}."""
return _load("statute_aware.json")