Batch pass rate is high, yet CAPA recurrence keeps growing
Question
Our batch pass rate looks great and release lead times are mostly on plan. But CAPAs recur on the same lines, deviations bunch at month-end, a few steps show yield swings, and an environmental alert cluster forced re-cleans. Incoming lots from one supplier passed COA yet drove more rework. How can quality feel fragile when pass rate is high?
Answer ✅
Headline pass rates can mask process stability erosion. If deviations close late, CAPAs repeat, micro-variation creeps into critical steps, or supplier lots barely clear specs, you can “pass QA” while reliability slips. SSM-Audit adds a stability band beside the KPIs you already track so you see whether production is calm and repeatable or good-on-paper but luck-dependent.
What the bands would have shown 📊
• CAPA recurrence stability sliding A+ -> A0 (same root themes resurface)
• Deviation closure timeliness degrading to A- (end-of-month rush clears)
• Step-yield stability weakening A0 -> A- (upstream titer or blend variance)
• Environmental control stability tilting A0 -> A- (alert clusters by room/shift)
• Supplier lot quality stability dipping A0 -> A- (COA pass, more in-process adjustments)
• Change-control discipline softening A+ -> A0 (temporary fixes linger; documentation drifts)
What to do now 🛠️
- Band the quality loop: deviations -> CAPA -> change control -> step yield -> environment -> supplier lots; review weekly by site and line.
- Stop the repeats: when CAPA band < A0, require effectiveness checks at 30/60/90 days; close the loop before new lots start.
- De-spike deviations: if closure band < A0, cap EOM batching; set WIP limits and daily huddles for open records.
- Stabilize steps, not just totals: when step-yield band < A0, tighten setpoints and add canary samples on the weakest unit ops.
- Harden environment: if environment band < A0, re-qualify rooms, shift-cleaning cadence, and swap high-variance shifts.
- Raise the supplier floor: when supplier band < A0, tighten incoming AQL, add hold/release by risk score, and trigger requalification.
How SSM-Audit helps (practicalities) 🌟
• No additional infrastructure: runs beside MES/LIMS, QA/QMS, and supplier COA data.
• Numbers unchanged: pass rates, yields, and release times stay the same; stability is a read-only overlay.
• Easy to use: spreadsheet/BI friendly; one lightweight weekly cross-functional ritual.
• Universal language: A++ / A+ / A0 / A- / A– aligns manufacturing, QA, QC, and supply fast.
CLI 💻 — try our mini Calculator to identify the drift
(Mini CLI Download Page)
Feed your CSVs and see bands and drift at a glance (numbers unchanged).
# CAPA recurrence stability (themes repeating within N days)
ssm_audit_mini_calc pharma.csv --kpi "CAPA Recurrence Stability" \
--out bands_capa.csv --plot_kpi "CAPA Recurrence Stability" --build_id ph
# Deviation closure timeliness (open -> effective close, days)
ssm_audit_mini_calc pharma.csv --kpi "Deviation Closure Timeliness" \
--out bands_devclose.csv --plot_kpi "Deviation Closure Timeliness" --build_id ph
# Step-yield stability (critical unit ops variance-normalized)
ssm_audit_mini_calc pharma.csv --kpi "Step-Yield Stability" \
--out bands_stepyield.csv --plot_kpi "Step-Yield Stability" --build_id ph
# Environmental control stability (alerts per room/shift)
ssm_audit_mini_calc pharma.csv --kpi "Environmental Control Stability" \
--out bands_env.csv --plot_kpi "Environmental Control Stability" --build_id ph
# Supplier lot quality stability (in-process adjustments per lot)
ssm_audit_mini_calc pharma.csv --kpi "Supplier Lot Quality Stability" \
--out bands_supplier.csv --plot_kpi "Supplier Lot Quality Stability" --build_id ph
# Change-control discipline (temporary vs permanent fix cadence)
ssm_audit_mini_calc pharma.csv --kpi "Change-Control Discipline" \
--out bands_change.csv --plot_kpi "Change-Control Discipline" --build_id ph
Outputs you will get:
• CSVs with stability bands for each timestamp (e.g., bands_capa.csv).
• Drift charts per KPI (--plot_kpi) showing exactly where reliability thins.
• Optional alerts if you enable thresholds in your setup.
Technical notes
Representation: x = (m, a) with a in (-1, +1)
Collapse parity: phi((m,a)) = m
Order-invariant pooling:
U = sum(w_i * atanh(a_i))
W = sum(w_i)
a_out = tanh( U / max(W, eps_w) )
Typical bands (example):
A++: a >= 0.75
A+: 0.50 - 0.75
A0: 0.25 - 0.50
A-: 0.10 - 0.25
A--: a < 0.10
Navigation
Back: SSM-Audit Q&A Series – Gaming Live-Ops (Question 46)
Next: SSM-Audit Q&A Series – Non-profits & Philanthropy (Question 48)
Page disclaimer
Illustrative scenario for research and education. Observation-only; do not use for critical decisions without independent validation.