RotorLab logo RotorLabDocs

Public Reporting

Public Reporting at https://rotorlab.app/transparency publishes your program's flight activity from the records you already keep, on a public page at rotorlab.app/p/your-address. It exists for programs whose authorization comes with a public reporting commitment, and it replaces the hand-maintained spreadsheet that goes stale in four months.

Nothing is public until you publish it. Participation is off by default, switching it on publishes nothing by itself, and every reporting period is approved by hand by an organization administrator. Approved content is frozen exactly as it read at approval and does not change when your records change.

Requires the public-safety add-on

Public reporting is part of the Public Safety Operations add-on, and only an organization administrator can configure or publish it.

The board#

Before it is switched on, the page shows the three steps: switch it on, decide how it reads, approve a period. Nothing becomes public at any point before the third.

Once it is on, the page opens on where the portal stands: how many periods you have published and the date of the last one, how many flights and hours those published pages disclose, how many periods have closed and passed your delay, and how many periods are on record in total.

The disclosed figures are read from the frozen pages, not counted again from your records. A board that recounted them would drift away from the pages it is describing, and the frozen copy is what the public actually read.

Ready for your decision lists the periods that have closed and passed the delay you set, each with a button that previews it and, if you choose, approves it. It sits above the settings because approving a period is the only thing on this page waiting on a person.

In the periods list, each published period states what it disclosed and who approved it on what date, and each unpublished one states why it is not yet available: the period has not finished, or it is held by the delay you set.

Nothing on this page pushes you to publish more. An agency that publishes what it undertook to publish is not behind on anything, and RotorLab does not decide what your reporting obligations are.

Switching it on#

The participation card takes the Agency name, the Address (the slug after /p/ in the public URL), and What this page is: a required description of who you are and what a reader is looking at. A page with no explanation on it invites the question it exists to answer, so it cannot go public without one.

Switch on public reporting starts participation from today: only reporting periods from that day forward are listed, so flipping the switch does not disclose history nobody reviewed. Stop publishing makes the page stop answering, with a warning that anything already published has been cached and archived by others and cannot be recalled. If you later change the address, the old one keeps redirecting to the new page, so a citation in a council document does not become a dead link.

Configuring what is published#

The How it reads card sets the shape of the page:

  • Listing: Every period listed (a period you have not published says so, in the same words and weight as the rest) or Only periods I publish (the page states that it works this way, so a reader is not misled).
  • Detail: Totals only (totals and breakdowns, no row per flight; this satisfies most reporting obligations and removes the per-flight risk entirely) or A row per flight (redacted: a date, an area, a reason; never a pilot, never a precise position, never free text).
  • Reporting period: monthly, quarterly, or annual.
  • Publish no sooner than N days after the period ends (the embargo, default 14). Only closed periods past the embargo can be published; there is no live mode.
  • Time of day: date only, morning or afternoon, or to the hour. Never to the minute: a date, an exact time, an area, and a call type identify a person at an address together, even though each is harmless alone.
  • Name aircraft: whether each flight shows which aircraft flew it.
  • Contact line: where questions about the page go.

Public wording for your call types maps internal terminology to what the public sees. RotorLab's standard call types publish under their own names; anything else your crews typed (a dispatch code, free text) publishes as "other" until you assign public wording.

Two per-flight controls live on the flight record in the Pilot Logbook, under Public reporting: hold (the flight is counted in the totals but not itemized, for an active investigation) and out of scope (the flight is not reported at all). Each takes an optional one-line reason. The period's basis line states how many flights are counted but not listed.

Approving a period#

The Reporting periods board lists every period since participation started, each with one of four statuses: Published, Not yet published (still inside the period or the embargo), No flights in this period (derived from the records: a truth, not a hole), and Not published (a decision nobody made, or made against). An unpublished period takes an optional one-line note; one sentence turns a suspicious hole into a documented decision.

Preview shows a period exactly as the public would see it, redaction applied. You are approving that page, not a list of individual flights. Publishing asks who is approving and warns in plain words that it cannot be undone: once served, the page is cached, archived, and copied, and withdrawing it later does not withdraw those copies.

Approving renders the period, redacts it, freezes the result, and stores a SHA-256 hash of the content. The public route serves only that frozen copy; it has no code path to an unpublished or held flight at all, which is what lets the page say the figures have not been edited since publication and mean it.

What a reader sees#

The public page at /p/your-address carries the agency's name as the masthead, your description and contact line, and then:

  • The latest published period: flights, hours, night flights, and a "not itemized" count when flights are held; a breakdown of flights by reason; and counts of flights where imagery was retained, was not, or was not stated.
  • If you chose per-flight detail, a table of flights: date, time (at your chosen precision), reason, area, and minutes. The area is a rounded position, never an exact point; a flight with no position on record says "not recorded".
  • A basis statement saying what was counted and from where, including that RotorLab cannot know about flying that was never recorded, and, for published periods, who approved it, when, and the content hash.
  • All reporting periods: every period with its status, note, and headline figures, each stated plainly with no color or severity styling.

Download every period as CSV exports the complete period list with status, flights, hours, publication date, hash, and note for each. The export always carries every period regardless of the listing mode, so a researcher doing real work gets the whole picture.