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
This commit is contained in:
parent
a841ceec73
commit
f07576451a
16 changed files with 178 additions and 40 deletions
|
|
@ -1,5 +1,5 @@
|
|||
#!/usr/bin/env python3
|
||||
"""Non-normative MAS v0.1 canonical ASCII reference parser."""
|
||||
"""Non-normative MAS canonical ASCII reference parser (grammar unchanged since v0.1.1)."""
|
||||
|
||||
import argparse
|
||||
import json
|
||||
|
|
@ -21,7 +21,7 @@ def parse(local_part, profile="p1"):
|
|||
try:
|
||||
local_part.encode("ascii")
|
||||
except UnicodeEncodeError:
|
||||
raise ValueError("non-ASCII outside canonical MAS v0.1")
|
||||
raise ValueError("non-ASCII outside canonical MAS")
|
||||
|
||||
if '"' in local_part or "\\" in local_part or "@" in local_part:
|
||||
raise ValueError("quoted/escaped/full address outside canonical local-part grammar")
|
||||
|
|
@ -114,7 +114,7 @@ def self_test():
|
|||
if failures:
|
||||
print(json.dumps(failures, indent=2))
|
||||
raise SystemExit(1)
|
||||
print(f"PASS: {len(fixtures)} MAS v0.1 fixtures")
|
||||
print(f"PASS: {len(fixtures)} MAS v0.2 fixtures")
|
||||
|
||||
if __name__ == "__main__":
|
||||
ap = argparse.ArgumentParser()
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue