Skip to content

Document 02 — User Requirements Specification (URS)

Document ID: URS-GXPHISTORIAN-2026-002 | Generated (UTC): 2026-10-17T20:21:45Z | Total Requirements: 15

1. Formal User Requirements Catalog (URS-001 to URS-015)

URS IDRequirement Title & Operational StatementGxP RiskALCOA+ AttributesRegulation RefAcceptance Criteria (FRS)
URS-001Multi-Service Container Infrastructure & Non-Default GxP Security Credentials
The system shall deploy isolated PostgreSQL Control Plane, ClickHouse Telemetry Archive, Edge Collector, FastAPI Control Plane, and Grafana HMI services using non-default authenticated credentials.
MediumAttributable, Contemporaneous21 CFR §11.10(d), EU GMP Annex 11 §12FRS-INFRA-001: All database, API, and HMI endpoints enforce non-default credentials configured via environment variables and pass readiness health checks.
URS-002PostgreSQL 16 Control Plane Extensions & Core GxP Schema Qualification
The PostgreSQL Control Plane shall enable ltree, btree_gist, and pgcrypto extensions and provision tables for asset_templates, assets, tags, event_frames, users, and part11_audit_log.
MediumLegible, Enduring21 CFR §11.10(a), GAMP 5 Appendix M4FRS-PG-002: PostgreSQL 16 initializes ltree, btree_gist, and pgcrypto extensions, GiST hierarchy indexes, and all 6 required GxP tables.
URS-003ClickHouse Lossless Time-Series Compression Codecs Verification
The ClickHouse Telemetry Archive shall store high-frequency sensor data using lossless Delta, DoubleDelta, Gorilla, and T64 codecs layered with ZSTD(1).
LowOriginal, Accurate, Enduring21 CFR §11.10(b), EU GMP Annex 11 §7.1FRS-CH-003: Table pi_historian.sensor_data enforces CODEC(Delta, ZSTD(1)) on tag_id, CODEC(DoubleDelta, ZSTD(1)) on ts, CODEC(Gorilla, ZSTD(1)) on val, and CODEC(T64, ZSTD(1)) on quality and status_code.
URS-004ISA-95 ltree Asset Hierarchy & ClickHouse In-Memory Dictionary Synchronization
The system shall synchronize ISA-95 hierarchical asset paths and tag metadata from PostgreSQL into ClickHouse via an in-memory FLAT dictionary.
MediumLegible, ConsistentISA-95, 21 CFR §11.10(a)FRS-DICT-004: ClickHouse dictionary pi_historian.pg_asset_tags resolves all seeded GxP tags and their ISA-95 asset_path strings from PostgreSQL v_clickhouse_tag_dict.
URS-005Stage 1 Edge Exception/Deadband Filtering & Disk WAL Store-and-Forward Buffer
The Edge Collector shall perform Stage 1 Exception/Deadband filtering (ExcDev and ExcMax) and persist outbound batches in a disk-backed Write-Ahead Log (WAL) buffer.
HighComplete, Original, AvailableALCOA+ (Complete, Original), EU GMP Annex 11 §7FRS-EDGE-005: Telegraf edge-collector configures buffer_strategy=‘disk’ at /var/lib/telegraf/buffer and applies ExcDev/ExcMax deadband filtering accurately.
URS-00621 CFR Part 11 Mandatory Attribution Context Enforcement
All INSERT, UPDATE, and DELETE operations on GxP configuration and batch Event Frame tables shall require authenticated actor_id and change_reason context or be rejected.
HighAttributable, Contemporaneous21 CFR §11.10(e), ALCOA+ (Attributable)FRS-P11-006: PL/pgSQL trigger fn_enforce_part11_audit() raises ‘21 CFR Part 11 Violation: app.actor_id and app.change_reason are mandatory’ when session context is missing.
URS-00721 CFR Part 11 §11.10(e) WORM Audit Trail Immutability
The computer-generated, time-stamped audit trail (part11_audit_log) shall be strictly append-only (Write-Once-Read-Many) and block UPDATE, DELETE, and TRUNCATE operations.
HighOriginal, Enduring, Complete21 CFR §11.10(e), EU GMP Annex 11 §9FRS-P11-007: PL/pgSQL trigger fn_prevent_audit_tampering() unconditionally raises ‘21 CFR Part 11 WORM Violation: Audit trail records are immutable’ on UPDATE, DELETE, or TRUNCATE.
URS-00821 CFR Part 11 §11.200 Electronic Signature Rejection of Unauthorized Credentials
The system shall reject electronic signature attempts with invalid user IDs, wrong passwords, or missing change reasons.
HighAttributable, Accurate21 CFR §11.10(d), §11.200(a)FRS-P11-008: POST /api/v1/event-frames/{event_id}/sign verifies password against pgcrypto bcrypt hash and returns HTTP 401 on invalid credentials without altering the record.
URS-00921 CFR Part 11 §11.50 & §11.70 Electronic Signature Manifestation & HMAC Binding
Signed Event Frames shall record the signer’s user ID, timestamp, signature meaning, and cryptographic HMAC-SHA256 signature hash linked to the audit trail.
HighAttributable, Legible, Enduring21 CFR §11.50, §11.70, §11.200FRS-P11-009: POST /api/v1/event-frames/{event_id}/sign authenticates qa_approver_01, binds HMAC-SHA256 over (event_id, user_id, signature_meaning, signed_at), and logs to part11_audit_log.
URS-01021 CFR Part 11 Cryptographic SHA-256 Audit Hash-Chain Verification
Every audit trail entry shall chain the previous record’s SHA-256 hash from GENESIS_0000000000000000, and the API shall verify end-to-end cryptographic integrity.
HighOriginal, Accurate, Enduring21 CFR §11.10(e), ALCOA+ (Enduring, Accurate)FRS-P11-010: GET /api/v1/audit-trail/verify recomputes the SHA-256 hash chain across all part11_audit_log records and confirms chain_valid == true.
URS-011Multi-Protocol Telemetry Ingestion (OPC UA, BACnet/IP, Siemens S7, Legacy OPC DA)
The historian shall ingest and normalize real-time telemetry across OPC UA, BACnet/IP, Siemens S7, and legacy Windows OPC DA bridges into ClickHouse.
MediumContemporaneous, Original21 CFR §211.68, ALCOA+ (Contemporaneous)FRS-HIST-011: All 5 multi-protocol tags (101, 102, 103, 301, 401) plus HTTP /ingest batches are archived in pi_historian.sensor_data with UTC millisecond timestamps.
URS-012Bad OPC Signal Quality (quality < 192) Exclusion from GMP Rollups
Telemetry points flagged with Bad (0) or Uncertain (64) OPC quality codes shall be stored in raw history for diagnostics but strictly excluded from 1-minute GMP rollups.
HighAccurate, Consistent21 CFR §211.188, ALCOA+ (Accurate)FRS-HIST-012: Materialized view pi_historian.mv_sensor_rollup_1m filters WHERE quality >= 192, excluding injected quality=0 fault spikes (e.g., val=9999.0) from min/max/avg rollups.
URS-013PI DataLink Parity: Linear Interpolation vs. Discrete Step (LOCF) Sampling
The sampled data endpoint shall linearly interpolate continuous analog tags (is_step_tag=False) and apply Last Observation Carried Forward (LOCF) to discrete step tags (is_step_tag=True).
HighAccurate, Complete21 CFR §11.10(b), GAMP 5FRS-DL-013: GET /api/v1/datalink/sampled computes exact linear midpoints for continuous tags and strict integer LOCF states for step tags without fractional artifacts.
URS-014PI Vision PlotValues Parity: LTTB Visual Downsampling Peak Preservation
Visual trend downsampling shall use ClickHouse largestTriangleThreeBuckets (LTTB) to preserve exact local excursion peaks and valleys.
MediumAccurate, Legible21 CFR §11.10(b)FRS-LTTB-014: GET /api/v1/trends/plot-values preserves the exact timestamp and magnitude of a synthetic spike when downsampling high-density telemetry.
URS-015ISA-88 Event Frame Excursion Capture & Zero-ETL Apache Parquet Lakehouse Export
The system shall automatically detect parameter excursions into Event Frames with summary KPIs and export enriched telemetry to Apache Parquet files with 100% fidelity.
HighAvailable, Enduring, Complete21 CFR §11.10(b), ISA-88FRS-LAKE-015: POST /api/v1/event-frames/evaluate captures excursion metrics in PostgreSQL and POST /api/v1/lakehouse/export-parquet writes a valid Snappy-compressed Parquet file verified via pyarrow.