Airmass

How it works · technical

Under the hood: records in, proof out.

Most trackers store a due date someone typed in. Airmass stores only your records, and works out every answer from scratch, from the regulations in force on the date you ask about. Here is how each layer does its part.

Data flow

Two paths meet in one kernel.

Regulations travel one path and are checked before they ship. Your records travel the other and never leave your devices. The kernel brings them together for one question date.

One rule as a circuit · § 91.413(a) transponder test · simplified

FACTS FROM YOUR RECORDS TRANSPONDER INSTALLEDTRUE TRANSPONDER USEDTRUE NEWEST TEST ENTRY12 Mar 2024 QUESTION DATE22 Oct 2026 TEST DONE BYRated repair station: TRUE AND APPLIES TRUE WITHIN 24 CALENDAR MONTHS? no entry = UNKNOWN FALSE AND § 91.413(a) FALSE RESULT MET NOT MET CAN'T TELL DOES NOT APPLY

Three-valued AND: any FALSE gives not met. Otherwise any UNKNOWN, such as a missing or unreadable record, gives can't tell. All TRUE gives met. If APPLIES is false, the rule does not apply.

Airlock writes every rule as a circuit like this, in Lean. Lean Sweep tests it against thousands of cases. Airtight runs it on your records.

Why Lean

What is Lean, and why write regulations in it?

Lean is a programming language that is also a proof checker. Mathematicians use it to check proofs, and engineering teams use it to prove software correct. If any step has an error, Lean will not compile. Rules that compile have been checked by the computer, every step.

Nothing is left vague

English rules leave gaps: which entry counts, what "within 24 calendar months" means at a month end. In Lean every condition must be written out, so each gap is found and decided once, with its source.

Proved for every case, not just tested

A test checks the cases someone thought of. A proof covers every possible set of records. For example: with no transponder test on record, the test can never show as met.

Changes can't spill over

When the FAA amends one paragraph, the build proves the change touched only that paragraph. An update can't quietly change an answer somewhere else.

One source for everything

The rule data the app reads and the plain-English reading you see are both generated from the same Lean file, so they can't disagree.

What Lean does not do: it does not decide what a regulation means. People make that call from the FAR text and FAA guidance, and record the reason. Lean makes sure that reading is applied exactly the same way every time.

InYour records and the FAA regulations
OutAn answer with its sources
AirmassThe app

Your entries, scans, equipment and meter readings go into one record store that only ever adds. Nothing is edited after it is signed; a correction is a new entry, so the history can always be read back as it was.For you: one place for every record, and logbooks you can print.

AirlockThe rules

Each regulation paragraph that applies to your aircraft is written as code in Lean, a programming language that checks mathematical proofs. The FAR text sits above its code. Every amendment back to 1997 is kept as a new edition with the date it took effect, with FAA interpretations and sources attached. Proofs check the structure, for example that no ELT on record can never count as a current ELT.For you: the rules as they were on any date, not a typed-in interval.

Lean SweepThe check

Before any rule ships, thousands of test cases run against it: boundary cases, random records, and cases whose answers were checked by hand against the FAR text. If one answer changes that should not, the rule does not ship. A change to one paragraph must prove it touched only that paragraph.For you: a rule change cannot quietly change an answer.

AirtightThe kernel

A small evaluation engine, locked and signed, decides every answer from the records and the rules in force on the question date. It is the only part that decides. It never changes without a signed release, and the same records always give the same answer.For you: an answer you can show a buyer, an inspector or the FAA.

RECORDS SHOW COMPLIANCERecords as of 22 Oct 2026 · AD search 22 Oct 2026 · tap for the rule, the entry and the source
Layer 1 · the app

Airmass

Everything Airmass knows about your aircraft is a record: setup, equipment installations and removals, meter readings, logbook entries, scans, signatures and owner determinations. Records are only ever added. Nothing stored is a status: there is no due-date table to go stale.

Frozen wording, appended corrections

When an entry is signed, its exact text is hashed and the signature covers that hash. The wording can never change after that. A mistake is fixed by a new correction record that points at the old one, so the history always reads back as it was.

Signatures

Every signer confirms with their own passkey: an owner with Face ID or Touch ID on their own iPad, iPhone or Mac, a visiting mechanic on their own iPhone or Android phone by scanning a code on the iPad, or with a security key. A key unique to that signer signs the exact wording. A drawn signature alone is not used, because it shows only appearance. The printed page shows the signer, the signer's certificate and a short verification code. Or sign the printed entry in ink and scan it back in. The design follows the FAA's electronic signature guidance in AC 120-78B: unique to the signer, clear intent, cannot be copied or altered, traceable.

From records to facts

Before the kernel sees anything, each record becomes typed facts, for example "transponder test, passed, 11 Sep 2024, by a repair station". Every fact keeps a pointer to the record and page it came from. That pointer is what lets every answer show its source.

