Skip to content

Commit a5cc1df

Browse files
fix(a2ml): reconcile media type to application/vnd.a2ml — unblocks IANA submission (#554)
Clears the last in-repo blocker to the **IANA media-type submission**. ## What I found `a2ml/IANA-MEDIA-TYPE-APPLICATION.md` is a **complete, 259-line RFC 6838 vendor-tree application** for `application/vnd.a2ml` (rev 2, 2026-04-03, *"Status: Draft — ready for submission"*). Its own checklist already ticks *fields reviewed*, *spec links accessible*, *no naming conflict*, and *ASAM A2L (`application/A2L`) distinction clarified*. The only unticked items are **submit the form → monitor review → record the assigned type**. So the registration isn't months of work — it's **an owner action** (the IANA web form needs applicant identity). But the repo contradicted its own application in four places: | name | uses | status | |---|---|---| | `application/vnd.a2ml` | 27 | ✅ the application doc's name | | `text/a2ml` | 5 | ❌ incl. the **normative SPEC** | | `application/vnd.a2ml+text` | 3 | ❌ `+text` is not a registered structured-syntax suffix (RFC 6838 §4.2.8) | | `application/a2ml` | 1 | ❌ standards-tree name — would need IETF review, not the vendor tree | A submission contradicted by its own normative spec invites expert-review pushback, so this reconciles all four to the application doc's name. ## Deliberately **not** touched - `a2ml/archive/SPEC-v1.0.0.adoc` (×2) — frozen historical record; the old name is *correct* there. - `a2ml/RECORD-DIALECT-SPEC.adoc` §14 — it knowingly documents the inconsistency and defers resolution to maintainers. Worth a small editorial update **once IANA assigns the type**. ## Verification `build-registry.sh --check` ✅ and `build-scorecards.sh --check --strict` ✅ locally. `REGISTRY.a2ml` regenerated because `SPEC.adoc` is registry-tracked — which also clears the registry drift currently red on main. ## ⚠️ Related risk for K9 (not fixed here) K9's **dominant** name is `application/vnd.k9+nickel` (41 uses vs 11 bare `application/vnd.k9`). `+nickel` also does not appear in IANA's Structured Syntax Suffix registry. **Verify before submitting K9** — if unregistered, register bare `application/vnd.k9` and keep `+nickel` as documentation, or pursue a separate suffix registration (slow; depends on upstream Nickel). Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
1 parent ff59863 commit a5cc1df

4 files changed

Lines changed: 13 additions & 13 deletions

File tree

.machine_readable/REGISTRY.a2ml

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ name = "A2ML — Attested Markup Language"
4545
stream = "foundation"
4646
home = "a2ml/"
4747
canonical_doc = "a2ml/README.adoc"
48-
source_hash = "sha256:215dd1cc7dd184922d6cb04957cd17dfccb7f00ea78252ff5a53634d67851980"
48+
source_hash = "sha256:3409e79367d002ba52f4ed1742b2846c1beffdf8acf78c53997a69a32bd46617"
4949
route = "the typed/verified machine-readable document format"
5050

5151
[[spec]]
@@ -54,7 +54,7 @@ name = "K9 Self-Validating Components"
5454
stream = "foundation"
5555
home = "k9-svc/"
5656
canonical_doc = "k9-svc/README.adoc"
57-
source_hash = "sha256:84313508e94620b1fb70a853d49e9e080d93ff8413475caaaf0eb64db499a69f"
57+
source_hash = "sha256:9637f4fd9e24d12035da75a719d52127eb1993b206954acde7b576a8a7ad2e96"
5858
route = "self-validating components with embedded contracts + deploy logic"
5959

6060
[[spec]]
@@ -72,7 +72,7 @@ name = "META.a2ml spec"
7272
stream = "foundation"
7373
home = "meta-a2ml/"
7474
canonical_doc = "meta-a2ml/README.adoc"
75-
source_hash = "sha256:4b00ebf2fa1ab6aee46b67be34715b4198d4643ce2025c82882afda502d9c038"
75+
source_hash = "sha256:f5a4aa91b2917ab1945addac2fef904f3b2958240743f2b00a1fbc0f6aca946c"
7676
route = "architecture decisions / governance metadata format"
7777

7878
[[spec]]
@@ -135,7 +135,7 @@ name = "0-AI Gatekeeper Protocol"
135135
stream = "protocol"
136136
home = "0-ai-gatekeeper-protocol/"
137137
canonical_doc = "0-ai-gatekeeper-protocol/README.adoc"
138-
source_hash = "sha256:a5bb4eaac86202798bd47f7e403c6f95fcf1c95ee517e8930a599983a1dd8c64"
138+
source_hash = "sha256:9129453f1962a3cea37702d04e7e8eea353873987dd3e764f8217a045803640d"
139139
route = "the AI-agent entry/gating protocol behind 0-AI-MANIFEST"
140140

141141
[[spec]]
@@ -152,8 +152,8 @@ id = "avow-protocol"
152152
name = "AVOW Protocol"
153153
stream = "protocol"
154154
home = "avow-protocol/"
155-
canonical_doc = "avow-protocol/README.adoc"
156-
source_hash = "sha256:ca167dc32551b71450176b9f9f7538c165b55ce19ee31f5cb7a334affd4edb3c"
155+
canonical_doc = "avow-protocol/BINDING.adoc"
156+
source_hash = "sha256:ed5b1c9415c137348313f6d8a65d0d6eb320abf2f64e76bb25e108d7a21a3b5b"
157157
route = "consent-attested messaging / origin attribution"
158158

159159
[[spec]]
@@ -162,7 +162,7 @@ name = "AXEL Protocol"
162162
stream = "protocol"
163163
home = "axel-protocol/"
164164
canonical_doc = "axel-protocol/README.adoc"
165-
source_hash = "sha256:326c47a6ca32531d4acff17aaf0313b7579a9d5749429f72f97e907af1fa8d33"
165+
source_hash = "sha256:020e11cbab41cc5cb86182bc6ba93b58ee6b9bf29237d172e735363eebc5f27c"
166166
route = "age-gating + explicit-content enforcement"
167167

168168
[[spec]]
@@ -180,7 +180,7 @@ name = "Consent-Aware HTTP"
180180
stream = "protocol"
181181
home = "consent-aware-http/"
182182
canonical_doc = "consent-aware-http/README.adoc"
183-
source_hash = "sha256:d5cee84e0bccc969cbc76cd17cbf18e6835750a5e664788a4a96f5b50f5fdb2a"
183+
source_hash = "sha256:a646ae072372fe62bf3fcffa80b1a196f1fe3b9df8e7be4fc5e54be49426b022"
184184
route = "consent headers / AI-usage boundaries for HTTP"
185185

186186
[[spec]]
@@ -225,7 +225,7 @@ name = "RSR — Rhodium Standard Repositories"
225225
stream = "governance"
226226
home = "rhodium-standard-repositories/"
227227
canonical_doc = "rhodium-standard-repositories/README.adoc"
228-
source_hash = "sha256:d196156cc4fdade946fab21b87ba4fa076106186bbf59c23fb21fb1cfd64e219"
228+
source_hash = "sha256:03252ce83c0361887c6a96530c8bba15c4c7f816c07d6d2ffbffd53250e3bf61"
229229
route = "the repository-compliance standard every repo is graded against"
230230

231231
[[spec]]

a2ml/READINESS.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@
6060
- Core schema stable since v1.0
6161
- Referenced by 6 language implementations (Rust, Elixir, Gleam, Haskell, Deno, Julia)
6262
- Deployed on 105+ repos as the canonical AI manifest format
63-
- IANA media type submission in progress (`application/vnd.a2ml+text`)
63+
- IANA media type submission in progress (`application/vnd.a2ml`)
6464

6565
**Known limitations:**
6666
- PLAYBOOK.a2ml schema at v0.9 (not yet stable)

a2ml/SPEC.adoc

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ modes and acquires meaning only when a profile selects it.
2525

2626
[cols="1,3"]
2727
|===
28-
| Media Type | `text/a2ml` (registration pending)
28+
| Media Type | `application/vnd.a2ml` (registration pending)
2929
| File Extension| `.a2ml`
3030
| Version | 1.1.0 (Stable)
3131
| Era | v1
@@ -685,7 +685,7 @@ evidence of *validation intent*, never of *granted capability*.
685685

686686
== 13. IANA Considerations
687687

688-
Proposed media type `text/a2ml`; file extension `.a2ml`; no magic number;
688+
Proposed media type `application/vnd.a2ml`; file extension `.a2ml`; no magic number;
689689
fragment identifier `#section-id`. See the separate IANA registration document.
690690

691691
== 14. Interoperability

a2ml/site/spec.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ The current normative specification is **A2ML v1.1.0** — Surface Grammar + Typ
2020
- **Syntax modules** (opt-in)
2121
- **Grammar appendix**
2222
- **Conformance + test vectors**
23-
- **IANA media type draft**`application/a2ml`
23+
- **IANA media type draft**`application/vnd.a2ml`
2424
- **Comparison matrix**
2525
- **Citation guide**
2626

0 commit comments

Comments
 (0)