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
42 lines
1.2 KiB
Python
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")
|