Preflight
Launch-readiness board: what still blocks putting this site into production, reported as two numbers that are never averaged.
User goal
Answer one question before go-live: is anything still blocking production?
- Tier
- Pro+ (or Stripe add-on)
- Nav label
- Preflight
- Route
- /projects/{project}/preflight
- Gates
- preflight-addon preflight-addon
Prerequisites
- preflight-addon Pennant flag active for org
- At least one completed site architecture crawl (most checks read it)
- Optionally a completed security scan and performance measurement
QA focus
- Board shows TWO numbers and never a combined percentage
- A project with no crawl shows Pending rows, never Pass
- Manual attestations sit on the board and stay out of the passing ratio
- Exports carry no email, IP, path, token, or display name
Overview
Preflight is a launch-readiness gate. It runs a registry of independent checks against the data the project already holds and reports what still blocks going to production.
The two numbers
- Unresolved blockers — checks at blocker severity that failed, or that could not run at all
- Automated checks passing — passed / automatable
They are deliberately never averaged into one score. A single "87% ready" figure hides a failing consent gate behind a passing favicon, and that is the number people quote in meetings.
What it is not
- Not a fixer. No check ever writes site configuration.
- Not a crawler. A run evaluates data you already have; it never starts a crawl, so it costs no credits and takes seconds. "Refresh site data" is a separate, explicit action.
- Not a secrets viewer. It reports whether a credential is present, never its value.
Statuses worth understanding
- Pending is not Pass — it means the underlying data has not been collected yet.
- Error is not Fail — Fail says the site is wrong; Error says the check could not establish anything.
- A stale Pass is downgraded to a Warning with its age. A stale Fail stays a Fail.
- Manual rows are requirements no crawler can verify. They sit on the board until someone signs them off, and expire after 90 days.
Common issues & false alarms
- Everything reads Pending — the project has no completed architecture crawl yet; run one, then re-run Preflight.
- A row reads Warning with "Stale" — the underlying data is older than the configured staleness window (default 7 days).
- A check is permanently red but not applicable — disable it in Preflight settings; disabled checks leave the passing denominator too.
- Staging-hostname and expected-tag-ID checks read "Not configured" until those settings are filled in. That is deliberate: an empty setting is never a pass.
Interactive guide
Step of
All steps (reference)
-
Step 1. Open the readiness board
Two headline numbers, then every unresolved check grouped by category.
What to do: Navigate to preflight.index for a project
Where: preflight.index
Expected (pass)
- Unresolved blockers and the passing ratio are both shown
- No percentage appears anywhere on the page
- A state card is shown when no run exists yet
-
Step 2. Run Preflight
Evaluates the registry against existing project data. Seconds, no credits.
What to do: Press Run Preflight
Expected (pass)
- A run is recorded and the board fills in
- No crawl or scan job is dispatched
-
Step 3. Read an unresolved row
Each row carries a status label, the check id, a one-line summary, evidence, and remediation.
Expected (pass)
- Fail and Error are distinguishable by their label, not only by colour
- Rows whose data source has not run read as Pending