FAI Revalidation (manufacturing-quality/as9102/fai-revalidation)
Use when the task is scheduling a first article inspection (FAI)
revalidation per AS9102 practice: the revalidation due date comes
from the last FAI date plus the revalidation interval, a change can
pull the schedule earlier, and the re-validation re-verifies the
affected characteristics plus every key characteristic.
Domain quick reference
- Time-driven revalidation: the due date is the last FAI date plus
the revalidation interval; the default policy is annual (365
days).
- revalidation_status returns due_date, days_remaining, and status:
due on or past the due date, upcoming within the 60-day window
before it, current otherwise.
- Change-driven revalidation: a process, tooling, drawing-revision,
location, or supplier change triggers a revalidation; a
part-number or material change calls for a new FAI instead; no
change means time-driven only.
- next_revalidation_date takes the later of the time-driven due date
and the change-driven date (change date plus the interval); an
early change cannot pull the schedule earlier.
- revalidation_scope returns the characteristics to re-verify: the
affected characteristics plus every key characteristic,
deduplicated in order; key characteristics always stay in scope.
- AS9102 frames revalidation around the first article inspection
practice; the schedule model here is a practical summary, not
clause text.
Workflow
- Confirm the last FAI date and the revalidation interval; use
revalidation_due_date for the time-driven due date.
- Check the schedule with revalidation_status(last_fai_date, today);
act on status due or upcoming.
- When a change occurred, classify it with change_trigger_verdict:
revalidation-required, new-fai-required, or not-triggered.
- Combine the schedule with the change date using
next_revalidation_date for the single next due date.
- Scope the re-verification with revalidation_scope(affected,
key_characteristics); key characteristics always stay in scope.
- Record the due date and the scope in the revalidation plan.
Pitfalls
- Zero or negative intervals: interval_days must be positive;
revalidation_due_date raises ValueError otherwise.
- Treating a part number or material change as revalidation: those
call for a new FAI, not a revalidation (change_trigger_verdict
returns new-fai-required).
- Pulling the schedule earlier with an old change: a change date
before the last FAI date cannot move the due date; the later date
wins.
- Forgetting key characteristics: revalidation re-verifies the
affected characteristics plus every key characteristic, even when
the change list is empty.
- Non-date inputs: last_fai_date, today, and change_date must be
datetime.date instances; strings raise ValueError.
- Reporting days remaining from a string date: compute the status
with real date objects so the day arithmetic is exact.
Behavior contract (gate 3)
The revalidation logic is exercised by the gate 3 contract test:
scripts/test_fai_revalidation.py against
scripts/fai_revalidation_logic.py (stdlib unittest, offline). Run:
python3 scripts/test_fai_revalidation.py
Compliance
- Standards referenced, not reproduced: AS9102 revalidation practice
is summarized as a schedule and scope model, common aerospace
first article practice per standards-map.yaml.
- compliance: STANDARDS-REF, gated: false.
1---2name: fai-revalidation3description: Use when you must schedule a first article inspection (FAI) revalidation per AS9102 practice: compute the revalidation due date from the last FAI date and the revalidation interval, check whether a process, tooling, drawing revision, location, or supplier change triggers a revalidation, and scope the characteristics to re-verify. Produces the revalidation status, the next revalidation date, and the re-verification scope that gate FAI currency. Trigger: fai revalidation, revalidation due date, last fai date, annual interval, revalidation frequency, change driven revalidation, revalidation scope.4license: Apache-2.05---67# FAI Revalidation (manufacturing-quality/as9102/fai-revalidation)89Use when the task is scheduling a first article inspection (FAI)10revalidation per AS9102 practice: the revalidation due date comes11from the last FAI date plus the revalidation interval, a change can12pull the schedule earlier, and the re-validation re-verifies the13affected characteristics plus every key characteristic.1415## Domain quick reference1617- Time-driven revalidation: the due date is the last FAI date plus18 the revalidation interval; the default policy is annual (36519 days).20- revalidation_status returns due_date, days_remaining, and status:21 due on or past the due date, upcoming within the 60-day window22 before it, current otherwise.23- Change-driven revalidation: a process, tooling, drawing-revision,24 location, or supplier change triggers a revalidation; a25 part-number or material change calls for a new FAI instead; no26 change means time-driven only.27- next_revalidation_date takes the later of the time-driven due date28 and the change-driven date (change date plus the interval); an29 early change cannot pull the schedule earlier.30- revalidation_scope returns the characteristics to re-verify: the31 affected characteristics plus every key characteristic,32 deduplicated in order; key characteristics always stay in scope.33- AS9102 frames revalidation around the first article inspection34 practice; the schedule model here is a practical summary, not35 clause text.3637## Workflow38391. Confirm the last FAI date and the revalidation interval; use40 revalidation_due_date for the time-driven due date.412. Check the schedule with revalidation_status(last_fai_date, today);42 act on status due or upcoming.433. When a change occurred, classify it with change_trigger_verdict:44 revalidation-required, new-fai-required, or not-triggered.454. Combine the schedule with the change date using46 next_revalidation_date for the single next due date.475. Scope the re-verification with revalidation_scope(affected,48 key_characteristics); key characteristics always stay in scope.496. Record the due date and the scope in the revalidation plan.5051## Pitfalls5253- Zero or negative intervals: interval_days must be positive;54 revalidation_due_date raises ValueError otherwise.55- Treating a part number or material change as revalidation: those56 call for a new FAI, not a revalidation (change_trigger_verdict57 returns new-fai-required).58- Pulling the schedule earlier with an old change: a change date59 before the last FAI date cannot move the due date; the later date60 wins.61- Forgetting key characteristics: revalidation re-verifies the62 affected characteristics plus every key characteristic, even when63 the change list is empty.64- Non-date inputs: last_fai_date, today, and change_date must be65 datetime.date instances; strings raise ValueError.66- Reporting days remaining from a string date: compute the status67 with real date objects so the day arithmetic is exact.6869## Behavior contract (gate 3)7071The revalidation logic is exercised by the gate 3 contract test:72scripts/test_fai_revalidation.py against73scripts/fai_revalidation_logic.py (stdlib unittest, offline). Run:74python3 scripts/test_fai_revalidation.py7576## Compliance7778- Standards referenced, not reproduced: AS9102 revalidation practice79 is summarized as a schedule and scope model, common aerospace80 first article practice per standards-map.yaml.81- compliance: STANDARDS-REF, gated: false.