← Back to: eFuse / Hot-Swap / OR-ing Protection
Intro — Why Pre-Isolation Protection Matters
Pre-isolation input protection must reconcile three tensions: surviving high-voltage and ESD energy, preserving accuracy/low noise, and meeting safety compliance. The practical path is layered: limit energy (series R/PTC/fuse or eFuse policy), cascade clamps (GDT/TSS to shed energy → low-Rdyn TVS to reduce residual → low-leak soft clamp to a clean reference), and controlled bleed to chassis using medical-grade CY and a bleed resistor. Every clamp/bleed element must enter both the patient-leakage budget and the error budget (bias, bandwidth, CMRR) so the AFE does not saturate and the design passes audits.
Set Rin/PTC/fuse or eFuse so worst-case energy and steady overload remain below device SOA.
GDT/TSS to shed → low-Rdyn TVS to narrow residual → low-leak clamp to reference; avoid AFE saturation.
Shortest discharge to chassis; size CY + Rbleed for patient-leakage limits under N/SFC.
Leakage via CY, Rbleed, and device Ileak; must meet IEC 60601-1 limits in Normal and Single Fault.
Measurement category (II/III/IV) per IEC 61010 defines working voltage, creepage, and impulse withstand.
Impulse withstand voltage that drives divider ratings, spacing, and upstream surge elements.
Post-clamp voltage vs time/frequency; must remain below AFE absolute maximum ratings.
Sum of arrays/trace/filters/probes; governs bandwidth, phase, and CMRR budgets.
Single Fault Condition—any element open/short; leakage and thermal limits must still hold.
Standards Snapshot(Medical & Metrology)
BF/CF leakage limits (N/SFC), MOPP/MOOP context, and EMC requirements mapped to observable design quantities.
CAT II/III/IV, working voltage, Uimp drive divider ratings, spacing, and front-end protection selection.
ESD/EFT/Surge injection paths (port/chassis, CM/DM) and pass/fail criteria (residual to AFE, recovery).
Four Parameter Cards
BF/CF limits, N/SFC; AC via CY, DC via Rbleed + device Ileak. Measure worst-case temp/tolerance.
Impulse withstand sets divider ratings, spacing, MOV/GDT class. Pair with working voltage and CAT.
Residual band after clamps over time/frequency; must be < AFE absolute maximum. Capture with bandwidth-limited probes.
Arrays + traces + filters + probes; enforces bandwidth/phase/CMRR budgets; document per channel.
Compliance Checklist (copy to BOM/review)
- Pre-isolation clamps selected by residual-band; patient-leakage model covers N/SFC with temp/tolerance worst-case.
- CAT __ / Uimp __ kV validated per IEC 61010; divider network derated; creepage/clearance verified with slots where needed.
- ESD/EFT/Surge injection paths defined (port/chassis, CM/DM); pass criteria: residual to AFE < limit and functional recovery < __ ms.
- Cin_total budget documented per channel; anti-alias filter and CMRR targets maintained.
- Any element open/short (SFC) keeps leakage and thermal rise within limits; mitigation recorded.
Medical Front-End (BF/CF) — Pre-Isolation Stack
Patient-contact channels must survive surges while keeping instrumentation stages out of saturation and meeting BF/CF leakage limits. The practical stack is: input limit energy (R/PTC/micro-fuse), cascade clamps (spark gap/GDT→TVS→low-leak reference clamp), and controlled bleed (R_bleed + medical-grade C_Y to chassis). All clamp/bleed elements enter the I_patient budget and the error budget (bias, bandwidth, CMRR). Single-fault (SFC) open/short must still hold leakage and thermal limits.
Size R_in / PTC / micro-fuse or eFuse so ∫I²dt and steady overload stay within SOA.
GDT/TSS sheds energy → low-R_dyn TVS narrows residual → low-leak soft clamp to clean reference.
Shortest path to chassis via R_bleed + medical-grade C_Y; include in N/SFC leakage model.
Single Fault Condition (SFC) Table
AC component drops; check DC via R_bleed + device I_leak. Ensure residual still under IA window.
Leakage spikes; chassis bond & fuse/eFuse must keep I_patient within SFC limit.
Open → loss of limit; short → overload risk; validate ∫I²dt and upstream GDT/TVS robustness.
Up → bias error & I_patient rise; open → higher residual; add soft clamp to reference.
Loss of DC bleed; ensure IA recovery and chassis path via C_Y still safe.
Low-Leakage Parts Shortlist
I_leak @ 25/70 °C, C_eq @ 100 kHz/1 MHz, package creepage; BF/CF suitability.
V_br, R
Leakage; impact of R_on and C_on on bandwidth/accuracy; evaluate I_patient under fail-short/open conditions.
Metrology Front-End (CAT II/III/IV) — Divider & Range
For CAT-rated instruments, the HV divider, surge cascade, and range switching must tolerate the working voltage and Uimp while preserving accuracy and bandwidth. Divider failure must fall into a controlled path (limit energy → disconnect), relays/SSR need spark-gap or RC snubbers and dv/dt control, and CAT/Uimp define creepage/clearance, power, and package ratings.
Divider Power & Temperature Card
P
Check V_working & Uimp; apply % derating per vendor curves; verify creepage/clearance slots.
Thermal drift vs accuracy class; use matched pairs and equalized heat flow.
Range Switching Protection Card
Add spark gap/RC snubber; sequence with open-before-close; enforce deadtime Δt ≥ contact bounce.
dv/dt limiters, reverse-energy paths; verify leakage & R_on drift vs bandwidth and accuracy.
“Clamp on → switch → clamp off” to keep residual under AFE absolute maximum.
Protection Matrix — Layers & Devices
Build a layered path from energy shedding to residual clamping and finally low-C/low-leak finishing. Choose components by goals → layers → device families → key parameters → layout rules. Priority rules: shed energy first (GDT/TSS/MOV), then minimize residual with low-Rdyn TVS and soft clamps; on the measurement side, favor low capacitance and low leakage over nominal VRWM. Electronic disconnect (eFuse) governs the energy integral.
Engineering Matrix (HTML, copy-ready)
| Goal | Layer | Device family | Key params | Layout notes | Path |
|---|---|---|---|---|---|
| Leakage limit | Return-Path | CY + R_bleed | Iac=ω·CY·Vmains; Idc=Vref/R_bleed; Ileak_sum | Shortest to chassis; single-point bond; diff-pair symmetry | Medical |
| Saturation avoidance | Residual-Clamp | TVS + low-leak soft clamp | Rdyn; Ceq; Ileak; t_clamp | Near AFE ref; star-return; minimal loop | Both |
| Surge survival | Energy-Shed | GDT/TSS/MOV | V_hold/V_br; I_TLP; t_arc; life | Upstream of TVS; chassis-first path; short & wide | Both |
| Energy policing | Limit-Energy/Disconnect | eFuse/PTC/Fuse | I_lim; ∫I²dt; Pdiss; foldback/hiccup | Thermal path; stable sense; route to shed stage | Both |
| Bandwidth integrity | Low-C ESD | ESD array (low C) | Ceq@100 MHz; V_br; I_leak | Closest to pins; symmetry for diff pairs | Both |
| Range safety | Range-Switch | Relay/SSR/Analog-SW | t_on/t_off; leakage; dv/dt; R_on; snubber | Open-before-close; deadtime; clamp-assist | Metrology |
Engineering Matrix (CSV, copy-ready)
goal,layer,device_family,key_params,layout_notes,path Leakage limit,Return-Path,CY+R_bleed,"Iac=ωCY*Vmains; Idc=Vref/R_bleed; Ileak_sum","shortest-to-chassis, single-point-bond, diff-symmetry",Medical Saturation avoidance,Residual-Clamp,TVS+low-leak soft clamp,"Rdyn, Ceq, Ileak, tclamp","near-AFE-ref, star-return, minimal-loop",Both Surge survival,Energy-Shed,GDT/TSS/MOV,"Vhold/Vbr, ITLP, tarc, life","upstream-of-TVS, chassis-first, short-&-wide",Both Energy policing,Limit-Energy/Disconnect,eFuse/PTC/Fuse,"Ilim, int(I^2)dt, Pdiss, foldback/hiccup","thermal-path, stable-sense, route-to-shed",Both Bandwidth integrity,Low-C ESD,ESD array (low C),"Ceq@100MHz, Vbr, Ileak","closest-to-pins, diff-pair-symmetry",Both Range safety,Range-Switch,Relay/SSR/Analog-SW,"ton/toff, leakage, dv/dt, Ron, snubber","open-before-close, deadtime, clamp-assist",Metrology
Math & Design Rules — Quick Formulas
Use conservative quick formulas to size leakage, residual, bandwidth and energy budgets; validate later with transient tests. Evaluate N and SFC states separately. For repeated surges, combine eFuse foldback/hiccup with the upstream energy-shed stage and verify the equivalent power.
Computation Card (copy-ready)
Vmains, CY, Vref, R_bleed, Ileak_sum, Rin, Cin_total, VGDT, Rdyn, VAFE_max, theta_JA, {Vi,Ri}
25 °C / 50–60 Hz; tolerance ±10–20%; recovery ≤ 20 ms; Medical: BF/CF leakage limits; Metrology: CAT creepage/clearance
Ipatient (N/SFC), DeltaT_i, Vresidual, fc, Eintegral; pass/fail with margins
Examples (ECG channel & CAT III/600 V)
Select CY and R_bleed to keep Ipatient within N/SFC limits; include diode/TVS leakage; verify IA recovery ≤ 20 ms.
Distribute {Vi,Ri} for the divider; estimate DeltaT_i via thermal resistance; for Uimp use GDT+TVS residual window check; add snubber for range switching.
Layout & Mechanical
Translate protection intent into board practice: route high-energy paths to chassis first, keep return loops tiny, enforce creepage/clearance with slots and mask keepouts, apply guard rings and driven shields around precision inputs, and manage thermal spacing for dividers, relays, SSRs, and eFuses.
Layout Checklist — 15 Hard Rules
- Place CY + R_bleed at the connector boundary; bond shortest to chassis/PE.
- Put TVS upstream of measurement nodes; minimize loop area to its return.
- Close ESD loops locally to the same reference plane; avoid long meanders.
- Use mask keepouts and milled slots to enforce creepage/clearance targets.
- Route high-energy returns to chassis first; keep analog reference isolated.
- Add HV silkscreen markers near critical gaps and arc paths.
- Implement guard ring around IA/TIA inputs tied to a low-impedance reference.
- Use driven shield for sensor leads; maintain symmetry for differential pairs.
- Keep eFuse/PTC away from precision AFE; provide copper for heat spreading.
- Distribute divider power; estimate ΔT from Vi²/Ri and θJA,eq.
- Reserve spacing for relays/SSRs; include snubbers across arcing contacts.
- Star-return sensitive nodes; avoid stitching that creates unintended loops.
- Place surge shed (GDT/TSS/MOV) closest to the entry and chassis bond.
- Keep anti-alias networks compact; account for their contribution to Cin,total.
- Document measured creepage/clearance and slot dimensions on the fab notes.
Layout Check Card (Print to A4)
| Item | Rule | Measure | Status |
|---|---|---|---|
| Boundary discharge | CY+R_bleed at connector → chassis | Bond length <= X mm | ☐ |
| TVS placement | Upstream of AFE, tiny loop | Loop area ≤ Y mm² | ☐ |
| Local ESD loop | Return to same plane cutout | Loop length ≤ Z mm | ☐ |
| Creepage | Meet calc target by CAT/pollution | ≥ target mm | ☐ |
| Slots/keepouts | Slots across critical gaps | Slot width/length | ☐ |
| HV markers | Silkscreen near gaps | Present/clear | ☐ |
| Guard ring | Around IA/TIA inputs | Width, clearance | ☐ |
| Driven shield | Cable/lead shielding | Shield continuity | ☐ |
| Star return | Sensitive nodes to star | Star distance | ☐ |
| Surge shed | GDT/TSS/MOV near entry | Bond length | ☐ |
| eFuse/PTC area | Thermal spacing from AFE | ≥ S mm | ☐ |
| Divider ΔT | Vi²/Ri and θJA,eq | ΔT within limits | ☐ |
| Relays/SSR | Snubber & spacing | Contacts clearance | ☐ |
| Anti-alias RC | Compact; counts in Cin,total | Area & Cin added | ☐ |
| Fab notes | Document measured gaps/slots | Note present | ☐ |
Validation Matrix & Scripts
Execute a repeatable port-level validation plan covering ESD, EFT, Surge, CAT working voltage with Uimp, and medical leakage. For each family, define setup, injection path, probe bandwidth/window, pass criteria, and screenshot naming so results are comparable and auditable.
Validation Matrix — CSV Template (copy-ready)
TestID,Family,Subtype,Port/Node,Setup,Level,Reps,ProbeBW,Window,PassCriteria,Observed,Verdict,Screenshot,Notes
ESD-01,ESD,Contact,+/- Port Pin,"Gun direct, 8kV",8kV,10,200MHz,10ms,"Vres ≤ V_AFE,max & recovery ≤ 20ms",,<PASS/FAIL>,,
ESD-02,ESD,Air,Enclosure,"10cm, 15kV",15kV,10,200MHz,10ms,"No latchup; recovery ≤ 20ms",,<PASS/FAIL>,,
EFT-01,EFT,Clamp,Port Bundle,"Coupling clamp",2kV,1k bursts,100MHz,5ms,"No false trigger; jitter ≤ spec",,<PASS/FAIL>,,
SUR-01,Surge,CM,L-G,"1.2/50 μs",2kV,5,100MHz,5ms,"eFuse foldback OK; no damage",,<PASS/FAIL>,,
SUR-02,Surge,DM,L-L,"1.2/50 μs",1kV,5,100MHz,5ms,"Vres window within limit",,<PASS/FAIL>,,
CAT-01,CAT,Uimp,Input,"As per CAT rating",3kV,3,100MHz,5ms,"Divider ΔT within limit; integrity OK",,<PASS/FAIL>,,
LEK-01,Leakage,Patient,N/SFC,"BF/CF config",--,--,--,--,"Ipatient ≤ limit (N/SFC)",,<PASS/FAIL>,,
Seven-Brand IC Shortlist
Buckets focus on pre-isolation protection for Medical/Metrology front-ends. Selection favors low leakage, low equivalent capacitance, controlled residual window (low Rdyn), and energy-safe eFuse/Hot-Swap policies. Notes specify what makes each part pass guardrails (leakage, Cin,total, Vres bandwidth, ∫I²dt).
Representative Parts by Brand & Function (with reasons)
| Brand | Energy limiting / disconnect | Clamping (TVS/ESD/low-leak) | Range / switching | AFE / buffer | Measurement (ADC/ΣΔ) | Notes (why shortlisted) |
|---|---|---|---|---|---|---|
| TI | TPS2595x (eFuse), LM5069 (Hot-Swap) | TPD4E02B04, TPD1E10B09 | TMUX6136, DRV104 (relay driver) | INA333, OPA333 / OPA2140 | ADS124S08, ADS1262 | Precise I_lim/SS/FAULT semantics → map to ∫I²dt; low-C ESD arrays keep Cin,total; INA/OPA offer ultra-low bias for BF/CF. |
| ST | STEF01 / STEF12 (eFuse) | SMBJ/SMFJ (TVS), ESDA series (ESD) | HCF4066B / HCF4053B (analog switch) | TSZ121 / TSZ182 (zero-drift) | STPMS2 (ΣΔ modulator) | TVS options with low R_dyn for residual window; zero-drift op-amps stabilize offset post-clamp; legacy CMOS switches for low leakage paths. |
| NXP | NX5P3290 (protected load switch) | PESD5V0S1BA, PESD3V3S2UT | NX3L4051 / NX3L4053 (low-V analog) | (use TI/ST/Renesas op-amps for ultra-low bias) | (pair with external high-accuracy ADCs listed) | Strong low-C ESD portfolio for data-side “finish”; protected load switch helps soft domains (low voltage) without violating MPS/accuracy. |
| Renesas | ISL6146 (Hot-Swap) | (use low-leak fast diodes in front-end; TVS via ST/onsemi) | ISL43210 / ISL84516 (analog switch/MUX) | ISL28634 (IA), ISL28134 (precision op amp) | ISL26134 / ISL26102 (24-bit ΣΔ) | Hot-Swap with programmable policy; precision IA/ΣΔ path has strong DC accuracy — good with low-leak clamps. |
| onsemi | NIS5021 / NIS5135 (eFuse) | SMBJ/SMF (TVS), ESD9B / ESD7002 (ESD) | NCV / NUD series (relay/high-side drivers) | NCS333 (precision op amp) | (use TI/Microchip/Renesas ΣΔ for high-resolution) | Robust TVS range with low R_dyn picks; eFuse options support foldback/hiccup to protect divider/TVS thermal limits. |
| Microchip | MIC25404 / MIC2005 (eFuse/load switch) | (pair with low-C ESD arrays per interface) | HV2808 / HV20220 (Supertex HV switches) | MCP6V66 (zero-drift), MCP6071 (precision) | MCP3564R / MCP3561R, MCP3911/3914 | HV switch arrays excel in metrology range cards; ΣΔ/AFE families have solid docs and reference designs for validation. |
| Melexis | (use system-level current limit via sensor diagnostics) | (select low-leak ESD arrays matched to MLX sensors) | (use with external relay/driver) | Sensor-centric front-end guidance | MLX91220 / MLX91221 (current sensors) | Excellent for current/energy telemetry; pair with external TVS/ESD carefully to keep bias/leakage within BF/CF or CAT budgets. |
Cautions per Domain
- Medical (BF/CF): include diode/TVS I_leak in patient-leakage budget; count Ceq into input bandwidth and offset; verify N/SFC.
- Metrology (CAT/Uimp): match divider power/creepage to CAT class; verify surge path (CM/DM) and residual bandwidth fits VAFE,max.
Cross-Brand Alternatives & Migration
Preserve leakage, equivalent capacitance, residual voltage bandwidth, and energy trajectory when swapping brands. Unify eFuse policy semantics (I_lim, timers, foldback/hiccup) to keep ∫I²dt under SOA. For TVS, match Rdyn and Vres(t,f); for divider stacks, keep value/tolerance/power/voltage and distribution thermal management consistent.
Migration Checklist — 10 Hard Checks
- Sum I_leak (clamp + ESD arrays) into Medical patient-leakage budget (N/SFC).
- Verify C_eq@100 MHz ≤ signal-path limit; measure bandwidth shift vs. target.
- Match TVS Rdyn and residual-voltage bandwidth to keep Vres(t,f) ≤ VAFE,max.
- Re-tune eFuse I_lim, timer, foldback/hiccup so ∫I²dt ≤ SOA of TVS/divider.
- Unify PG/FAULT semantics and recovery time (e.g., ≤ 20 ms) across brands.
- Keep divider value/tolerance/power/voltage ratings and ΔT distribution unchanged.
- Preserve creepage/clearance and slot strategy; re-mark HV silkscreen if package changes.
- Confirm Uimp/CAT class with the new BOM (datasheet + test evidence).
- Re-run ESD/EFT/Surge with the new parts; capture residual and recovery screenshots.
- Update validation CSV and BOM notes; freeze versions for traceability.
BOM Remark Template (copy-ready)
[BOM Remark — Pre-Isolation Protection]
1) Clamp path: total leakage (diode/TVS/ESD) ≤ patient-leakage budget (N & SFC). List measured I_leak@25/50 °C.
2) Data-side ESD arrays: C_eq@100 MHz ≤ ____ pF per lane; confirm eye/bandwidth OK.
3) TVS residual: R_dyn matched; V_res(t,f) ≤ V_AFE,max with scope evidence.
4) eFuse policy: I_lim=___ A, t_lim=___ ms, mode=[foldback/hiccup]; ∫I²dt ≤ TVS/divider SOA.
5) Divider stack: values/tolerances/power/voltage unchanged; ΔT verified ≤ ___ °C at worst case.
6) CAT/Uimp: class=___, Uimp=___ kV; creepage/clearance and slot geometry documented.
7) PG/FAULT semantics: compatible; recovery ≤ ___ ms; no latch after ESD/EFT/Surge.
8) Re-validation: ESD/EFT/Surge levels per plan; attach screenshots (filename convention).
[Brands allowed: TI / ST / NXP / Renesas / onsemi / Microchip / Melexis. Cross-brand changes must re-run validation matrix before release.]
Frequently Asked Questions
Answers below are written for Medical/Metrology pre-isolation protection.
How do I size the bleed resistor and medical-grade Y-cap to meet patient-leakage in both normal and single-fault conditions?
Budget patient leakage as I_total = ω·C_Y·V_mains + V_ref/R_bleed for normal, then re-evaluate with one component failed (open/short) for single-fault. Pick C_Y (medical grade) as small as EMI allows, place at chassis boundary, and raise R_bleed until both states pass limits with temperature. Verify on an analyzer across mains frequency and harmonics.
What clamp order prevents my IA/TIA from saturating during IEC 61000-4-2 hits?
Use an “energy shed → residual clamp → low-C ESD finish” cascade. First, shed energy to chassis (GDT/TSS or primary TVS to chassis). Second, a low Rdyn TVS limits residual at the signal reference. Finally, a low-C ESD array at the pins preserves bandwidth. Keep loops short, and verify recovery time and residual within AFE absolute maximum ratings.
How do I choose between GDT, TSS, MOV, and TVS for a shared medical/metrology input?
Pick by energy and leakage. Use GDT/TSS near the entry to shed large energy to chassis with negligible DC leakage; add MOV where mains-related surge energy is expected. Use a low Rdyn TVS to control residual at the measurement reference, and a low-C ESD array at the pins. Ensure total leakage and Cin meet patient and accuracy budgets.
Which divider topology preserves accuracy yet survives CAT III/600 V with Uimp surges?
Use a series stack of HV resistors with equalizing caps only if bandwidth requires it, distribute power so each element stays within rating, and add primary surge shed to chassis. Maintain creepage/clearance with slots, place snubbers across range relays, and verify ΔT and drift at working voltage and Uimp pulses. Keep tolerance and voltage coefficients documented.
How do I protect range-switch relays or analog MUX against hot-plug and arcing?
Limit dv/dt and inrush: add RC snubbers across contacts, pre-bias the measurement node via a bleed path, and sequence switching after clamps are active. For solid-state MUX, check absolute maximum and inject anti-alias RC at the output. Validate with hot-plug tests and capture contact bounce and residual to ensure no AFE saturation or latch conditions.
How can I verify that V_res(t,f) stays within the AFE safe input range?
Probe the AFE input with a high-bandwidth, low-inductance ground spring. Use an oscilloscope window long enough to see recovery and a fast segment to catch the peak. Overlay the AFE absolute maximum line and residual window target. Sweep surge/ESD levels and repetition. Passing means peak and residual duration stay below the AFE safe envelope.
What is a safe eFuse hiccup profile so energy stays below device SOA across repeats?
Program I_lim and on-time so the integral ∫I²dt per event is below the weakest SOA element (TVS or top divider resistor), then set an off-time to ensure thermal recovery. Validate across temperature and repetition. Passing means no resistance drift, no TVS discoloration, and stable recovery time under worst-case surge and short-circuit scenarios.
How do driven shields and guard rings reduce leakage and noise in practice?
A driven shield tracks the signal potential, reducing parasitic capacitance and displacement current into the node. A guard ring around IA/TIA inputs ties to a low-impedance reference, intercepting surface leakage paths before they reach the pins. Keep the ring continuous, avoid solder mask dams, and verify with leakage measurements and bandwidth checks.
Should ESD/surge return to signal ground or chassis, and how do I keep loops short?
Return high-energy events to chassis first to keep them out of the measurement ground. Close the ESD loop locally with the same reference plane and provide a short bond to chassis at the boundary. Keep clamp-to-return length minimal, avoid long meanders, and confirm loop area by measuring residual and recovery on the sensitive node.
How do I budget total Cin so anti-aliasing and CMRR targets are met?
Sum all contributors: clamp diode capacitance, TVS capacitance vs frequency, ESD array C_eq@100 MHz, cable and sensor capacitance, and anti-alias RC. Set fc = 1/(2π·R_in·C_in_total) to meet bandwidth, then simulate CMRR versus mismatch. Measure on hardware and adjust anti-alias values or device choices to restore bandwidth and rejection margins.
Which tests prove CAT rating compliance for a handheld meter front end?
Demonstrate working voltage at the CAT class, then apply Uimp 1.2/50 μs surges line-to-line and line-to-ground per the category. Add IEC 61000-4-2, -4, -5 paths relevant to the port. Record creepage/clearance, slot geometry, divider ΔT, and recovery screenshots. Passing requires no damage, stable accuracy, and residual within the AFE safe window.
How do I document single-fault analysis so auditors accept the leakage model?
List each protective element with normal and fault states (open/short), recompute leakage paths, and show I_total versus limits at temperature extremes. Include component tolerances, worst-case mains frequency, and measured data from a leakage analyzer. Tie results to the BOM and layout references, and version-control the report so traceability is clear for audits.