The newest entry governs

For a recurring item, the newest entry of that kind by a person allowed to sign is the one that counts. Two entries on the same day that disagree give "can't tell", never a guess.

Layer 2 · the rules

Airlock

Each regulation section that applies to a Part 91 aircraft is one Lean file. Lean is a programming language and proof checker; a rule with any error will not compile. Every paragraph of the regulation sits above the code that encodes it, so a reader can check one against the other.

Airlock · 91_413.leansimplified
-- 14 CFR 91.413(a): ATC transponder tests and inspections
-- "No persons may use an ATC transponder ... unless, within the
--  preceding 24 calendar months, the ATC transponder has been
--  tested and inspected and found to comply with appendix F ..."
def r91_413a : Rule := recurring {
  applies   := installed .transponder ∧ uses .transponder
  entry     := .transponderTest
  window    := .calendarMonths 24
  signers   := authorizedBy "91.413(c)"
  supersede := .newestSameKind   -- same-day disagreement: can't tell
}

theorem no_test_never_met (r : Records) (d : Date)
    (h : r.entries .transponderTest = []) :
    eval r91_413a r d ≠ .met := by
  simp [eval, recurring, h]

A shared pattern library

Most rules are one of a dozen shapes: a recurring inspection or test, required equipment, who may sign, inoperative equipment allowed under conditions, a duty triggered by an event, a document that must be aboard. Each shape is written and proved once. A section then states only its own parameters, and any reading that differs from the pattern must be a named exception with its source.

Proofs

The build proves safety properties straight from the regulation text, for example that an aircraft with no transponder test on record can never show the test as met. When a paragraph is amended, the build proves the change touched only that paragraph.

Generated, never hand-edited

The rule pack the app reads, the plain-English reading, the block view and a change summary are all generated from the Lean file. Nothing is edited by hand, so nothing drifts out of step.

Layer 3 · the check

Lean Sweep

Proofs check a rule's structure. The sweep checks its meaning. Before any rule pack ships, it is run against thousands of cases:

  • Confirmed cases, whose answers were worked out by hand from the regulation text and FAA guidance.
  • Boundary cases: the day before and the day after a due date, the last hour of an hours window, a same-day conflict.
  • Random records, generated in bulk and compared between the Lean model and the shipping kernel.
  • Mutations: deliberately broken rules that the sweep must catch.

If any answer changes that should not, the pack does not ship. Each confirmed case lists the rulings it depends on, so when a ruling changes, the cases it affects are flagged.

2,696scenarios in one trial of four sections rebuilt from the pattern library
13,758extra random records in the same trial
0differences from the existing rules
Layer 4 · the kernel

Airtight

Airtight is a small evaluation engine. It is the only part of Airmass that decides an answer. It takes the facts, the rule packs for the editions in force, and a question date, and returns one of four results for every rule.

Kernel resultMeaningWhat you see
MetThe records prove the rule is met on the question date.Records show compliance
Not metThe records prove it is not met.Records show noncompliance, with the item named
Can't tellA needed record is missing or unreadable, or two entries on the same day disagree.Records incomplete, with the missing record named
Does not applyThe aircraft's certificate, equipment or limitations take it out of scope.Hidden from status; listed in the audit

Can't tell is never compliance

Missing information never turns into a pass. If the records cannot prove a rule is met, you see what is missing, by name.

Locked and signed

The kernel is locked. It changes only through a signed release, and random-record tests compare it against its Lean model so a property proved in Lean holds for what ships. The same records and the same date always give the same answer.

Rule history

What we knew and when

Every regulation paragraph keeps each edition with the date it took effect. Today the experimental rules reach back to 1 January 1997, and the rest are being extended to the same date. Each edition keeps the Federal Register notice that changed it and the FAA interpretations attached to it. The kernel picks the edition in force on the question date, so a 2019 entry is judged by 2019 rules.

Rules as they were

Every entry is checked against the regulations in force on its date. A 2019 entry is not judged by 2026 rules.

Records as they were

Ask what the records showed on any past date. Airmass uses only the entries that were on file that day.

Searches as they were

Every answer shows the date of your last AD search, so an AD published later never looks like something you missed.

Privacy by design

Your data

The kernel runs on your device. Your records are stored on your Mac and iPad and, if you choose, in your own private iCloud database. There is no Airmass account and no Airmass copy of your records.

The app looks up your N-number directly in the FAA's public registry and reads airworthiness directives from the Federal Register. Once a day, Airmass publishes the FAA's list of safety bulletins as a file the app downloads and matches on your device. Nothing about you or your aircraft is sent to us.

Airmass logo

Every record. Moving as one.

One record store for the airframe, engine, propeller and everything fitted to them.

Join the beta