AS9100 FOD Control (manufacturing-quality/as9100/fod-control)
Use when the task is building or auditing a foreign object debris (FOD)
prevention program for an aerospace production area: classifying the FOD
zone from the part criticality and the debris-generation exposure,
computing the FOD risk score, deriving the sweep interval and the
tool-control and housekeeping controls for the zone, reconciling the
issued tool count against the returned tools, and scoring the program
against the required control set for the pass or fail verdict. This leaf
implements the zone model and audit logic in pure Python, stdlib only.
It pairs with manufacturing-quality/as9100/counterfeit-prevention, the
other program-level scoring leaf in the pack, and with
manufacturing-quality/as9100/risk-management, whose FMEA risk priority
number scoring is a different scale from the FOD risk score.
Domain quick reference
- FOD risk score: score = 3 * part_criticality + 2 * debris_exposure +
2 * open_cavity_exposure. part_criticality is 1-3 (3 flight-control or
propulsion critical, 2 structural, 1 non-flight); debris_exposure 1-3
(3 machining or cutting, 2 assembly with fasteners and rework,
1 inspection or bench work); open_cavity_exposure 0-2 (2 open fuel
tank or engine inlet cavity, 1 open assembly, 0 enclosed).
- Zone classes (program policy input): score >= 14 is zone A, score
= 10 is zone B, below 10 is zone C. Zone A areas hold critical
hardware and get the strictest control set.
- Sweep cadence (example policy input, user-definable): zone A every
8 h, zone B every 40 h, zone C every 160 h.
- Control sets (example policy input): zone A needs tool-control,
count-reconcile, sweep-log, tethering, fod-mats and training; zone B
needs tool-control, count-reconcile, sweep-log and fod-mats; zone C
needs tool-control and sweep-log.
- Tool reconciliation: every issued tool must come back; each issued
tool whose returned quantity falls short of the issued quantity is
reported with its shortfall. Extra returned tools that were never
issued are ignored.
- Audit verdict: fod-pass requires control completeness 1.0 AND a
reconciled tool count; otherwise fod-fail. Findings list each missing
required control plus missing-tool when the count is not reconciled.
- AS9100 frames the production quality context; FOD prevention is a
production-environment program control, distinct from parts-provenance
counterfeit controls, operational-risk RPN scoring, and audit clause
scoping. The zone cuts, cadence and control sets above are program
policy values a site defines, not AS9100 clause text.
Workflow
- Collect the program inputs: part_criticality, debris_exposure and
open_cavity_exposure for the work area (risk_score).
- Compute the score and classify the zone: risk_score then zone_class,
and read the sweep cadence for the zone with sweep_interval_h.
- Load the zone control set with required_controls.
- Reconcile the tool count with reconcile_tools on the issued and
returned tool dicts; read off the missing shortfalls.
- Run program_audit with the inputs, the tool dicts and the
controls_present list to get completeness, findings and the verdict.
- Close the gaps named in the findings (add the missing control, find
the missing tool) and re-audit until fod-pass; log the sweep at the
required cadence.
- Confirm the deterministic checks with the contract test
scripts/test_fod_control.py.
Worked example
Engine module assembly line: criticality 3, debris exposure 3 (machining
adjacent to the line), open cavity exposure 2 (engine inlet open).
- Score: 33 + 23 + 2*2 = 9 + 6 + 4 = 19, zone A, sweep interval 8 h,
required set the six-item zone A control list.
- Tool reconciliation: issued {"torque-wrench-1": 1, "drill-7": 2},
returned {"torque-wrench-1": 1} gives missing {"drill-7": 2} and
reconciled False.
- Audit with controls_present ["tool-control", "count-reconcile",
"sweep-log", "fod-mats", "training"] (tethering absent): completeness
5/6 = 0.8333, findings ["tethering", "missing-tool"], verdict fod-fail.
- Clean case: all six controls present and both tools returned gives
completeness 1.0, findings [] and verdict fod-pass.
- Zone B case: criticality 2, debris 2, open cavity 1 gives score
6 + 4 + 2 = 12, zone B, the four-item control set, sweep 40 h.
- Zone C case: 1/1/0 gives score 3 + 2 + 0 = 5, zone C, the two-item
control set, sweep 160 h.
Verification
- Confirm risk_score(3, 3, 2) returns 19 and program_audit on the
worked example returns zone A, sweep 8 h, completeness 0.8333,
findings ["tethering", "missing-tool"] and verdict fod-fail.
- Confirm the zone boundaries: score 14 is A, 13 is B, 10 is B, 9 is C.
- Confirm reconcile_tools on the exact, partial (shortfall as the
missing value) and extra-return cases.
- Confirm every out-of-band criticality, debris exposure and open cavity
exposure, every negative tool quantity, and every unknown control name
raises ValueError.
- Run the contract test offline: python3
scripts/test_fod_control.py (35 tests, deterministic).
Related leaves
- manufacturing-quality/as9100/counterfeit-prevention: the other
program-level scoring leaf in the pack, for parts provenance rather
than production-environment debris.
- manufacturing-quality/as9100/risk-management: operational risk RPN
scoring, a different scale from the FOD risk score.
- manufacturing-quality/as9100/quality: audit scoping across the AS9100
quality management system, of which the FOD program is one control.
Pitfalls
- Treating the zone cuts, sweep cadence and control sets as fixed
standard text: they are example program policy values a site defines
(score >= 14 zone A, >= 10 zone B, sweeps 8/40/160 h), so an audit
against them scores the site's declared policy, not AS9100 itself.
- Passing a fod-pass on completeness alone: the verdict requires
completeness 1.0 AND a reconciled tool count, so a complete control
set with one missing tool still returns fod-fail with a
missing-tool finding.
- Reconciling tool counts in aggregate: each issued tool is tracked
individually, so a shortfall is reported per tool with its missing
quantity - and extra returned tools that were never issued are
ignored rather than credited against a different tool's shortfall.
- Scoring the wrong scale: the FOD risk score (3 * part_criticality +
2 * debris_exposure + 2 * open_cavity_exposure) is not the FMEA RPN
of the risk-management leaf nor the provenance scoring of
counterfeit-prevention; mixing scales corrupts the zone and the
verdict.
- Leaving findings open: the workflow closes the gaps named in the
findings (add the missing control, find the missing tool) and
re-audits until fod-pass, and the sweep must still be logged at the
required cadence.
- Feeding out-of-band inputs: criticality, debris exposure or open
cavity exposure outside 1-3/1-3/0-2, negative tool quantities and
unknown control names raise ValueError - a plausible-looking audit
dict with a typo'd control name is rejected, not silently scored.
Behavior contract (gate 3)
Run the deterministic contract test (stdlib unittest, offline):
python3 scripts/test_fod_control.py
The test covers the worked-example contract (score 19, zone A, sweep
8 h, missing drill-7 shortfall, completeness 5/6 = 0.8333, findings
["tethering", "missing-tool"], verdict fod-fail), the clean fod-pass
case, the zone B and C scores and boundaries (14, 13, 10, 9) with their
required control sets and sweep intervals, the tool reconciliation
exact, partial, extra-return and over-return cases, audit completeness
values and findings contents, and ValueError rejection of non-physical
inputs and unknown control names.
Compliance
- Standards referenced, not reproduced: AS9100 is proprietary
(IAQG/SAE); the zone cuts, sweep cadence and control sets above are
documented example policy values, not AS9100 clause text, summary-only
per standards-map.yaml.
- compliance: STANDARDS-REF, gated: false.
1---2name: fod-control3description: Use when you must audit a foreign object debris (FOD) prevention program for aerospace production: classify the FOD zone from the part criticality and debris exposure, compute the FOD risk score, derive the FOD sweep interval and the tool-control and housekeeping controls for the zone, reconcile the issued tool count against the returned tools, and score the program against the required control set for the audit verdict with findings. Produces the zone class, the risk score, the sweep interval, the tool-count reconciliation result, the control completeness, and the fod-pass or fod-fail verdict that gates the FOD prevention assessment. Trigger: FOD prevention, foreign object debris, FOD zone classification, FOD risk score, FOD sweep interval, tool count reconciliation, FOD audit.4license: Apache-2.05---67# AS9100 FOD Control (manufacturing-quality/as9100/fod-control)89Use when the task is building or auditing a foreign object debris (FOD)10prevention program for an aerospace production area: classifying the FOD11zone from the part criticality and the debris-generation exposure,12computing the FOD risk score, deriving the sweep interval and the13tool-control and housekeeping controls for the zone, reconciling the14issued tool count against the returned tools, and scoring the program15against the required control set for the pass or fail verdict. This leaf16implements the zone model and audit logic in pure Python, stdlib only.17It pairs with manufacturing-quality/as9100/counterfeit-prevention, the18other program-level scoring leaf in the pack, and with19manufacturing-quality/as9100/risk-management, whose FMEA risk priority20number scoring is a different scale from the FOD risk score.2122## Domain quick reference2324- FOD risk score: score = 3 * part_criticality + 2 * debris_exposure +25 2 * open_cavity_exposure. part_criticality is 1-3 (3 flight-control or26 propulsion critical, 2 structural, 1 non-flight); debris_exposure 1-327 (3 machining or cutting, 2 assembly with fasteners and rework,28 1 inspection or bench work); open_cavity_exposure 0-2 (2 open fuel29 tank or engine inlet cavity, 1 open assembly, 0 enclosed).30- Zone classes (program policy input): score >= 14 is zone A, score31 >= 10 is zone B, below 10 is zone C. Zone A areas hold critical32 hardware and get the strictest control set.33- Sweep cadence (example policy input, user-definable): zone A every34 8 h, zone B every 40 h, zone C every 160 h.35- Control sets (example policy input): zone A needs tool-control,36 count-reconcile, sweep-log, tethering, fod-mats and training; zone B37 needs tool-control, count-reconcile, sweep-log and fod-mats; zone C38 needs tool-control and sweep-log.39- Tool reconciliation: every issued tool must come back; each issued40 tool whose returned quantity falls short of the issued quantity is41 reported with its shortfall. Extra returned tools that were never42 issued are ignored.43- Audit verdict: fod-pass requires control completeness 1.0 AND a44 reconciled tool count; otherwise fod-fail. Findings list each missing45 required control plus missing-tool when the count is not reconciled.46- AS9100 frames the production quality context; FOD prevention is a47 production-environment program control, distinct from parts-provenance48 counterfeit controls, operational-risk RPN scoring, and audit clause49 scoping. The zone cuts, cadence and control sets above are program50 policy values a site defines, not AS9100 clause text.5152## Workflow53541. Collect the program inputs: part_criticality, debris_exposure and55 open_cavity_exposure for the work area (risk_score).562. Compute the score and classify the zone: risk_score then zone_class,57 and read the sweep cadence for the zone with sweep_interval_h.583. Load the zone control set with required_controls.594. Reconcile the tool count with reconcile_tools on the issued and60 returned tool dicts; read off the missing shortfalls.615. Run program_audit with the inputs, the tool dicts and the62 controls_present list to get completeness, findings and the verdict.636. Close the gaps named in the findings (add the missing control, find64 the missing tool) and re-audit until fod-pass; log the sweep at the65 required cadence.667. Confirm the deterministic checks with the contract test67 scripts/test_fod_control.py.6869## Worked example7071Engine module assembly line: criticality 3, debris exposure 3 (machining72adjacent to the line), open cavity exposure 2 (engine inlet open).7374- Score: 3*3 + 2*3 + 2*2 = 9 + 6 + 4 = 19, zone A, sweep interval 8 h,75 required set the six-item zone A control list.76- Tool reconciliation: issued {"torque-wrench-1": 1, "drill-7": 2},77 returned {"torque-wrench-1": 1} gives missing {"drill-7": 2} and78 reconciled False.79- Audit with controls_present ["tool-control", "count-reconcile",80 "sweep-log", "fod-mats", "training"] (tethering absent): completeness81 5/6 = 0.8333, findings ["tethering", "missing-tool"], verdict fod-fail.82- Clean case: all six controls present and both tools returned gives83 completeness 1.0, findings [] and verdict fod-pass.84- Zone B case: criticality 2, debris 2, open cavity 1 gives score85 6 + 4 + 2 = 12, zone B, the four-item control set, sweep 40 h.86- Zone C case: 1/1/0 gives score 3 + 2 + 0 = 5, zone C, the two-item87 control set, sweep 160 h.8889## Verification9091- Confirm risk_score(3, 3, 2) returns 19 and program_audit on the92 worked example returns zone A, sweep 8 h, completeness 0.8333,93 findings ["tethering", "missing-tool"] and verdict fod-fail.94- Confirm the zone boundaries: score 14 is A, 13 is B, 10 is B, 9 is C.95- Confirm reconcile_tools on the exact, partial (shortfall as the96 missing value) and extra-return cases.97- Confirm every out-of-band criticality, debris exposure and open cavity98 exposure, every negative tool quantity, and every unknown control name99 raises ValueError.100- Run the contract test offline: python3101 scripts/test_fod_control.py (35 tests, deterministic).102103## Related leaves104105- manufacturing-quality/as9100/counterfeit-prevention: the other106 program-level scoring leaf in the pack, for parts provenance rather107 than production-environment debris.108- manufacturing-quality/as9100/risk-management: operational risk RPN109 scoring, a different scale from the FOD risk score.110- manufacturing-quality/as9100/quality: audit scoping across the AS9100111 quality management system, of which the FOD program is one control.112113## Pitfalls114115- Treating the zone cuts, sweep cadence and control sets as fixed116 standard text: they are example program policy values a site defines117 (score >= 14 zone A, >= 10 zone B, sweeps 8/40/160 h), so an audit118 against them scores the site's declared policy, not AS9100 itself.119- Passing a fod-pass on completeness alone: the verdict requires120 completeness 1.0 AND a reconciled tool count, so a complete control121 set with one missing tool still returns fod-fail with a122 missing-tool finding.123- Reconciling tool counts in aggregate: each issued tool is tracked124 individually, so a shortfall is reported per tool with its missing125 quantity - and extra returned tools that were never issued are126 ignored rather than credited against a different tool's shortfall.127- Scoring the wrong scale: the FOD risk score (3 * part_criticality +128 2 * debris_exposure + 2 * open_cavity_exposure) is not the FMEA RPN129 of the risk-management leaf nor the provenance scoring of130 counterfeit-prevention; mixing scales corrupts the zone and the131 verdict.132- Leaving findings open: the workflow closes the gaps named in the133 findings (add the missing control, find the missing tool) and134 re-audits until fod-pass, and the sweep must still be logged at the135 required cadence.136- Feeding out-of-band inputs: criticality, debris exposure or open137 cavity exposure outside 1-3/1-3/0-2, negative tool quantities and138 unknown control names raise ValueError - a plausible-looking audit139 dict with a typo'd control name is rejected, not silently scored.140141## Behavior contract (gate 3)142143Run the deterministic contract test (stdlib unittest, offline):144145 python3 scripts/test_fod_control.py146147The test covers the worked-example contract (score 19, zone A, sweep1488 h, missing drill-7 shortfall, completeness 5/6 = 0.8333, findings149["tethering", "missing-tool"], verdict fod-fail), the clean fod-pass150case, the zone B and C scores and boundaries (14, 13, 10, 9) with their151required control sets and sweep intervals, the tool reconciliation152exact, partial, extra-return and over-return cases, audit completeness153values and findings contents, and ValueError rejection of non-physical154inputs and unknown control names.155156## Compliance157158- Standards referenced, not reproduced: AS9100 is proprietary159 (IAQG/SAE); the zone cuts, sweep cadence and control sets above are160 documented example policy values, not AS9100 clause text, summary-only161 per standards-map.yaml.162- compliance: STANDARDS-REF, gated: false.