CSV · Annex 11 · Part 11
Sign in →

Cleanroom Tracker · Unit II · Baddi

Computer System
Validation

Environmental monitoring data feeds batch release decisions — this system has to be provably validated before it's trusted for GMP records. This page tracks that work as it happens.

7 CSV stagesGAMP 5 · Category 4/5Risk-based testingAnnex 11 + Part 11121 automated tests

Why it matters

EM data drives batch release. A software defect here is a product-quality risk, not just a bug.

What's tested

Every requirement, weighted by risk — audit trail and timestamps get the deepest scrutiny.

What ships

A signed Validation Summary Report stating the system is fit for its intended use.

01 — Overview

Why this exists

Cleanroom Tracker is a GxP system. Before its records can be trusted for GMP purposes, the software itself has to be validated — proof, on paper, that it does what it claims and can't be quietly wrong.

Two regulations set the bar: EU GMP Annex 11 (Computerised Systems) and 21 CFR Part 11 (Electronic Records; Electronic Signatures). Together they require a documented, risk-based validation exercise — not just working software, but evidence that it works, kept on file.

The system now spans two units and nine facilities — Unit I (Panchkula: GF-IC, GF-FILL, FF-QCM, FF-SOL) and Unit II (Baddi: A, B, CD, F, GH) — each with its own digital twin, but sharing one codebase, one RBAC model, and one audit trail mechanism. Validation scope covers the shared platform; facility-specific twin geometry is reviewed separately at /twin-review before a new facility goes live for round planning.

Computer System Validation (CSV)

The overall exercise: prove the system does what it's specified to do, consistently, and that any failure mode is understood and acceptable.

IQ / OQ / PQ

The three qualification stages inside CSV — is it installed correctly, does it function correctly, does it hold up under real use.

02 — Status

Where validation stands today

Seven stages, run in order. Nothing below is formally complete yet — this page updates as each stage is executed and signed off.

Validation Plan

Scope + approach

URS

What it must do

Risk Assessment

Where to look hard

IQ

Environment is right

OQ

Functions work

PQ

Holds up in real use

VSR

QA sign-off

Reading this page

Every stage here becomes a real document (Validation Plan, URS, Risk Assessment, IQ/OQ/PQ protocols, Validation Summary Report). This page is the plain-language summary — the underlying paperwork is tracked in the build log alongside the code. A growing automated test suite (121 tests as of this writing) already covers much of what OQ will formally assert — see §6.

03 — Approach

Risk-based, not exhaustive

Not every feature carries the same risk if it breaks. Testing depth follows GAMP 5's risk-based model — dig deep where a defect could cost data integrity or product quality, test lighter where it can't.

High risk — deep testing

  • Audit trail immutability
  • T1 / Place All / Retrieve All timestamps
  • 120h incubation gate + early-override deviations
  • Checked-round immutability
  • Exposure duration calculations
  • PDF record accuracy
  • Access-control boundaries between roles and facilities

Lower risk — lighter testing

  • Cosmetic UI, branding, and layout
  • PWA / offline behaviour
  • Ambient audio cues (opt-in, non-GMP)
  • Digital-twin visual fidelity (reviewed separately at /twin-review)

04 — Requirements

What the system has to do

The User Requirements Specification (URS) is the numbered source of truth everything else validates against. It covers seven areas:

Access control

Operator, Checker, and Admin see and can do only what their role — and assigned facility — allows.

Round lifecycle

Plan → Start T1 → Place All → Retrieve All → Incubation (120h gate) → Checked, in that order.

Plate mapping

EM locations are pinned to true geometry per facility, and the layout can be frozen.

Audit trail

Every state change is logged with who, what, and when — permanently, and attributed only from the server session.

Chain of custody

PDF records show every lifecycle step attributed to a real, authenticated identity.

Guardrails

Early placement and early colony-count entry are blocked unless an audit-logged deviation reason is given.

Multi-facility scope

Unit I (GF-IC/GF-FILL/FF-QCM/FF-SOL) and Unit II (A/B/CD/F/GH) share one platform; deployments can be scoped to a single unit.

05 — Risk assessment

What could actually go wrong

A simple FMEA-style question drives the whole exercise: if this breaks, does it put product quality, patient safety, or data integrity at risk?

Anything that touches an exposure timestamp, an audit entry, or a printed GMP record sits at the top of the list. Anything that's purely visual — spacing, colour, animation — sits at the bottom. The Risk Assessment document formalises this into a scored table that the OQ test scripts are built from directly.

06 — Qualification

IQ, OQ, PQ

Three stages, each proving a different thing. All three have to pass before the system is considered validated.

Installation

IQ

The environment the system runs in is correct and controlled.

  • Deployment config, versions pinned
  • Environment variables correct, incl. ACTIVE_UNIT scoping
  • HTTPS enforced, backups configured
  • Production access is restricted

Operational

OQ

Every function works as specified — including what should fail.

  • RBAC enforced per role and facility
  • 120h gate + checker immutability hold
  • Guardrails block bad inputs
  • PDF reports match source data

Performance

PQ

It holds up under real operating conditions, not just test scripts.

  • Live rounds run across shifts and facilities
  • Multiple real operators
  • Audit trail integrity under real use
  • QA sign-off that it meets real needs

