When Device Storage Fills: Test Recording, Warnings, and Export Separately
How to specify and verify medical device storage-full behavior across recording continuity, user warnings, and data export under FDA software guidance and QMSR.

Where Storage Exhaustion Sits in FDA's Software Expectations
Consider the scenario that surfaces late in many data-logging medical device programs: your device writes patient physiological waveforms, diagnostic assay results, or therapy delivery logs to local non-volatile storage. Six weeks before premarket submission, the test lead asks a deceptively simple question: when onboard storage fills, does the device warn before reaching capacity, continue recording, overwrite the oldest records, or halt—and what objective verification evidence will satisfy both the FDA premarket reviewer and a Quality Management System Regulation (QMSR) auditor?
The direct answer is to treat full device storage as a predictable, specified operating boundary rather than an anomaly, and to split verification into three independent test claims: (1) recording behavior at and beyond 100% capacity, (2) user warning threshold, persistence, and clearance, and (3) export integrity and post-purge return to service. In FDA's June 14, 2023 final guidance, Content of Premarket Submissions for Device Software Functions (finalized after a November 4, 2021 draft and superseding FDA's May 2005 premarket software guidance), the definition of a product "function" uses storage as its example: "A product with an intended use to store, transfer, and analyze data has three functions: (1) storage, (2) transfer, and (3) analysis." When onboard storage serves the device's intended use, as it does in a recorder or meter that keeps results for later review, it is a distinct function with its own requirements and failure modes rather than an implementation detail. This article addresses that case: storage that is part of the device's own software.
Under that June 2023 framework, the SRS typically specifies error definition and handling alongside "all ranges, limits, defaults, and specific values that the software will accept." The guidance's footnotes list memory devices among hardware requirements, and say software performance and functional requirements may also include "error and interrupt handling, fault detection, tolerance, and recovery characteristics, safety requirements, and timing and memory requirements." Meanwhile, FDA's January 11, 2002 final guidance, General Principles of Software Validation (GPSV, Version 2.0), whose sections other than the superseded Section 6 FDA says still reflect its current thinking, lists among the elements that system-level software testing addresses "Responses to stress conditions, e.g., behavior under maximum load, continuous use" and "Effectiveness of recovery procedures, including disaster recovery" (Section 5.2.5). A full storage partition is exactly that kind of maximum-load, continuous-use condition, and freeing it is a recovery procedure.
A predictable weak spot at the storage boundary is collapsing three separate verification questions into a single happy-path check: a test injects a mock flag to confirm that a "Memory 90% Full" banner renders on the screen, the requirement is marked passed, and nobody tests what actually happens when the file system or flash partition receives its first write command at 100% capacity—or whether offloading records over USB or Bluetooth clears the warning and resumes recording without corrupting the sequence index. Just as edge-case verification for medical device power interruptions and state survival or daylight-saving repeated-hour timestamps requires isolating each state transition, storage-exhaustion testing only holds up under scrutiny when recording continuity, user alerting, and export recovery are specified and verified separately.
Choose the Boundary Behavior Before Writing Any Test
You cannot write a valid pass/fail test case for full storage until your product team decides what "correct" behavior is for the device's specific clinical context. In medical device design controls, there is no universal rule stating that every device must overwrite old records or that every device must lock out new measurements when memory fills. Shipped devices legitimately implement contrasting boundary architectures because their clinical workflows and hazard profiles differ.
Comparing two current, publicly available manufacturer operator manuals illustrates why boundary behavior must be derived from intended use rather than assumed by software engineers:
Delete-Oldest Overwrite with Cloud History (Over-the-Counter Home Glucose Monitoring): The Livongo Blood Glucose Monitoring System Owner's Manual (PL00497_E_G2.4) describes an over-the-counter meter that stores 1,000 results on board. When meter memory is full, the oldest result is deleted from onboard memory. The meter has an embedded cellular module, and the manual says past results remain accessible from the member account "as long as your meter uploads your information"; readings that could not be sent are stored and sent later once a reliable signal is available. A full memory therefore does not stop a new reading from being saved, but the long-term history depends on uploads succeeding. That dependency is exactly what a wrap test should probe.
Capacity-Limited Sessions and Operator-Controlled Erase (Ambulatory ECG Recording): By contrast, the Norav Medical NR Recorder Operation Manual (UM_NR_2.9, 2023) treats an ambulatory ECG recording as a discrete study. In Holter modes, the recording hours offered in the Record Settings menu are limited to what the memory card can hold (an "SD card too small" message sends the user back to that setting), and the recorder switches off automatically when the set recording duration is reached. If the recorder finds a saved recording that has not yet been downloaded, it shows a warning and offers to erase the old record before preparing for a new one. In the multi-patient ECG+ mode of the NR-1207-3, a record control menu separates
Stop ECG,Shutdown, andOverwrite Record, and the manual warns thatOverwrite Recordcleans the memory card and erases previously recorded ECG traces. Our reading of that design: silently overwriting the start of a diagnostic study would destroy evidence the reviewing physician needs, so every destructive step is an explicit operator decision.
When evaluating which boundary behavior belongs in your SRS and risk management file, map the candidate architecture against the clinical hazard of losing historical records versus the clinical hazard of refusing a new measurement or therapy session:
| Boundary Architecture | Where It Tends to Fit (Editorial) | Primary Failure Hazard if Unverified | Public Labeling Example (Where Cited) | SRS and Risk-Control Focus (Editorial) |
|---|---|---|---|---|
| 1. Circular Overwrite (FIFO Ring Buffer) | Episodic spot-check monitors, chronic home-care meters with automatic cloud sync, or rolling diagnostic event logs | Pointer wrap corruption, silent deletion of un-uploaded clinical records, or off-by-one overwrite of the newest record instead of the oldest | Livongo blood glucose meter: deletes the oldest onboard result once 1,000 are stored; uploaded history stays in the member account | Specify exact buffer depth, deterministic FIFO pointer wrap, sync-status tracking before overwrite, and sequence-number continuity across wrap |
| 2. Stop Recording & Preserve Existing Data | Multi-day ambulatory diagnostic recorders (Holter, sleep study, continuous telemetry) where early baseline data is diagnostically essential | Truncated final file header/footer leaving the entire study unreadable, or silent halt without alerting the clinician or patient | Norav NR recorder in Holter modes: selectable recording hours limited to card capacity; recorder switches off at the set duration | Specify clean file closure at the exact capacity limit, non-destructive read-only state at 100%, and explicit confirmation before any card purge |
| 3. Require Export / Interlock Before New Session | Benchtop IVD analyzers, surgical imaging consoles, or high-risk diagnostic workstations subject to audit-trail retention | Deadlock where the operator cannot export or clear space because the UI blocks all commands once storage hits 100% | Partial example only: the Norav NR recorder warns when an un-downloaded recording is on the card and offers to erase it, an operator decision point rather than a hard export interlock. Fuller interlocks are an editorial pattern, not a cited product. | Specify pre-session free-space check, guaranteed reserve headroom for active runs, and unobstructed export/purge workflow when locked |
| 4. Continue Therapy / Degrade Non-Essential Logging | Life-supporting or therapy-delivery devices (infusion pumps, ventilators, defibrillators) where therapy must never halt due to log exhaustion | Unhandled storage write exception propagating to the therapy control task and interrupting patient treatment | Editorial design pattern; no public labeling example cited here | Specify strict partitioning and thread/task isolation so a full storage partition never blocks therapy delivery or high-priority alarms |
Do not expect this architectural choice to change the device's FDA documentation level. Under the June 2023 Device Software Functions Guidance, Enhanced Documentation applies when a failure or flaw of any device software function could present a hazardous situation with a probable risk of death or serious injury, and FDA says those risks "should be assessed prior to implementation of risk control measures." The boundary behavior is a risk control; it belongs in the SRS and risk file whichever level applies. A footnote in the same guidance also cautions that "Applying unrealistically low probability estimates to software failures could result in unrealistic risk evaluation and subsequently lead to inappropriate risk control measures," and suggests that in some instances it may be prudent to focus on identifying the failures that could cause hazardous situations instead of estimating probability. A storage-boundary risk file falls into that trap when it argues that "the user will always export data before memory fills, so the probability of reaching 100% capacity is negligible." Because software behaves deterministically once the fill boundary is reached, assuming perfect user housekeeping is not a valid software risk control. If an unhandled full-storage condition could halt therapy, suppress a clinical alarm, or silently discard a diagnostic trace, the boundary behavior is a safety-relevant control that must be specified in the SRS and verified through objective testing.
flowchart TD
A["Device Writes Clinical or Operational Records"] --> B{"Storage Crosses Warning Threshold?"}
B -- "Yes (Suite B)" --> C["Raise Non-Blocking Capacity Warning & Log Event"]
C --> D{"Storage Reaches 100% Specified Limit?"}
B -- "No" --> A
D -- "No" --> A
D -- "Yes (Suite A)" --> E{"Execute Specified SRS Boundary Policy"}
E -- "Policy 1: FIFO Wrap" --> F["Delete Oldest Record Deterministically & Preserve Sequence Integrity"]
E -- "Policy 2: Stop & Close" --> G["Close Active File Cleanly, Lock Further Writes & Persist Full Alert"]
E -- "Policy 3: Pre-Run Interlock" --> H["Complete Active Run in Reserved Headroom & Block New Run Until Export"]
E -- "Policy 4: Therapy Priority" --> I["Continue Therapy Uninterrupted & Isolate Storage Exception"]
F --> J["Operator Initiates Export & Space Recovery (Suite C)"]
G --> J
H --> J
I --> J
J --> K["Verify Exported Checksums, Clear Warning State & Confirm Return to Service"]Build a Synthetic Capacity-Boundary Dataset
Once the SRS defines the exact storage limit and boundary policy, the engineering team faces a practical execution problem: if a medical device is designed to store 90 days of patient telemetry or 10,000 assay records, waiting 90 days on a laboratory bench to observe a single boundary transition is incompatible with agile verification cycles and regression testing. Conversely, if a tester simply mocks a boolean variable (`isStorageFull = true`) in unit code, the test completely bypasses the file system, flash translation layer, database index, and block-allocation math where real boundary failures actually occur.
To bridge that gap in line with GPSV's system-level testing elements ("behavior under maximum load, continuous use" and recovery effectiveness) and, by analogy, its loop-coverage criterion of "zero, one, two, and many iterations covering initialization, typical running and termination (boundary) conditions," teams need a synthetic capacity-boundary dataset. The goal is to bring the real physical partition, EEPROM array, SD card, or embedded SQLite/flash store to an exact, mathematically computed byte or record count below the limit, and then drive the final boundary transitions using the device's production write path.
Step 1: Compute the Exact Storage Geometry and Reserve Headroom
Before generating test records, document the storage math in the verification protocol so a reviewer can see why your boundary numbers are exact rather than arbitrary:
Partition Usable Bytes vs. Logical Record Cap: Determine whether the software enforces an application-level record count limit (for example, exactly
N_max = 1,000patient result records), a byte-quota limit on a file-system directory, or raw physical partition exhaustion. If the device relies on a third-party flash file system or embedded database engine, treat that component under your SOUP (Software of Unknown Provenance) IEC 62304 controls, accounting for file-system metadata overhead, journal files, write-ahead logs (WAL), and flash block erase units.Record Payload and Index Overhead: Calculate the exact byte footprint of a single stored record (
B_rec), including header metadata, monotonic sequence ID, UTC timestamp, CRC/hash, and index entry. If record sizes vary (for example, compressed physiological waveforms), define both the nominal record size and the worst-case maximum uncompressed record size.Deterministic Pre-Fill Image Construction: Instead of running normal acquisition for weeks, generate a golden pre-fill dataset (or use an authenticated manufacturing/test harness command that invokes the real storage driver) to populate storage up to
N_warn - 2records, whereN_warnis the SRS-specified warning threshold. Verify the pre-fill state via cryptographic hash and record count before starting the live system-level test.Live Acquisition Across the Boundary: Switch the device into its normal production operating mode (with test harnesses disabled) and drive the remaining writes across the warning threshold (
N_warn), the exact full boundary (N_max), and the first write attempted past full (N_max + 1) using simulated sensor inputs or patient simulator waveforms.
Suite A: Synthetic Capacity-Boundary Dataset & Recording States (Editorial Proposal)
The following table defines Suite A, an editorial test-case framework covering the six boundary fill states that system-level verification should exercise. Each team must adapt the exact record counts and byte calculations to its own SRS limits:
| Suite A State ID | Boundary Fill Level | Deterministic Construction Method | Target Records & Metadata Inspected | Proposed Objective Pass Criteria (Tied to SRS) |
|---|---|---|---|---|
| A-01: Below Warning Baseline | N_warn - 1 records (or 1 record below byte warning threshold) | Load golden synthetic pre-fill dataset onto target partition; execute 1 normal live acquisition cycle | Records 1 through N_warn - 1; sequence IDs, timestamps, and per-record CRCs | All N_warn - 1 records readable and valid; zero capacity warnings active; normal acquisition timing within SRS limits |
| A-02: Warning Threshold Crossing | Exactly N_warn records (e.g., 90.0% capacity or specified remaining duration) | From State A-01, trigger 1 live production write to reach N_warn exactly | Record N_warn payload, free-space counter, and system event log entry | Record N_warn committed without error; free-space counter matches computed remainder; low-storage warning triggered per Suite B |
| A-03: Penultimate & Exact Full Boundary | Transition from N_max - 1 to exactly N_max records (100.0% specified capacity) | Advance from N_warn to N_max - 1 via accelerated or batch live writes, then execute final single live write to N_max | Record N_max header, payload, closing checksum, and file-system allocation table | Record N_max is completely written and verifiable; zero byte truncation on the final record; full-capacity state flag asserted |
| A-04: First Write Attempted Past Full | N_max + 1 write attempt (100% + 1 record or waveform block) | With storage at State A-03 (N_max), apply 1 additional live acquisition trigger or continuous waveform frame | Record 1, Record 2, Record N_max, and candidate Record N_max + 1; system fault/crash logs | If Stop policy: write N_max + 1 is cleanly rejected, Record 1..N_max remain bit-identical, no unhandled exception or reboot. If FIFO policy: Record 1 is deleted, Record 2 becomes oldest, and Record N_max + 1 is stored intact |
| A-05: Multi-Cycle Sustained Wrap or Lockout | N_max + K writes (e.g., K = 50 additional writes past full or full ring-buffer lap) | Continue applying K consecutive live writes while storage remains at the 100% boundary | Full ring-buffer index (records K+1 through N_max + K) or locked storage partition; RAM heap/stack usage | Zero memory leaks, pointer wrap errors, or task watchdog resets across K boundary writes; monotonic sequence numbers remain strictly contiguous |
| A-06: Post-Purge / Post-Export Boundary Reset | Transition from N_max back to 0 (full purge) or N_max - M (partial archive delete), followed by new write | Execute authenticated export and space-release procedure per Suite C, then record 2 new live records | Newly written records after purge, sequence counter continuity, and audit trail of deletion event | Free space accurately reclaimed at file-system level; new records commit cleanly; sequence numbering does not collide with prior exported records |
Notice why State A-03 (N_max) and State A-04 (N_max + 1) must be tested as distinct steps. A classic off-by-one defect at this boundary: the last available slot has room for the record header but not for the trailing checksum or file-system journal commit, so record N_max itself is corrupted even though the software intended to stop cleanly at N_max. Testing both the exact boundary write and the first over-boundary write exposes that class of defect directly. It is the storage-level analogue of the loop-coverage criterion in FDA's 2002 GPSV, which asks for zero, one, two, and many iterations including termination boundaries.
To make Suite A reproducible across firmware builds, document the exact construction of the pre-fill image inside your system-level test protocol. Specifically, record the partition geometry, the seed or script version used to synthesize Records 1 through N_warn - 2, and the SHA-256 digest of the pre-filled storage image prior to executing the live boundary writes. Recording the pre-test image hash proves that the partition was genuinely populated at the physical block and file-system index layers before live sensor inputs drove the final transitions across N_warn, N_max, and N_max + 1.
Alert Test Cases: Threshold, Content, and Clearance
When storage approaches and reaches capacity, the user interface is often a primary risk control—informing the patient, nurse, or biomedical technician that data must be offloaded or that recording has stopped. In the June 2023 Device Software Functions Guidance, the SRS FDA describes typically specifies user interaction, error definition and handling, and safety-related requirements derived from a risk assessment. Yet alert testing can easily stop at checking whether a string resource exists in the UI table.
A defensible alert verification suite (Suite B) must test four independent dimensions of the warning lifecycle: threshold accuracy (when the alert triggers), content and priority appropriateness (distinguishing an informational capacity notice from a physiological patient alarm so operators are neither misled nor desensitized), persistence across operating states (ensuring the warning does not vanish while the device is still full), and deterministic clearance (confirming the warning clears if and only if usable storage is actually restored above the hysteresis threshold).
When writing the underlying SRS requirement for the warning threshold, specify the trigger in both physical storage units (record count or available kilobytes/megabytes) and user-actionable operational units (such as remaining hours of continuous waveform capture or remaining spot-check measurements). A bedside nurse or home-use patient cannot translate "4.2 MB remaining" into clinical lead time, whereas an advisory linked to remaining operating capacity directly supports the risk control. In addition, specify a clearance hysteresis band—requiring free space to rise above the trigger point (or requiring an explicit export/purge action) before clearing the advisory—so minor file-system metadata fluctuations do not cause the warning banner to flicker on and off.
| Suite B Case ID | Trigger Condition | Expected UI, Audio/Visual & Log Response | Persistence & Clearance Requirement | Traceability to SRS & Risk Control |
|---|---|---|---|---|
| B-01: Near-Full Warning Threshold Activation | Available storage crosses the SRS warning threshold (e.g., <= 10% free space or <= 24 hours of recording remaining at State A-02) | Displays specified low-storage advisory notice with remaining capacity or time; logs timestamped threshold event; does not mimic a high-priority physiological patient alarm | Advisory remains visible or re-announces per SRS schedule until space is freed above threshold; does not block ongoing acquisition | Traces to SRS user-interaction and error-handling limits; verifies early-warning risk control before data loss occurs |
| B-02: 100% Full Capacity Alert Transition | Storage reaches State A-03 (N_max) or attempts State A-04 (N_max + 1) | Upgrades low-storage advisory to distinct 'Storage Full' status indicating exact active behavior (e.g., 'Memory Full - Export Required' or 'Memory Full - Overwriting Oldest Records') | For Stop/Interlock devices, alert latches until operator exports/frees space; for FIFO devices, status indicator accurately reflects wrap mode | Traces to SRS fault detection and error definition; prevents operator from falsely assuming new study data is being saved |
| B-03: Alert Survival Across Power Cycle & Sleep | While at State A-02 (Near-Full) or State A-03 (Full), cycle device power or transition through standby/sleep mode | Upon reboot or wake, software re-evaluates non-volatile storage occupancy before enabling acquisition and immediately restores the correct warning/full state | A reboot must never clear a latched 'Storage Full' alert while the partition remains at 100% capacity | Connects storage boundary verification with power-interruption state survival requirements |
| B-04: Non-Interference With Active Clinical Alarms | Simulate a physiological patient alarm or hardware safety fault simultaneously with the State A-03 'Storage Full' alert | Clinical safety alarm takes visual and auditory priority per alarm hierarchy; storage alert remains accessible in status queue without masking clinical hazard | Acknowledging or silencing the storage warning must never silence or clear an active physiological or therapy safety alarm | Traces to SRS safety requirements and risk analysis ensuring technical storage notices do not degrade clinical alarm effectiveness |
| B-05: False-Clearance Prevention & True Clearance After Purge | Attempt to dismiss 'Storage Full' banner without freeing space; then export and delete M records to bring free space above clearance threshold | While at 100% capacity, persistent status indicator remains active even if modal popup is acknowledged; once free space exceeds threshold (State A-06), warning clears automatically | Clearance occurs within 1 status-refresh cycle after space verification, with no stale warning icon left on screen | Verifies recovery effectiveness and prevents ghost alerts after valid maintenance |
Case B-03 is especially revealing during system integration testing. Some embedded designs track record counts in volatile RAM and only increment the counter when a new record is written. If the device reboots while storage is 100% full and the startup routine forgets to query actual non-volatile storage occupancy, the UI comes up clean with no warning—only to fail silently on the first clinical measurement. Pairing Case B-03 with your power-recovery verification protocol closes that gap before submission.
Recovery and Export Test Cases: Free Space Without Losing Evidence
FDA's January 2002 GPSV lists "Effectiveness of recovery procedures, including disaster recovery" among the elements system-level software testing addresses, and FDA's June 2023 Device Software Functions Guidance lists "fault detection, tolerance, and recovery characteristics" among what software performance and functional requirements may include. When device storage fills up, recovery is not achieved merely by formatting the flash chip. It is achieved only when recorded clinical evidence is safely transferred (when required by intended use), space is reclaimed without corrupting remaining or subsequent data, and the device returns to normal recording service.
Consider the hazard illustrated by the Norav NR recorder manual (UM_NR_2.9), where, in the multi-patient ECG+ mode, the Overwrite Record command cleans the memory card and erases previously recorded ECG traces to restart recording. In an ambulatory ECG workflow, if a device erased or overwrote prior traces before the clinician exported the completed study, or if a failed export still triggered an automatic post-transfer purge, the diagnostic evidence from the patient's wearing period would be permanently lost. Even on a delete-oldest device like the Livongo blood glucose meter, the manual's promise that past results remain accessible is conditional on the meter uploading, so recovery depends on uploads reaching the account before the oldest onboard results are deleted.
Therefore, Suite C (Recovery and Export Verification) must test the entire chain from data offload through space reclamation and return to service:
| Suite C Case ID | Operational Recovery Scenario | Integrity & Sequence Verification Check | Return-to-Service Requirement | Proposed Objective Pass Criteria (Editorial Proposal) |
|---|---|---|---|---|
| C-01: Full-Capacity Export Before Space Release | With device at 100% capacity (State A-03, N_max records), initiate full data export via cable, removable media, or wireless sync | Compare SHA-256/CRC of all N_max exported records against golden synthetic dataset; verify monotonic sequence IDs 1..N_max and timestamp ordering | Export completes without out-of-memory error even when 0 bytes of user storage remain free on the partition | 100% of N_max records exported bit-intact; export routine does not fail due to attempting to write temporary export staging files to the full partition |
| C-02: Interrupted Export (Cable Disconnect / Link Drop) | At 100% capacity, begin exporting N_max records and physically disconnect cable or drop wireless link at ~50% transfer | Inspect onboard storage records 1..N_max after link interruption; verify that automatic 'delete after export' did NOT fire prematurely | Reconnecting link allows export to resume or restart cleanly from Record 1 without duplicating or skipping records | Zero onboard records deleted or marked purged during failed transfer; subsequent retry exports all N_max records with verified checksums |
| C-03: Concurrent Acquisition During Export (If Supported) | While exporting stored records near capacity, continue applying live sensor inputs if intended use allows simultaneous recording and offload | Verify read/write lock contention does not drop incoming waveform frames or corrupt the exported snapshot | Once export completes and exported records are purged, newly acquired records remain intact in local storage | Zero missed acquisition samples, zero priority-inversion timeouts, and contiguous sequence numbers across the concurrent export window |
| C-04: Explicit Operator Confirmation for Destructive Erase | Invoke a manual card clean / overwrite command (analogous to the Norav ECG+ 'Overwrite Record' command) while unexported data resides in memory | Verify UI presents explicit confirmation prompt stating that existing recorded data will be permanently erased, and logs the operator action | Canceling the prompt leaves all N_max records untouched; confirming the prompt erases user records cleanly while preserving calibration/device config | Single accidental button press cannot destroy stored patient study; post-erase partition passes free-space and calibration-retention check |
| C-05: Wrap & Post-Purge Sequence / Timestamp Continuity | After FIFO wrap (State A-04/A-05) or post-export purge (State A-06), acquire 10 new clinical records and export the combined history | Inspect sequence numbers, UTC/local timestamps, and audit-trail links across the wrap or purge boundary | Device transitions cleanly back to normal recording state; Suite B 'Storage Full' alert clears | No duplicate record IDs, no backward timestamp jumps, and explicit audit-trail record showing when purge or FIFO wrap occurred |
Pay particular attention to Case C-01 and Case C-05. A recurring design trap is an export module that tries to create a temporary ZIP archive, staging file, or SQLite journal on the same storage partition that is already 100% full. When the export routine fails with ENOSPC (No space left on device), the user is trapped: they cannot record new data because storage is full, and they cannot free storage because exporting requires free space. Reserving a dedicated, non-user-accessible staging buffer or streaming exports directly from RAM—and proving it works at exactly 100% user-storage occupancy via Case C-01—prevents a field lockout in which the only way to free space is a destructive erase.
Similarly, Case C-05 requires objective record-level evidence that neither circular wrap nor manual space reclamation introduces silent gaps or duplicate records. To make that proof unambiguous in your test report, verify four record attributes across the boundary: (1) a strictly monotonic 64-bit sequence counter that never resets to zero when the storage ring wraps or purges, (2) unambiguous timestamps (see our guide to verifying device timestamps across daylight-saving transitions), (3) per-record payload checksums (such as CRC-32 or SHA-256) verified after export, and (4) an audit-trail entry recording the exact sequence range removed during any manual purge or automated ring-buffer wrap.
Package the Evidence: SRS, Risk File, and System-Level Protocols
Executing Suites A, B, and C on the bench only helps your regulatory submission and quality audit if the resulting records match FDA and international lifecycle structure. As detailed in our broader guide to medical device software verification vs. validation under FDA and IEC 62304, reviewers look for unbroken traceability from the hazard in the risk file, to the quantitative limit in the SRS, to the system-level test protocol and objective pass/fail report.
1. Premarket Submission Packaging (June 2023 Device Software Functions Guidance)
Under FDA's June 2023 Content of Premarket Submissions for Device Software Functions guidance, the level of test detail submitted in a 510(k), De Novo, or PMA depends on whether the device requires Basic Documentation or Enhanced Documentation:
At both Basic and Enhanced Documentation levels: FDA's Table 1 recommends an SRS (where memory requirements, accepted storage ranges and limits, error handling, and fault-recovery characteristics belong), a risk management file (plan, a risk assessment demonstrating that risks have been appropriately mitigated, and a report), a system and software architecture diagram showing data flow, a summary description of testing at the unit, integration, and system levels, and the system-level test protocol and system-level test report. The guidance describes that protocol as including expected results derived from software requirements, observed results, and pass/fail determination. Because Suites A, B, and C verify observable device-level behavior (recording at capacity, user alerts, and export/recovery), they belong in the system-level verification protocol.
Additional deliverables at the Enhanced Documentation level: When a failure or flaw of a device software function could present a hazardous situation with a probable risk of death or serious injury (assessed before risk controls), FDA recommends adding unit-level and integration-level test protocols and reports and a Software Design Specification (SDS) showing how the design implements the SRS. For storage, that means the unit and integration protocols covering ring-buffer pointer arithmetic, flash error return codes, and file-system-full exception handlers, plus SDS detail on storage partitioning and task isolation. At the Basic level FDA does not recommend submitting the SDS; the sponsor documents that information in the design history file, and FDA may request it during review.
2. Connecting IEC 62304 Software Records to the Device File Under the QMSR
Since February 2, 2026, FDA's amended 21 CFR Part 820 has been in effect as the Quality Management System Regulation (QMSR), which incorporates ISO 13485:2016 (and Clause 3 of ISO 9000:2015) by reference. On the same date FDA stopped using the Quality System Inspection Technique (QSIT) for device inspections. FDA's QMSR page points to design and development requirements under 21 CFR 820.10(c) and ISO 13485 Clause 7.3 (Design and development) and its subclauses. The QMSR preface added to the June 2023 software guidance notes that the QMSR does not use terms such as "Design Controls" and "Design Validation"; their elements now sit in ISO 13485 Clause 7.3. Design verification records must show that design outputs meet design input requirements, with traceability retained in the design and development file.
At the same time, teams structuring their software lifecycle around IEC 62304:2006+AMD1:2015 CSV (the consolidated edition of Medical device software — Software life cycle processes, which carries a 2028 stability date) must account for a critical scope boundary stated in the standard's own abstract: while IEC 62304 defines lifecycle requirements for the development and maintenance of medical device software (whether standalone SaMD or embedded in hardware), IEC 62304 does not cover final validation and release of the medical device itself, even when the device consists entirely of software. As we explain in our IEC 62304 software lifecycle implementation guide, your storage-capacity boundary verification cannot live solely as an isolated software unit test ticket—it must trace upward into the device-level design verification and validation file under ISO 13485 Clause 7.
| Verification Evidence Element | FDA Basic Documentation Submission | FDA Enhanced Documentation Submission | QMSR (ISO 13485 Clause 7) & IEC 62304 File Location |
|---|---|---|---|
| Storage Capacity Limits, Warning Threshold & Boundary Policy | SRS (ranges, limits, memory requirements, error definition/handling) plus the system and software architecture diagram showing the storage data flow | Same as Basic, plus Software Design Specification (SDS) detail on how storage partitioning and task isolation implement the SRS | ISO 13485 Clause 7.3.3 Design Inputs & IEC 62304 Software System Requirements |
| Hazard Analysis of Data Loss, Truncation, or Halted Recording | Submitted in Risk Management File (without unrealistic low-probability discounts) | Risk Management File, with SDS and unit/integration evidence showing how storage risk controls are implemented | ISO 14971 / ISO 13485 Clause 7.1 Risk Management File traced to design controls |
| Unit & Integration Tests (Ring-Buffer Pointers, ENOSPC Return Codes) | Summarized in the testing summary description; full protocols and reports kept in the design and development file | Full Unit & Integration Test Protocols and Reports submitted in premarket package | IEC 62304 Software Unit/Integration Verification records linked to Clause 7.3.6 |
| System-Level Suites A, B, and C (Boundary Fill, Alerts, Export/Recovery) | Full System-Level Test Protocol (expected results, observed results, objective pass/fail) & Report submitted | Full system-level test protocol and report, alongside the unit and integration protocols and reports | ISO 13485 Clause 7.3.6 / 7.3.7 Device Design Verification & Validation File |
Limits of This Test Set and When to Re-Run It
To keep your verification strategy rigorous and audit-ready, document both what this synthetic boundary method proves and where its boundaries lie:
Editorial Proposal vs. Binding Law: FDA guidance documents represent the agency's nonbinding recommendations, and no FDA guidance names a mandatory "storage full" test. Suites A, B, and C are an editorial framework synthesized from FDA's general expectations in the June 2023 software-functions guidance and January 2002 GPSV. Every manufacturer must tailor fill percentages, record sizes, warning lead times, and pass criteria to its specific device classification, clinical risk profile, and intended use.
Synthetic Fill Does Not Replace Long-Duration Soak or Flash Wear Testing: Pre-filling a partition to
N_max - 1deterministically proves logical boundary behavior, UI warning transitions, and export recovery math. However, it does not test multi-month physical flash memory aging, NAND wear-leveling amplification, bad-block remapping under thermal stress, or real-time clock drift over weeks of continuous operation. Where hardware endurance is a risk contributor, pair deterministic boundary tests with hardware accelerated life or soak testing.Single-Device Manual Examples Cannot Be Generalized: The Livongo blood glucose meter manual and Norav Holter recorder manual illustrate two contrasting boundary philosophies in current public labeling. They must never be cited as regulatory precedents allowing another manufacturer to omit risk controls or adopt a 1,000-record limit without device-specific human-factors and clinical risk justification.
When to Re-Run Storage Boundary Verification
Under ISO 13485 Clause 7.3.9 (Control of Design and Development Changes) as incorporated by the FDA QMSR, and under IEC 62304 software maintenance processes, re-execute Suites A, B, and C whenever any of the following engineering or regulatory triggers occur:
Record Schema or Payload Size Changes: Adding a single new telemetry channel, diagnostic metadata field, or cryptographic signature changes
B_rec, shifting the byte alignment ofN_warnandN_maxand potentially re-introducing partial-write truncation at the partition boundary.Non-Volatile Memory Hardware or SOUP File-System Updates: Replacing an EOL flash chip, changing SD card vendors, or upgrading an embedded RTOS file system or SQLite version changes block-erase geometry and
ENOSPCerror-return behavior.Export Transport or Compression Changes: Modifying USB/BLE packet sizes, cloud sync retry logic, or archive compression alters peak RAM and temporary staging space required during Case C-01 and Case C-02.
Standards or Guidance Updates: Re-evaluate your documentation mapping upon any revision to FDA's June 2023 premarket software guidance, updates to FDA's QMSR or CSA guidance lines, or publication/recognition transition of IEC 62304 Edition 2 (following the current consolidated edition
2006+AMD1:2015, which carries a 2028 stability date).