Skip to content

Commit 9d5dd54

Browse files
hyperpolymathclaude
andcommitted
docs: draft IANA media type registration applications for A2ML and K9
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1 parent 7d53c3d commit 9d5dd54

2 files changed

Lines changed: 596 additions & 0 deletions

File tree

Lines changed: 234 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,234 @@
1+
<!-- SPDX-License-Identifier: PMPL-1.0-or-later -->
2+
# IANA Media Type Registration Application: application/vnd.a2ml
3+
4+
> Prepared for submission to IANA per RFC 6838 (Vendor Tree)
5+
> Submission URL: https://www.iana.org/form/media-types
6+
7+
---
8+
9+
## Applicant Information
10+
11+
| Field | Value |
12+
|-------|-------|
13+
| **Full Name** | Jonathan D.A. Jewell |
14+
| **Email** | j.d.a.jewell@open.ac.uk |
15+
16+
---
17+
18+
## Media Type Details
19+
20+
| Field | Value |
21+
|-------|-------|
22+
| **Top-Level Type** | application |
23+
| **Subtype** | vnd.a2ml |
24+
| **Tree** | Vendor (vnd.) |
25+
26+
---
27+
28+
## Technical Parameters
29+
30+
### Required Parameters
31+
32+
N/A
33+
34+
### Optional Parameters
35+
36+
- **charset**: If specified, MUST be "utf-8". SHOULD NOT be specified if the
37+
document contains opaque payloads with arbitrary binary content. A2ML
38+
documents are UTF-8 by default for textual content (RFC 3629).
39+
40+
### Encoding Considerations
41+
42+
**8-bit text** (with binary note)
43+
44+
A2ML documents are primarily UTF-8 text but MAY include opaque payload blocks
45+
(via the `@opaque` directive) containing arbitrary binary data.
46+
Implementations MUST preserve byte-for-byte fidelity of opaque blocks. Line
47+
endings are LF (U+000A) by convention; parsers MUST accept CR+LF
48+
(U+000D U+000A) as well.
49+
50+
---
51+
52+
## Security Considerations
53+
54+
A2ML is a document markup format similar to Markdown and AsciiDoc. It is not
55+
executable by itself and does not contain active content.
56+
57+
**Executable content:** A2ML MAY embed opaque payload blocks (using the
58+
`@opaque` directive) and code blocks (using fenced code blocks) that can
59+
contain code, scripts, or other executable content. Processors MUST treat
60+
opaque payloads and code blocks as untrusted data and MUST NOT execute
61+
embedded content by default. If an implementation offers execution or
62+
evaluation features (e.g., running code blocks in a REPL environment), it
63+
MUST:
64+
65+
- Operate in a sandboxed context with restricted privileges
66+
- Require explicit user consent before execution
67+
- Clearly indicate which content is being executed
68+
- Provide mechanisms to disable execution entirely
69+
70+
**Privacy and integrity:** A2ML documents may contain personally identifiable
71+
information (PII) in author metadata, abstracts, or content blocks.
72+
Implementations SHOULD provide mechanisms to redact or strip metadata when
73+
sharing documents. Opaque payloads may contain sensitive data and SHOULD be
74+
inspected before transmission.
75+
76+
**Cryptographic attestation:** A2ML documents support cryptographic
77+
attestation via Ed25519 signatures for opaque payloads and document structure.
78+
Implementations that verify signatures MUST check signature validity,
79+
timestamp authenticity, and certificate chain integrity.
80+
81+
**Compression:** A2ML does not define a compression layer. If documents are
82+
compressed for transport, standard HTTP content-encoding or transfer-encoding
83+
mechanisms should be used.
84+
85+
**External references:** A2ML link syntax (`[label](url)`) and `@ref()`
86+
directives may reference external resources. Implementations MUST NOT
87+
automatically fetch external resources without user consent.
88+
89+
---
90+
91+
## Interoperability Considerations
92+
93+
A2ML is designed for cross-platform interoperability with progressive
94+
strictness modes:
95+
96+
- **Lax mode**: Permissive parsing, warnings only
97+
- **Checked mode**: Structural validation required (unique IDs, valid
98+
references)
99+
- **Attested mode**: Cryptographic attestation required, enforced by
100+
dependent-type proofs in the Idris2 core
101+
102+
Character encoding is UTF-8 (RFC 3629). Opaque payloads are preserved
103+
byte-for-byte across parsing and serialisation. A2ML is renderer-agnostic
104+
and can be converted to HTML5, LaTeX/PDF, Markdown (CommonMark), Djot, or
105+
plain text.
106+
107+
Implementations SHOULD support all three strictness modes to ensure
108+
interoperability across different use cases (authoring vs. publication).
109+
110+
---
111+
112+
## Published Specification
113+
114+
- **Primary specification (v1.0.0, Stable):**
115+
https://github.com/hyperpolymath/a2ml/blob/main/SPEC-v1.0.adoc
116+
117+
- **Surface grammar specification (v0, Draft):**
118+
https://github.com/hyperpolymath/a2ml/blob/main/SPEC.adoc
119+
120+
- **Formal verification (Idris2 core):**
121+
https://github.com/hyperpolymath/a2ml/tree/main/src/A2ML
122+
123+
---
124+
125+
## Application Usage
126+
127+
A2ML is used by:
128+
129+
- A2ML compilers and validators (the `a2ml` CLI tool)
130+
- Static site generators that consume A2ML documents
131+
- Document management systems requiring formal structure guarantees
132+
- Academic publishing workflows for papers and specifications
133+
- Technical documentation with verifiable cross-references
134+
- Standards bodies requiring attested document integrity
135+
- AI agent manifest files (0-AI-MANIFEST.a2ml, AI.a2ml)
136+
137+
Reference implementation: https://github.com/hyperpolymath/a2ml
138+
139+
---
140+
141+
## Fragment Identifier Considerations
142+
143+
Fragment identifiers for A2ML documents refer to element IDs.
144+
145+
**Syntax:** `#<id>` where `<id>` is a valid A2ML identifier matching
146+
`[A-Za-z][A-Za-z0-9:_-]*`
147+
148+
**Examples:**
149+
- `#intro` -- references a section with id="intro"
150+
- `#fig:results` -- references a figure with id="fig:results"
151+
- `#tab:data` -- references a table with id="tab:data"
152+
153+
**Resolution:** Fragment MUST match an element with the specified ID. If no
154+
match, the user agent SHOULD ignore the fragment (no error). In attested
155+
mode, A2ML enforces unique IDs via dependent-type proofs. In checked mode,
156+
duplicate IDs are validation errors. In lax mode, duplicate IDs generate
157+
warnings.
158+
159+
---
160+
161+
## Restrictions on Usage
162+
163+
None.
164+
165+
---
166+
167+
## Provisional Registration
168+
169+
**No.** (Vendor-tree registration; provisional applies only to standards-tree.)
170+
171+
---
172+
173+
## Additional Information
174+
175+
| Field | Value |
176+
|-------|-------|
177+
| **Deprecated alias names** | None |
178+
| **Magic number(s)** | None (text-based format; identified by file extension or content detection of A2ML-specific directives such as `@abstract:`, `@refs:`, `@opaque:`) |
179+
| **File extension(s)** | `.a2ml` |
180+
| **Macintosh file type code(s)** | None |
181+
| **Object Identifier(s) / OID(s)** | None |
182+
| **Intended usage** | COMMON |
183+
184+
### Other Comments
185+
186+
A2ML (Attested Markup Language) is a lightweight markup language that compiles
187+
to a typed, verifiable core with formal proof obligations. It enables
188+
progressive strictness: from permissive authoring to formally verified
189+
structural invariants enforced by dependent types in Idris2.
190+
191+
The format is designed for long-term document preservation with cryptographic
192+
attestation and byte-for-byte opaque payload fidelity.
193+
194+
---
195+
196+
## Contact Information
197+
198+
| Field | Value |
199+
|-------|-------|
200+
| **Contact Name** | Jonathan D.A. Jewell |
201+
| **Contact Email** | j.d.a.jewell@open.ac.uk |
202+
| **Affiliation** | The Open University |
203+
| **Author/Change Controller** | Jonathan D.A. Jewell, The Open University |
204+
205+
---
206+
207+
## References
208+
209+
1. RFC 6838 -- Media Type Specifications and Registration Procedures
210+
https://www.rfc-editor.org/rfc/rfc6838.html
211+
212+
2. A2ML Specification (v1.0.0, Stable)
213+
https://github.com/hyperpolymath/a2ml/blob/main/SPEC-v1.0.adoc
214+
215+
3. A2ML Idris2 Core Implementation
216+
https://github.com/hyperpolymath/a2ml/tree/main/src/A2ML
217+
218+
4. IANA Media Type Registration Form
219+
https://www.iana.org/form/media-types
220+
221+
---
222+
223+
## Submission Checklist
224+
225+
- [ ] Review all fields for accuracy
226+
- [ ] Verify published specification links are accessible
227+
- [ ] Submit via IANA web form at https://www.iana.org/form/media-types
228+
- [ ] Monitor IANA email for review feedback
229+
- [ ] Update specification with assigned media type upon approval
230+
231+
---
232+
233+
*Prepared: 2026-03-16*
234+
*Status: Draft -- ready for submission review*

0 commit comments

Comments
 (0)