121 automated tests, 25 files

The codebase already carries a real Vitest suite covering the round state machine, the 120h incubation boundary, checker-immutability rejection, session-only attribution, seed-user parsing, and twin-manifest correctness. This isn't a substitute for formally executed, signed OQ scripts — but it's continuously-run regression coverage that OQ can build directly on top of, and it already catches the exact failure modes OQ will be scripted to check.

07 — Part 11 / Annex 11

The controls that actually matter

Beyond functional testing, these controls are checked directly against regulatory text — including two open findings worth tracking as their own action items.

Audit trail

Computer-generated, timestamped, independent of the operator, and provably not alterable. Attribution is now resolved server-side from the session only — a client can no longer supply its own name for the record.

Checker immutability

Once a round is marked Checked, the API rejects any further edit to colony counts — verified in code and by direct testing, not just by UI convention.

Chain of custody

Every round PDF lists each lifecycle step (Place, Retrieve, Incubate, Enter Results, Check) with a real name, role, and timestamp — stronger provenance than a single pre-printed signature.

ALCOA+

Data is Attributable, Legible, Contemporaneous, Original, Accurate, Complete, Consistent, Enduring, and Available.

Change control

Every future release to the validated system gets an impact assessment before it goes live.

Periodic review

The system is periodically re-confirmed to still be in its validated state.

Open finding — e-signatures

Part 11 requires an e-signature to be a real action taken at the moment of signing — not just a name printed on a document. The PDF now shows a full chain-of-custody block (a real improvement over the old single pre-printed signature), but none of those steps is itself a captured signing event — no re-authentication, no explicit "I attest this is correct" confirmation. QA needs to decide whether chain-of-custody attribution is sufficient, or whether marking a round Checked needs an explicit re-auth step logged as its own audit entry.Needs QA decision

Open finding — checking a round isn't role-restricted

Any authenticated user — Operator included — can click Mark checked once the incubation gate and colony counts are satisfied; the API endpoint accepts the request from any signed-in session, not just Checker/Admin. In practice this means the system doesn't enforce segregation of duties between the person running a round and the person checking it — that has to be an SOP control today, not a system one.Needs QA decision

Open finding — master-data APIs trust the session, not the role

The nav hides Check and Setup from Operators, and the Setup page itself redirects non-Checker/Admin sessions away. But the underlying master-data API (rooms, EM locations, media batches, process offsets, schedules) only requires some valid session — it doesn't re-check role. User-account management is the one exception, correctly locked to Admin at the API layer. This is a defense-in-depth gap: today it's UI-enforced, not API-enforced, for everything except accounts.Needs remediation or accepted risk

08 — Evidence

Not theoretical — captured from the live app

These screenshots come from a real, scripted walkthrough of the actual application — a round planned, started, exposed, retrieved, incubated, counted, and checked end to end — not mockups. Each one is objective evidence for a specific control above.

Public docs, gated app

Public docs, gated app

The guide and this validation page are reachable without signing in — everything else requires authentication. Facility badges (A, B, CD, F, GH, GF-IC, GF-FILL, FF-QCM, FF-SOL) confirm the multi-facility scope.

Unit-scoped deployment

Unit-scoped deployment

The same login, run with ACTIVE_UNIT=U1 — deployment shows only Unit I · Panchkula and its four area badges, confirming IQ-relevant environment scoping works.

Facility switcher

Facility switcher

Facilities are grouped by unit. Switching facility does not require signing out — the session's access boundary is enforced underneath, not just the UI list.

T1 timestamp captured

T1 timestamp captured

Starting a round records a real system-generated timestamp — not operator-entered, not editable.

120h gate blocks early entry

120h gate blocks early entry

Colony counts can't be entered before 120h post-incubation unless a deviation reason is given — and that reason is what unlocks the fields, not a UI toggle.

Counts entered, gate satisfied

Counts entered, gate satisfied

Once the gate opens, per-plate bacterial/fungal counts are entered and saved, attributed to the real signed-in user ('by Micro Admin').

Checked — and now immutable

Checked — and now immutable

Full round timeline: T1, Place All override, Retrieve All, Incubator in, Results, Checked — every stage timestamped and attributed. Count fields are visibly disabled after check.

GMP PDF — chain of custody

GMP PDF — chain of custody

The exported record for this exact round, including the 5-step chain-of-custody block described in §7 — the concrete artifact behind the open e-signature finding.

Operator — no facility, no Check/Setup

Operator — no facility, no Check/Setup

A newly created Operator sees 'No facility assigned' until an Admin assigns one, and the nav never shows Check or Setup for this role.

Checker — same rail as Admin

Checker — same rail as Admin

Checkers get the full nav including Setup, matching what §7's master-data finding describes — Setup access isn't Admin-exclusive by design.

Setup — master data

Setup — master data

Rooms, EM locations, people, media batches, process timings — the configuration every round and every twin depends on.

Where these live

This is a representative sample, not the full evidence pack. The complete set — one capture per OQ test case — will be attached to the executed protocols themselves, not just shown here.

In progress

Validated once, trusted every time after.

This page will track real status as each stage is executed and signed off. Until then, treat every stage above as not yet started, and the three open findings in §7 as live action items.

Read the user guide →