What Is FAI with TofuPilot
First article inspection (FAI) is a detailed verification of the first production unit to confirm that the manufacturing process can produce parts that meet all design specifications. It's required by aerospace (AS9102), automotive (PPAP), and medical device standards. This guide covers what FAI involves, when it's required, and how to track FAI results with TofuPilot.
What FAI Verifies
FAI checks every characteristic on the drawing and specification, not just the critical ones. It's a full accounting of:
| What's Checked | Example |
|---|---|
| Dimensional characteristics | All dimensions on the drawing |
| Material certifications | Raw material CoC, RoHS compliance |
| Process records | Solder profile, torque records, adhesive cure |
| Functional test results | All measurements against specification |
| Visual and cosmetic | Surface finish, marking, label placement |
| Traceability | Serial numbers, lot codes, date codes |
FAI is not sampling. It's a complete inspection of one unit (or a set of units) against every requirement.
When FAI Is Required
| Trigger | Example |
|---|---|
| New product introduction | First production run of a new design |
| Design change | Engineering change order (ECO) affecting form, fit, or function |
| Process change | New supplier, new tooling, new factory location |
| Extended production break | No production for 2+ years (per AS9102) |
| Corrective action | After a nonconformance that affected product quality |
FAI Documentation (AS9102)
AS9102 defines three standard FAI report forms:
| Form | Content |
|---|---|
| Form 1: Part Number Accountability | Part number, name, revision, serial number, materials |
| Form 2: Product Accountability (Raw Material, Special Process, Functional Test) | Material certs, process records, test data |
| Form 3: Characteristic Accountability | Every dimension and characteristic with actual measured value |
Form 3 is the most labor-intensive. Every dimension on the drawing gets a balloon number, and the corresponding measured value goes in the FAI report.
Prerequisites
- Python 3.10+
- OpenHTF installed (
pip install openhtf) - TofuPilot Python SDK installed (
pip install tofupilot)
Step 1: Define FAI Test Phases
The functional test portion of FAI runs the same test procedure as production, but you record every measurement, not just pass/fail.
import openhtf as htf
from openhtf.util import units
@htf.measures(
htf.Measurement("output_voltage_V")
.in_range(minimum=4.9, maximum=5.1)
.with_units(units.VOLT),
htf.Measurement("ripple_voltage_mV")
.in_range(maximum=50)
.with_units(units.MILLIVOLT),
htf.Measurement("efficiency_percent")
.in_range(minimum=90)
.with_units(units.PERCENT),
htf.Measurement("leakage_current_uA")
.in_range(maximum=500)
.with_units(units.MICROAMPERE),
)
def phase_fai_electrical(test):
"""FAI Form 2: All electrical characteristics."""
test.measurements.output_voltage_V = 5.02
test.measurements.ripple_voltage_mV = 18.3
test.measurements.efficiency_percent = 93.7
test.measurements.leakage_current_uA = 65.0
@htf.measures(
htf.Measurement("firmware_version").equals("2.1.0"),
htf.Measurement("boot_time_ms")
.in_range(maximum=2000)
.with_units(units.MILLISECOND),
htf.Measurement("self_test").equals("PASS"),
)
def phase_fai_functional(test):
"""FAI Form 2: Functional characteristics."""
test.measurements.firmware_version = "2.1.0"
test.measurements.boot_time_ms = 1120
test.measurements.self_test = "PASS"Step 2: Log FAI Results to TofuPilot
The FAI test runs once on the first article. TofuPilot stores every measurement with its limit, unit, and result.
from tofupilot.openhtf import TofuPilot
test = htf.Test(
phase_fai_electrical,
phase_fai_functional,
)
with TofuPilot(test):
test.execute(test_start=lambda: input("Scan first article serial: "))Step 3: Generate the FAI Report
TofuPilot stores the complete test record for the first article. Open the unit's test history to get:
- All measurements with actual values against specification limits
- Pass/fail status for each characteristic
- Timestamps for audit trail
- Test reports exportable for AS9102 Form 2 documentation
This data feeds directly into the FAI report. Instead of transcribing measurements from a bench multimeter into a spreadsheet, the test data is already structured and auditable.
FAI vs Production Test
| Aspect | FAI | Production Test |
|---|---|---|
| Scope | Every characteristic on the drawing | Critical functional characteristics |
| Sample | First unit (or first from each cavity/tool) | Every unit |
| Documentation | Formal FAI report (AS9102 forms) | Internal test records |
| Frequency | Once per trigger event | Every unit, every run |
| Goal | Prove the process can make a conforming part | Verify each unit conforms |
FAI proves the process is capable. Production test proves each unit is conforming. Both are necessary. TofuPilot tracks both using the same infrastructure.