mail-address-semantics/mas_conformance/addresses.json
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

377 lines
8.3 KiB
JSON

[
{
"id": "p1-001",
"local_part": "bernd.worsch",
"profile": "p1",
"valid": true,
"parsed": {
"target": "bernd.worsch",
"target_kind": "opaque",
"facet": null,
"interaction": null
}
},
{
"id": "p1-002",
"local_part": "anne-marie.schmidt",
"profile": "p1",
"valid": true,
"parsed": {
"target": "anne-marie.schmidt",
"target_kind": "opaque",
"facet": null,
"interaction": null
}
},
{
"id": "p1-003",
"local_part": "support",
"profile": "p1",
"valid": true,
"parsed": {
"target": "support",
"target_kind": "opaque",
"facet": null,
"interaction": null
}
},
{
"id": "p1-004",
"local_part": "invoice-reviewer_backup",
"profile": "p1",
"valid": true,
"parsed": {
"target": "invoice-reviewer_backup",
"target_kind": "opaque",
"facet": null,
"interaction": null
}
},
{
"id": "p1-005",
"local_part": "happy-helper.v2",
"profile": "p1",
"valid": true,
"parsed": {
"target": "happy-helper.v2",
"target_kind": "opaque",
"facet": null,
"interaction": null
}
},
{
"id": "p1-010",
"local_part": "ticket=PR42",
"profile": "p1",
"valid": true,
"parsed": {
"target": "ticket=PR42",
"target_kind": "resource",
"resource_type": "ticket",
"resource_id": "PR42",
"facet": null,
"interaction": null
}
},
{
"id": "p1-011",
"local_part": "invoice=RE=2026-4711",
"profile": "p1",
"valid": true,
"parsed": {
"target": "invoice=RE=2026-4711",
"target_kind": "resource",
"resource_type": "invoice",
"resource_id": "RE=2026-4711",
"facet": null,
"interaction": null
}
},
{
"id": "p1-012",
"local_part": "ticket=PR42+comments",
"profile": "p1",
"valid": true,
"parsed": {
"target": "ticket=PR42",
"target_kind": "resource",
"resource_type": "ticket",
"resource_id": "PR42",
"facet": "comments",
"interaction": null
}
},
{
"id": "p1-013",
"local_part": "bernd.worsch+github",
"profile": "p1",
"valid": true,
"parsed": {
"target": "bernd.worsch",
"target_kind": "opaque",
"facet": "github",
"interaction": null
}
},
{
"id": "p1-020",
"local_part": "=PR42",
"profile": "p1",
"valid": false,
"error": "empty resource type"
},
{
"id": "p1-021",
"local_part": "ticket=",
"profile": "p1",
"valid": false,
"error": "empty resource id"
},
{
"id": "p1-022",
"local_part": "ticket=PR42+",
"profile": "p1",
"valid": false,
"error": "empty facet"
},
{
"id": "p1-023",
"local_part": "ticket=PR42+comments+attachments",
"profile": "p1",
"valid": false,
"error": "multiple facet operators"
},
{
"id": "p1-024",
"local_part": "ticket=PR42$4.99",
"profile": "p1",
"valid": false,
"error": "reserved operator"
},
{
"id": "p1-025",
"local_part": "ticket=PR42^1h",
"profile": "p1",
"valid": false,
"error": "reserved operator"
},
{
"id": "p1-026",
"local_part": ".bernd",
"profile": "p1",
"valid": false,
"error": "leading dot"
},
{
"id": "p1-027",
"local_part": "bernd.",
"profile": "p1",
"valid": false,
"error": "trailing dot"
},
{
"id": "p1-028",
"local_part": "bernd..worsch",
"profile": "p1",
"valid": false,
"error": "repeated dot"
},
{
"id": "p1-029",
"local_part": "ticket=PR.42",
"profile": "p1",
"valid": true,
"parsed": {
"target": "ticket=PR.42",
"target_kind": "resource",
"resource_type": "ticket",
"resource_id": "PR.42",
"facet": null,
"interaction": null
}
},
{
"id": "p1-030",
"local_part": "ticket=PR%2B42",
"profile": "p1",
"valid": true,
"parsed": {
"target": "ticket=PR%2B42",
"target_kind": "resource",
"resource_type": "ticket",
"resource_id": "PR%2B42",
"facet": null,
"interaction": null
},
"note": "%2B is literal data; MAS v0.1 does not percent-decode"
},
{
"id": "p2-001",
"local_part": "ticket!callback",
"profile": "p2",
"valid": true,
"parsed": {
"target": "ticket",
"target_kind": "opaque",
"facet": null,
"interaction": "callback"
},
"generator_allowed": true
},
{
"id": "p2-002",
"local_part": "ticket=PR42!web",
"profile": "p2",
"valid": true,
"parsed": {
"target": "ticket=PR42",
"target_kind": "resource",
"resource_type": "ticket",
"resource_id": "PR42",
"facet": null,
"interaction": "web"
},
"generator_allowed": true
},
{
"id": "p2-003",
"local_part": "ticket=PR42+comments!callback",
"profile": "p2",
"valid": true,
"parsed": {
"target": "ticket=PR42",
"target_kind": "resource",
"resource_type": "ticket",
"resource_id": "PR42",
"facet": "comments",
"interaction": "callback"
},
"generator_allowed": false
},
{
"id": "p2-010",
"local_part": "ticket!",
"profile": "p2",
"valid": false,
"error": "empty interaction"
},
{
"id": "p2-011",
"local_part": "ticket!callback!chat",
"profile": "p2",
"valid": false,
"error": "multiple interaction operators"
},
{
"id": "p2-012",
"local_part": "ticket!callback+comments",
"profile": "p2",
"valid": false,
"error": "non-canonical operator order"
},
{
"id": "p1-031",
"local_part": "ticket!callback",
"profile": "p1",
"valid": false,
"error": "interaction not enabled in P1"
},
{
"id": "p2-013",
"local_part": "ticket=PR42+comments!callback$4.99",
"profile": "p2",
"valid": false,
"error": "reserved operator"
},
{
"id": "p2-014",
"local_part": "ticket=PR42+comments!call.back",
"profile": "p2",
"valid": true,
"parsed": {
"target": "ticket=PR42",
"target_kind": "resource",
"resource_type": "ticket",
"resource_id": "PR42",
"facet": "comments",
"interaction": "call.back"
},
"generator_allowed": false
},
{
"id": "p1-040",
"local_part": "\"ticket=PR42\"",
"profile": "p1",
"valid": false,
"error": "quoted local-part outside canonical MAS v0.1",
"note": "v0.1.1 (SCP-1): not canonical, but a receiver treats it as equivalent to ticket=PR42"
},
{
"id": "p1-041",
"local_part": "t\u00efcket=PR42",
"profile": "p1",
"valid": false,
"error": "non-ASCII outside canonical MAS v0.1"
},
{
"id": "p1-042",
"local_part": "Ticket=PR42",
"profile": "p1",
"valid": false,
"error": "invalid resource type",
"note": "v0.1.1 (SCP-2): resource types are lower-case"
},
{
"id": "p1-043",
"local_part": "my--type=PR42",
"profile": "p1",
"valid": false,
"error": "invalid resource type",
"note": "v0.1.1 (SCP-2): no doubled separator in resource types"
},
{
"id": "p1-044",
"local_part": "type-=PR42",
"profile": "p1",
"valid": false,
"error": "invalid resource type",
"note": "v0.1.1 (SCP-2): no trailing separator"
},
{
"id": "p1-045",
"local_part": "support-case_v2=PR42",
"profile": "p1",
"valid": true,
"parsed": {
"target": "support-case_v2=PR42",
"target_kind": "resource",
"resource_type": "support-case_v2",
"resource_id": "PR42",
"facet": null,
"interaction": null
}
},
{
"id": "p1-050",
"local_part": "ticket=aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
"profile": "p1",
"valid": true,
"parsed": {
"target": "ticket=aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
"target_kind": "resource",
"resource_type": "ticket",
"resource_id": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
"facet": null,
"interaction": null
},
"note": "64 octets: the SMTP limit (section 13)"
},
{
"id": "p1-051",
"local_part": "ticket=aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
"profile": "p1",
"valid": false,
"error": "longer than 64 octets",
"note": "v0.2: parsers MUST reject over 64 octets (section 13)"
}
]