Skip to content

Document 04 — FDA CSA Functional Risk Assessment (FRA)

Document ID: FRA-GXPHISTORIAN-2026-004 | Generated (UTC): 2026-10-17T20:21:45Z | Methodology: ISPE GAMP 5 & FDA Computer Software Assurance (CSA)

1. Functional Risk Assessment Matrix

URS IDFailure Mode / GxP HazardFMEA ScoreCSA Risk ClassRequired Testing RigorTechnical Control & Verification Reference
URS-001Unauthorized network access using default vendor credentialsS=3, O=1, D=1MediumAutomated IQ VerificationNon-default secrets in .env verified by IQ test_iq_01
URS-002Missing database extensions or corrupted control plane schemaS=3, O=1, D=1MediumAutomated IQ VerificationAutomated DDL init script + IQ schema inspection test_iq_02
URS-003Uncompressed storage exhaustion or lossy float precision lossS=2, O=1, D=1LowAutomated IQ VerificationLossless Gorilla/DoubleDelta codecs verified via system.columns in test_iq_03
URS-004Stale or unmapped ISA-95 asset path in analytical queriesS=3, O=2, D=1MediumAutomated IQ VerificationClickHouse FLAT dictionary with 5-15s refresh verified in test_iq_04
URS-005Telemetry loss during temporary ClickHouse or network outageS=4, O=2, D=1HighScripted OQ / IQ VerificationTelegraf disk WAL buffer (/var/lib/telegraf/buffer) + ExcDev/ExcMax verified in test_iq_05
URS-006Unattributed modification of GxP tag limits or Event FramesS=5, O=2, D=1HighScripted OQ (Negative & Positive Testing)PL/pgSQL fn_enforce_part11_audit() blocks mutations lacking actor_id/change_reason (test_oq_01)
URS-007Malicious DBA or superuser deletion/alteration of audit trailS=5, O=1, D=1HighScripted OQ (Adversarial Tamper Challenge)BEFORE UPDATE/DELETE/TRUNCATE WORM trigger fn_prevent_audit_tampering() (test_oq_02)
URS-008Spoofed or unauthorized electronic signature on Batch Event FrameS=5, O=2, D=1HighScripted OQ (Negative Security Testing)pgcrypto bcrypt password verification returns HTTP 401 on invalid password (test_oq_03)
URS-009Detached or repudiated electronic signature on batch releaseS=5, O=1, D=1HighScripted OQHMAC-SHA256 signature binding over (event_id, user_id, meaning, signed_at) (test_oq_04)
URS-010Undetected offline tampering of historical audit trail rowsS=5, O=1, D=1HighScripted OQContinuous SHA-256 hash chain from GENESIS_0000000000000000 verified via API (test_oq_05)
URS-011Protocol silo dropping OPC DA, BACnet/IP, S7, or OPC UA tagsS=3, O=2, D=1MediumAutomated OQ VerificationUnified multi-protocol collector verified across tags 101, 102, 103, 301, 401 (test_oq_06)
URS-012Broken sensor spike (quality=0, val=9999.0) corrupting batch CQA averagesS=5, O=3, D=1HighScripted OQ (Fault Injection Challenge)Mandatory WHERE quality >= 192 filter in mv_sensor_rollup_1m verified by fault injection (test_oq_07)
URS-013Linear interpolation creating invalid fractional states (1.5) on discrete valve/agitator tagsS=4, O=2, D=1HighScripted OQ (Mathematical Boundary Verification)Metadata-driven LOCF step vs. LINEAR interpolation in /api/v1/datalink/sampled (test_oq_08)
URS-014Visual trend downsampling hiding brief critical thermal excursion spikesS=4, O=2, D=1MediumScripted OQClickHouse largestTriangleThreeBuckets(LTTB) preserves exact local peaks (test_oq_09)
URS-015Corrupted or incomplete batch telemetry export to enterprise data lakehouseS=4, O=1, D=1HighScripted OQPyArrow Snappy Parquet export verified for 100% row/column fidelity (test_oq_10)