Lesson 103: Post-Inquiry Corrective Action Closure Row - CAPA Linkage to Lesson 96 Verification and Lesson 102 Inquiry Index
Direct answer: A post-inquiry corrective action closure row is the single append-only CAPA record that binds a Lesson 102 inquiry_response_id to concrete remediation—with an owner, due utc, measurable acceptance checks, and proof rows in Lesson 96 (verification_packet_id) or explicitly linked follow-on verification—ending in capa_closure_evidence_hash so inquiries cannot stall in “we answered the letter” limbo.

What this lesson solves
Inquiries create moral debt. CAPA rows turn promises into inventory with receipts.
Prerequisites: At least one Lesson 102 index row for the inquiry and clarity on whether remediation needs new Lesson 94 holds or only tooling fixes. Expected time: about eighty minutes including a tabletop on a “process improvement” finding.
What you will build
lesson78_post_inquiry_corrective_action_closure_policy.md(contract below)lesson78_post_inquiry_corrective_action_closure.csv(one row per CAPA, not per email thread)- A closure checklist tied to your ticket tool’s resolved state and hash export
Step 1 - Define closure gate classes
| gate | fail signal | posture |
|---|---|---|
| C1 – Orphan inquiry | inquiry_response_id_ref missing or wrong quarter |
block closure |
| C2 – Unverified fix | acceptance requires live hash proof but no Lesson 96 row | block |
| C3 – Owner drift | owner_id changed without delegation row |
fail audit |
| C4 – Open sibling CAPA | duplicate finding not merged | merge or disclose |
| C5 – Disclosure without engineering | fix ships without ticket link | block |
Step 2 - Author lesson78_post_inquiry_corrective_action_closure_policy.md
Minimum sections:
- Purpose – convert inquiry outcomes into tracked remediation with verification discipline.
- Eligibility – every material finding from Lesson 102 gets one CAPA; cosmetic typos get a waiver id instead.
- Acceptance tests – must cite observable signals: hash match, metric threshold, or policy doc version bump under Lesson 99.
- Linkage –
verification_packet_id_refwhen rollback/telemetry proof is relevant;kill_switch_event_id_refif new holds were part of the fix. - Escalation – if due date slips twice, auto-notify audit chair and freeze non-critical Lesson 95 overrides for that product line.
- Retention – align to Lesson 97 archive family; minimum match regulator retention if stricter.
Step 3 - Author lesson78_post_inquiry_corrective_action_closure.csv
| column | purpose |
|---|---|
capa_id |
stable id |
inquiry_response_id_ref |
Lesson 102 |
finding_summary |
one line |
owner_id |
human |
due_at_utc |
deadline |
acceptance_criteria |
short text |
verification_packet_id_ref |
Lesson 96 optional |
capa_status |
open / closed_verified / waived |
capa_closure_evidence_hash |
sha256 over closure bundle |
Step 4 - Close the CAPA (35 minutes)
- Map each Lesson 102 question that implied work to one
capa_id; split if scopes differ. - Execute remediation; capture before/after hashes or config snapshots.
- Attach Lesson 96 verification row if player-visible copy or telemetry changed.
- Review with legal if the inquiry touched representations.
- Sign
capa_closure_evidence_hashwith owner + governance delegate. - Reply to regulator/platform with pointer to closure PDF, not raw logs.
Step 5 - Tabletop - “training issue only”
Finding says “staff need training.” Outcome: C5—still open a CAPA with completion metric (e.g., signed attestations count), not a vague workshop.
Pro tips
- Pair metrics – tie CAPA to a dashboard tile executives already trust.
- Dual product – duplicate CAPA rows per
product_codewhen Lesson 101 applies. - Freeze discipline – if fix waits on Lesson 92, cite scheduled dry-run id in
acceptance_criteria.
Troubleshooting
| symptom | likely cause | fix |
|---|---|---|
| Cannot verify | fix behind feature flag | add flag state to evidence |
| Owner left company | no delegation | transfer row with signed note |
| Duplicate CAPAs | two teams fixing same bug | merge with supersede pointer |
Common mistakes
- Marking closed when only responded to the inquiry email.
- Skipping Lesson 96 when rollback language changed.
- Letting CAPA live only in legal tools without CSV export for Lesson 97 next quarter.
FAQ
What if the inquiry is withdrawn?
Log capa_status=waived with waiver_id and legal note; still keep the row for lineage.
Do we need a new Lesson 97 attestation?
Not automatically—append closure PDF path to next quarterly zip’s manifest if material.
Can CAPA close before Lesson 100 fiscal closure?
Yes; fiscal_closure_id_ref is optional unless finding spans year-end.
Lesson recap
A closed inquiry without a CAPA hash is fan mail, not compliance.
Next lesson teaser
Next: Lesson 104: Annual Escalation Governance Tabletop Red-Team Drill runs staged scenarios against Lesson 94 and Lesson 95 with T1–T4 scorecards, drill_evidence_hash, and staging-only DRILL:: trains.
Related learning
- Lesson 102: Inquiry Response Packet
- Lesson 96: Rollback Verification
- How to Score Forecast Calibration Drift Before Release Gates for Live-Ops Teams (2026)
Treat CAPA as inventory, not intent.