Manufacturing Root Cause Report
A battery-module interconnect defect traced past a convincing supplier-lot Pareto to its real origin on the production floor: weld-electrode tip wear under a lax dressing interval — and the SPC fix that closes it.
A fraction of battery modules failed the end-of-line (EOL) interconnect-resistance spec (> 80 µΩ), with field data showing these joints run hot and drift higher over service. A 600-module study with full production traceability isolated the defect to tab-to-busbar weld-electrode tip wear: as the tip wears between dressings, the weld nugget shrinks and joint resistance climbs past a knee.
The defects clustered on supplier foil lot L2 — but L2 was simply the lot routed to Station B, whose dressing interval (4000 welds vs ~1500 on the other lines) let the electrode reach deep wear. Holding electrode wear constant, both the lot and the station associations vanish. Tightening the dressing interval lifts process capability from Cpk to Cpk and removes the escape; a 100% EOL resistance screen contains the field risk in the interim.
The cause is a tooling-maintenance defect (electrode dressing interval), not a material defect (supplier lot) and not a station hardware defect. The supplier-lot Pareto that triggered the investigation is a routing artifact; a supplier corrective action would have changed nothing.
Good joints sit near 35 µΩ. A tail of modules is landing well above 80.
End-of-line testing flags modules whose tab-to-busbar interconnect resistance exceeds the 80 µΩ upper spec limit. The concern is not cosmetic: a high-resistance joint dissipates more power, runs hotter under fast charge, and drifts further upward in service — raising the risk of thermal flags and warranty returns. The escape rate at EOL was running near , far above target.
Because every module carries full production traceability — station, electrode state, supplier lot, line speed, shift, plant conditions — the data supports a disciplined attribution rather than a guess. The challenge, as always, is that several of those variables move together.
600 modules were logged at EOL with their full genealogy. Each record carries the weld station, the electrode wear (welds since the last tip dressing), the supplier foil lot, process parameters, plant conditions, and the measured interconnect resistance.
| Field | Meaning | Role |
|---|---|---|
| electrode_cycles | welds since last tip dressing | Primary cause |
| station | weld station A / B / C | Wear-rate driver (dressing interval) |
| supplier_lot | tab/foil supplier lot | Confounded proxy |
| weld_energy_pct | weld schedule energy | In control (checked) |
| line_speed, humidity | throughput, plant RH | Decoys |
| interconnect_R_uohm | EOL joint resistance | Target variable |
| field_growth | in-service resistance drift | Prognosis input |
The dataset is synthetic, generated from a process model with a known ground truth so the method can be graded. Electrode wear is the only true driver of resistance; the supplier lot is built as a routing-linked proxy with no metallurgical path to the defect.
Seven hypotheses were carried, spanning the manufacturing failure-mode families:
| # | Hypothesis | Family | Falsifiable prediction |
|---|---|---|---|
| H1 | Supplier foil lot variance | Material | Defect tracks lot; foil resistivity out of spec |
| H2 | Electrode tip wear | Tooling | R climbs with cycles-since-dress; resets at dressing |
| H3 | Station / fixture hardware | Equipment | One station defective independent of wear |
| H4 | Weld-schedule energy drift | Process | R tracks weld energy out of band |
| H5 | Line speed / cycle time | Process | R tracks throughput |
| H6 | Operator / shift | Process | R splits by shift |
| H7 | Plant humidity / oxidation | Environmental | R tracks RH |
As before, several are not rivals but links in a chain: a station's dressing interval (H3) governs electrode wear (H2), which sets the joint resistance. Recognizing that prevents mistaking the station for the fix.
The first instinct in a quality escape is a Pareto of defects by attribute. Sorted by supplier lot, it points an unambiguous finger:
A Pareto ranks association, not causation. To go further we need the continuous process variables and the discipline of holding them against one another.
Electrode wear is far and away the strongest signal, but station and lot are non-trivial, and a Pareto would have stopped at the lot. The four-gate test — association, significance, materiality, mechanism — is what separates them.
Lot L2's correlation has a mundane explanation: L2 was the foil lot fed predominantly to Station B. It is a label for "this module was built on Station B," nothing more. Two tests confirm it.
First, holding electrode wear constant collapses both the lot and the station associations to noise, while wear itself survives intact:
Second, the mechanism gate: foil resistivity for lot L2 is within material spec, so there is no metallurgical pathway by which L2 could add tens of µΩ to a joint. Strong correlation, no mechanism — the signature of a confounder. H1 is rejected; the supplier hold is released.
The regression makes the mediation explicit. Lot alone explains little; adding station helps; adding the wear term dominates and drives the lot and station coefficients to near zero:
| Model | Lot coef. | Station coef. | R² |
|---|---|---|---|
| R ~ lot | — | ||
| R ~ lot + station | |||
| R ~ lot + station + wear |
This is the abductive step. The best explanation for "Station B is loud, but only its high-wear modules, and lot L2 just happens to ride along" is that the actionable cause is neither the station nor the lot but the electrode condition — specifically, welds since the last dressing. Station B is implicated only because its lax dressing interval lets wear run deep. The refined, testable claim: resistance is set by cycles-since-dressing, and resets when the tip is dressed. That prediction is the subject of §8.1, and it is decisive.
If wear-since-dressing is the cause, resistance on Station B should climb across each dressing cycle and snap back when the tip is dressed — a sawtooth, not a random scatter. It does exactly that:
The metallurgical companion: as the tip wears, the weld nugget shrinks, so pull strength drops exactly as resistance climbs — two faces of the same loss of joint quality.
Capping the dressing interval so the tip never reaches deep wear transforms the resistance distribution relative to the spec limit:
Tab-to-busbar weld interconnect resistance exceeds spec because the weld-electrode tip is allowed to reach deep wear before dressing. On Station B the dressing interval (≈4000 welds) lets the tip wear well past the quality knee, shrinking the weld nugget and raising joint resistance above 80 µΩ. Supplier lot L2 and "Station B" are correlated proxies — L2 was routed to B, and B is the line with the lax interval — neither is causal once electrode wear is held constant. Station B mean resistance is µΩ ( escape) versus µΩ on lines A/C.
Disposition: H2 (electrode wear) confirmed; H3/H6 act only through it. H1, H4, H5, H7 rejected (Appendix A).
The recurring per-module decision compresses to three checks, evaluable at EOL or on the line — each leaf names cause and action. Thresholds come from the data (spec 80 µΩ; the wear knee near 1200 cycles, deep wear past ~3000).
The fix is a maintenance and screening change inside the existing line — no new hardware. The process and its SPC feedback loop:
The causal chain and the confounder, side by side:
| Action | Type | Effect |
|---|---|---|
| Tighten electrode dressing interval | Corrective (PM) | Cpk → |
| 100% EOL resistance screen | Containment | Blocks field escapes now |
| Adaptive weld-energy compensation | Robustness | Flattens wear sensitivity |
| Quarantine since-last-dressing | Containment | Recovers suspect population |
Because the cause is mechanistic, both the line fix and the field risk can be forecast. First, the dressing interval is an optimization: escape rate rises sharply with cycles-since-dress, so the interval is chosen to hold escape below target.
Second, the field consequence of not screening: above-spec joints drift upward in service and eventually trip thermal flags.
Immediate containment: institute a 100% EOL interconnect-resistance screen across all stations, and quarantine modules built on Station B since its last electrode dressing. Corrective action: set every station's dressing interval from the escape-vs-interval curve at the 0.5% target, add an SPC control chart on EOL resistance with an action limit that auto-triggers dressing, and pilot adaptive weld-energy compensation to flatten the wear sensitivity. Release the supplier hold on lot L2 — it was never causal. Verify by confirming the sawtooth no longer breaches spec and Cpk holds above target on each line, and track field thermal-flag rate by build-since-dressing cohort.
| # | Hypothesis | Disposition | Decisive evidence |
|---|---|---|---|
| H1 | Supplier foil lot | Rejected | Collapses under wear control; foil resistivity in spec |
| H2 | Electrode tip wear | Confirmed | Survives control; sawtooth; strength–resistance link |
| H3 | Station hardware | Rejected* | Effect fully mediated by wear (lax dressing), not hardware |
| H4 | Weld energy drift | Rejected | Energy in control; flat correlation |
| H5 | Line speed | Rejected | Flat correlation |
| H6 | Operator / shift | Rejected | No split once wear controlled |
| H7 | Plant humidity | Rejected | Flat correlation |
* Station B is the locus, but the actionable cause is its dressing interval, not station hardware.
The dataset and full analysis ship alongside as weld_resistance_rca.py (process-model generator + diagnostic pipeline) and weld_modules.csv (600-module mockup). The core of the generator:
# resistance climbs super-linearly past the electrode-wear knee wear_term = max((electrode_cycles - KNEE)/1000, 0) ** 1.6 R = 35 + 17*wear_term + 0.05*(weld_energy-100) + lot_resistivity + noise defect = R > 80 # microohm spec limit # confounder: lot L2 routed mostly to Station B (the lax line) p_L2 = where(station=="B", 0.80, 0.12) # proxy, foil in spec dress_interval = {"A":1500, "B":4000, "C":1700} # B is lax
The pipeline reproduces every figure: the Pareto, correlation screen, partial-correlation confounder test (lot → r ≈ ), staged regression (R² ), the SPC sawtooth, capability (Cpk ), and the prognosis.