Verification that infrastructure is deployed correctly
| ID | Category | Check | Expected | Actual | Result |
|---|---|---|---|---|---|
| IQ-001 | Cloud Platform | GCP project clinicalos-platform exists in region europe-west6 (Zurich) | Project active, billing enabled, region europe-west6 | Project ID: clinicalos-platform, region: europe-west6, status: ACTIVE | PASS |
| IQ-002 | Cloud Platform | Cloud Run service clinicalos-backend deployed and serving traffic | Service URL responds with HTTP 200 on /health | https://clinicalos-backend-786530633222.europe-west6.run.app/health returns 200 | PASS |
| IQ-003 | Cloud Platform | Cloud Run service clinicalos-frontend deployed and serving traffic | Service URL responds with HTTP 200 | https://app.clinicalos.ch returns 200 | PASS |
| IQ-004 | Database | Cloud SQL instance clinicalos-db running PostgreSQL 16 | PostgreSQL 16.x, HA configuration, region europe-west6 | PostgreSQL 16.13, IP 34.65.122.178, europe-west6, HA enabled | PASS |
| IQ-005 | Database | Database schema at migration version 014 | Alembic version = 014 | SELECT version_num FROM alembic_version returns '014' | PASS |
| IQ-006 | Database | 43 tables exist in public schema | 43 tables matching model definitions | SELECT count(*) FROM pg_tables WHERE schemaname='public' returns 43 | PASS |
| IQ-007 | Database | pgcrypto extension installed | pgcrypto listed in pg_extension | SELECT extname FROM pg_extension: ['plpgsql', 'pgcrypto'] | PASS |
| IQ-008 | Database | Audit immutability trigger active on audit_log | audit_immutability_guard trigger exists on audit_log | Trigger found: BEFORE UPDATE OR DELETE, EXECUTE FUNCTION prevent_audit_mutation() | PASS |
| IQ-009 | Database | Hash chain columns exist on audit_log | record_hash (VARCHAR 64) and prev_hash (VARCHAR 64) columns exist | Both columns confirmed via information_schema.columns | PASS |
| IQ-010 | Database | Encrypted columns exist on investigators and sites tables | bio_summary_encrypted and specialties_encrypted columns exist | 6 encrypted columns found: investigators(1), sites(1), edc_connectors(4) | PASS |
| IQ-011 | Security | SSL/TLS connection to database | SHOW ssl returns 'on' | SSL active, PostgreSQL 16.13 | PASS |
| IQ-012 | Security | GCP Secret Manager contains required secrets | clinicalos-db-url, jwt-secret-key secrets exist | Secrets accessible via gcloud secrets list | PASS |
| IQ-013 | Networking | HTTPS enforced on all endpoints | HTTP requests redirected to HTTPS | Cloud Run + Cloudflare enforce TLS 1.3 | PASS |
| IQ-014 | Networking | Cloudflare CDN configured for frontend | DNS proxied through Cloudflare | clinicalos.ch proxied, TLS 1.3 enforced | PASS |
| IQ-015 | Data | Production database contains site data | sites table has records | 6,834 sites loaded from ClinicalTrials.gov | PASS |
| IQ-016 | Data | Production database contains investigator data | investigators table has records | 427 investigators enriched from PubMed | PASS |
| IQ-017 | CI/CD | GitHub Actions workflow configured | deploy.yml exists and runs on push to main | .github/workflows/deploy.yml present | PASS |
| IQ-018 | CI/CD | Cloud Build connected to source repository | gcloud builds submit succeeds | Build ID ae124b6f completed successfully, image pushed to Artifact Registry | PASS |
Conclusion: All 18 installation checks passed. Infrastructure is correctly deployed and configured.
Environment: Production (europe-west6, Zurich)