Skip to main content
CognitaGRC
PlatformPricingDocsTrust
Sign inOpen product →
Cognita

The intelligence layer for AI compliance. Built for the post-EU-AI-Act world.

ISO 42001EU AI ActNIST AI RMF

Product

PricingTrust CenterDocumentation

Frameworks

ISO/IEC 42001EU AI ActNIST AI RMF

Resources

Product demoDocsTrustSecurity

Company

SecurityPrivacyContact
© 2026 Cognita, Inc. · cognitagrc.ioChecking status…
DOCS
QuickstartArchitectureConnectorsAI Impact AssessmentsEvidence ledgerAuditor sessionsAPI referenceSelf-hosting
Reference
Security policyTrust center
REFERENCE ARCHITECTURE

The code behind audit-grade observability

Each primitive in the architecture diagram maps to a concrete module in the Cognita codebase. Analyst reviewers, customer platform engineers, and external auditors can trace any marketing claim to the file that implements it.

1

Evidence row + chain link

lib/persisted-ledger.ts

Every state-changing route fires recordAuditLog() or recordEvidence(). Both append a row to audit_log (Postgres) with hash = SHA-256(canonicalJSON(payload) + prevHash + signature). Chain integrity is intrinsic — a missing or modified row breaks the next row's hash.

WS7 audit-log coverage gate (99 mutating routes, 100% covered via scripts/audit-log-lint.ts)

View source →
2

Object Passport (source badge)

lib/source-badge.ts

Every governed object (model, AIIA, policy, attestation, finding) carries a sourceBadge JSON field with a 5-type provenance taxonomy: human / ai / referential / calculated / imported. CHECK constraint in migration 0018 enforces the shape at the database layer.

Provenance shape enforced by Zod validators per object type

View source →
3

Merkle anchoring (hourly)

inngest/functions.ts:merkleAnchorHourly + lib/ledger.ts:anchorSegment

Hourly Inngest cron drains the audit_log's unanchored entries, computes a Merkle tree over the entry hashes, and writes the segment root to the configured anchor backend. Idempotent — re-runs are safe; markAnchored() locks in the receipt.

View source →
4

S3 Object Lock backend

lib/anchor/s3-object-lock.ts

Anchor receipt = AWS PutObject response on a bucket configured with Object Lock COMPLIANCE-mode retention (default 2557 days = 7 years). Once written, neither AWS console users nor IAM principals (including root) can modify or delete the object until retention expires. The receipt is the external attestation that the segment existed at the recorded timestamp.

Bucket configuration: versioning ON · Object Lock ON · COMPLIANCE mode · cross-region replication for DR

View source →
5

Bundle export

lib/export-bundle.ts + app/api/audit/export/route.ts

Export route assembles chain.json + anchor.json + verify-ledger.mjs (the offline verifier) + manifest.json (per-file SHA-256s) into a signed ZIP. Phase-2 added an aiia-summary.json extras file with per-model AIIA posture so external auditors get the AIMS state without separately requesting PDFs.

View source →
6

Public verifier

app/api/v1/audit-log/verify/route.ts

POST {entries, anchor} → returns ok=true with the recomputed Merkle root, or ok=false with the precise tamper diff (chain_break / merkle_mismatch / count_mismatch / firstId_mismatch). No auth, no tenant access — by design. The bundled verify-ledger.mjs CLI implements the same algorithm offline.

Rate-limited at 30 req/min per IP via lib/rate-limit.ts

View source →
7

Counter-signature (AuditorCredential)

prisma/schema.prisma:AuditorCredential + app/(marketing)/credentials

Phase-1 ships the productized counter-signature. Each signed deliverable creates an auditor_credentials row carrying accreditation_tier=IAF-MLA (the moat — portable across CBs) + cb_anchor (interchangeable). document_hash + signature chain into the same persisted-ledger evidence stream.

View source →
8

60-day audit-pass guarantee

prisma/schema.prisma:AuditPassGuarantee + inngest/functions.ts:auditPassRefundDue

Bundle / Certification purchases create an audit_pass_guarantees row. Daily cron sweep at 14:00 UTC calls list_pending_audit_pass_due() SECURITY DEFINER helper; for each PENDING row whose firing_by has elapsed, audit-logs audit_pass.refund_due. External audit verification stays human — we never auto-refund.

RELATED SURFACES
  • Whitepaper — the why (regulatory framing under EU AI Act Article 72)
  • 15-min demo — three artifacts in JSON form
  • Live verifier — GET returns the verifier metadata
  • OpenAPI spec — every endpoint with auth + scope
  • Red-team series — commissioned reconstructions in production
  • IAF-MLA framing — why the credential is the moat, not the CB
See V-CAIR pricing →
Reference Architecture — Cognita audit-grade evidence chain · Cognita GRC