FAA Airworthiness Directive 2020-24-02 in Akoma Ntoso and LegalRuleML
The FAA final rule of November 20, 2020, published at 85 FR 74560, that set the conditions for returning the Boeing 737 MAX to service. It requires new flight control software, flight manual changes, new display software, a wiring change, a sensor test and a readiness flight on each airplane.
View the directiveThis is the second experiment in the archive, after the Wright Brothers’ contract. That one tested a private agreement. This one tests a certification document: public law, but written as technical instructions for airplanes. This page reports how Claude modeled it, what it had to add, and what went wrong. It covers one directive, so it’s a starting list and not a survey.
What was done
- The text: Claude built the markup by program from the Government Publishing Office’s plain-text version, without retyping it, and marked it up in Akoma Ntoso 2.0 (AKN 3.1).
- The amendment: The rule amends 14 CFR 39.13, so the directive sits inside
modandquotedStructure, with the removal of the old directive and the addition of the new one recorded inactiveModifications. - The rules: Claude wrote 25 LegalRuleML statements, 16 prescriptive and 9 constitutive, in an attachment, inside
<foreign>. Each points to theeIdof its paragraph. - The appearance: A stylesheet renders the XML after the Federal Register page, with its cover, headings and page numbers. The Register prints three columns. This is set in one, because columns don’t work across a scrolling page this long.
The XML validates against the Akoma Ntoso 2.0 schema, and all 253 eIds are unique. A word-by-word comparison with the source found no lost text. The LegalRuleML was not validated.
<act name="finalRule">
<meta>...</meta>
<coverPage>...</coverPage>
<preface>agency, docket, title</preface>
<preamble>summary, dates, 88 comments and the FAA's responses</preamble>
<body>
<part>...<section>...
<mod><quotedStructure>
<hcontainer name="airworthinessDirective">paragraphs (a) to (r)</hcontainer>
</quotedStructure></mod>
</section></part>
</body>
<conclusions>...</conclusions>
<attachments>the LegalRuleML, in foreign</attachments>
</act>
What fit without strain
| Feature | Markup |
|---|---|
| Federal Register cover | coverPage |
| Docket and directive numbers | docketNumber, docNumber |
| Publication | publication, with 85 FR 74560 |
| Page numbers | eop with number |
| Footnotes | authorialNote, 14 of them |
| Notes to paragraphs | noteSection |
| Paragraphs (a) to (r), with their levels | paragraph, subparagraph, point |
| Removing one directive and adding another | mod, quotedStructure, textualMod |
| List of subjects | classification, keyword |
| Cost table | table |
Amendment markup was the strongest part. The directive is a legal unit with its own identifiers, even though it’s quoted inside an amending instruction.
The extensions
| Feature | Generic markup | Why it was needed |
|---|---|---|
| Document type | act name="finalRule" | There’s no type for an agency rule. It isn’t an act, but act is the closest with a body and a preamble. |
| The directive | hcontainer name="airworthinessDirective" | There’s no specific element, unlike schedule. |
| Preamble sections | container name="summary", and five others | The standard FR headings have no elements. |
| Figures | block name="figure", inline name="graphic", inline name="editorial" | img needs an image. Nothing marks a figure that exists but isn’t reproduced. |
| Rights and duties | foreign with LegalRuleML | Akoma Ntoso records the text, not who must do what. |
Where Akoma Ntoso stretched
- The preamble does the heavy lifting. About 92 percent of the text is preamble, and it has four levels of headings. Hierarchical elements aren’t allowed there, and
containercan’t have a heading, so 112blockContainerelements carry the structure. It works, but the structure isn’t addressable the way sections are. - Comments and responses have no structure. There are 88 comment summaries and 81 FAA responses. They are told apart only by
class.questionandanswerexist, but they belong to the hierarchy and don’t fit a preamble. Commenters like BALPA aren’t marked up. - Operative text in images. See Issues.
- Incorporation by reference has no meaning in the markup. Paragraph (r) makes four Boeing bulletins legally part of the rule, and
refonly shows a citation. This is the same gap as the contract’s attached specification. - Identifiers with no home. The RIN, the product identifier and the amendment number have no elements, and
FRBRnumberholds only one value. - Citations.
refneeds a URI, and the CFR has no agreed Akoma Ntoso naming, so the 14 CFR links use an invented pattern. - Life cycle.
eventRefrecords publication. The rescission of the Emergency Order, which the preamble calls contemporaneous, has no natural place.
Repeating the contract’s findings
- Quantities: The costs and the 5.5-degree threshold still have no units, so they’re left as plain text.
- Dates: A date still has no type. Issued, filed, published and effective are told apart only by context.
signaturestill can’t carryas.
LegalRuleML
What it added
- Fit: Paragraphs (g) to (m) read almost as rules already, more so than the contract.
- Exceptions: “Unless already done” and the credit in paragraph (o) work well as constitutive statements.
Where it was awkward
- No stated bearer. “Comply with this AD” and “install” are imperatives with no subject. A
Beareris needed, so “operator” is an inference. The rule doesn’t say it, and itsAgenthas no matching Akoma Ntoso reference. - Deadlines are events. “Before further flight” isn’t a date, and “before any other flight” is deliberately different from it, as the preamble explains. Both are plain data here, not temporal parameters.
- “Only if.” Paragraph (i) needs a permission and a prohibition to say one thing.
- Negation. Conditions such as “not labeled RC” are separate predicates, so nothing links them to their opposites.
- Authority. The Manager’s authority to approve AMOCs is a power, and it’s modeled as a permission.
- Open references. “Later-approved software versions” refers to documents that didn’t exist when the rule was issued.
- Actions out of reach. Most obligations are “do the RC steps” of a bulletin that isn’t public, so the rules stop at the document boundary.
Issues
- The figures aren’t transcribed. This is the biggest gap. Ten figures, on 11 images, contain the crew procedures and MEL provisions, which are binding. The source’s text version omits them. Each has a placeholder with its page number. Transcribing safety procedures from page images risks errors, and an image can’t be searched, cited or modeled in rules. Paragraph (h) can only say that the procedures must be added, not what they are.
- Text source: The plain-text version loses italics and most of the print layout. Bullets were recovered from indentation.
- Printers’ marks: The
BILLING CODElines and the0markers before instructions were left out. - Rules are a reading: Claude wrote them, and no one with aviation or legal training has reviewed them. They don’t cover paragraphs (a), (d), (e), (q) or the detail of (h).
- No schema check on the rules: The LegalRuleML schema couldn’t be loaded in the environment Claude worked in. The structure follows the Wright contract’s, which was checked by hand.
- Placeholder vocabulary: The
adv:predicates are illustrative. - Links: Browsers don’t follow Akoma Ntoso
refandaelements in XML styled by CSS alone, so the document’s links work as data, not as clickable links.
Questions for an extension
- Should there be a document type for agency rules?
- Should the preamble allow addressable, numbered sections, or should
containerhave a heading? - Should there be a model for public comments and an agency’s responses?
- How should incorporation by reference be expressed, here and in contracts?
- How should a binding figure be marked when its content isn’t available as text?
- Should LegalRuleML have a defined binding to Akoma Ntoso, including for agents the text only implies?
Files
- faa-ad-2020-24-02.xml: the Akoma Ntoso document, with the rules
- faa-ad-2020-24-02.css: the stylesheet that renders it
- README.md: sources and credits