Skip to main content

Required Architecture

This document specifies the required logical architecture for PTI-compatible implementations. Physical deployment may vary; logical boundaries MUST NOT be bypassed.

Layer model

                    ┌──────────────────────┐
│ Consumer clients │
└──────────┬───────────┘

┌──────────────────────────────▼──────────────────────────────┐
│ LOOKUP PLANE (RFC-004, RFC-012) │
│ Search · Generate · Verify · Report cache │
└──────────────────────────────┬──────────────────────────────┘

┌──────────────────────────────▼──────────────────────────────┐
│ PROCESSING PLANE (RFC-005) │
│ Scoring · Signal derivation · Lens refresh · Outcomes │
└──────────────────────────────┬──────────────────────────────┘

┌──────────────────────────────▼──────────────────────────────┐
│ INGEST PLANE (RFC-003) │
│ API · Webhook · CSV · Connector adapters │
└──────────────────────────────┬──────────────────────────────┘

┌──────────────────────────────▼──────────────────────────────┐
│ IDENTITY PLANE (RFC-011) │
│ PTI-ID · Entity binding · Match · Review queue │
└──────────────────────────────┬──────────────────────────────┘

┌──────────────────────────────▼──────────────────────────────┐
│ CONTROL PLANE (RFC-007, RFC-008, RFC-009) │
│ Policy · Consent · Audit · Auth · Privacy · Metering │
└──────────────────────────────┬──────────────────────────────┘

┌──────────▼───────────┐
│ Graph + event store │
└──────────────────────┘

Mandatory service boundaries

ServiceResponsibilityMUST NOT
Ingest gatewayAuth, validation, idempotencyCompute scores
Identity resolverPTI-ID assignmentExpose bulk export API
Graph writerPersist nodes/edgesSkip context checks
Scoring workerDerive signals/outcomesAccept consumer requests
Lookup APIReports + evidenceIngest events
Policy engineEntitlements, consent, purposeStore long-term PII unnecessarily
Audit loggerAppend-only security/privacy eventsAllow tenant cross-read
Signing serviceManifest signaturesHold application session state

Services MAY co-reside in one process in Core deployments if boundaries enforced by module isolation and separate credentials.

Data stores

StoreContentsRequirements
Event storeImmutable trust eventsPer-tenant partition
Graph storeNodes, edges, metadataPoint-in-time queries
Outcome cacheMaterialized scoresKeyed by pti_id + context
Report storeImmutable report + manifestContent-addressed hash
Consent storeConsent recordsFast withdraw propagation
Audit storeLookup and admin eventsWORM or append-only
Credential storeHashed API keys, JWKSEncrypted at rest

Edge deployments MAY use embedded databases for local partition with sync to hub stores.

Network zones

ZoneExposureComponents
PublicInternetLookup API, webhook receivers, verify endpoint
PartnerAllowlistedHigh-volume ingest, CSV upload
InternalPrivateWorkers, graph, scoring
ControlRestrictedPolicy admin, identity review, signing

All zones MUST use TLS for HTTP traffic.

Trust lifecycle wiring

  1. Ingest gateway → policy (context enabled?) → identity (resolve entity) → event store → graph writer
  2. Graph writer → async queue → scoring worker → outcome cache
  3. Lookup API → policy (entitlement, consent) → outcome cache + graph explain → evidence builder → signing service → report store

Federation extension (optional)

┌─────────────┐     mTLS      ┌─────────────┐
│ Operator A │◄────────────►│ Operator B │
│ exchange gw │ packages │ exchange gw │
└─────────────┘ └─────────────┘

Exchange gateway MUST verify signatures before merging foreign packages into lookup responses.

High availability

ProfileLookup availabilityRPO / RTO guidance
CoreBest effortRPO 24h, RTO 8h
Enterprise99.5%RPO 1h, RTO 2h
Government99.9%RPO 15m, RTO 1h

Observability

Implementations SHOULD emit:

  • Ingest acceptance rate by context
  • Scoring lag (ingested_at → outcome refresh)
  • Lookup latency p95 by tier
  • Evidence verification success rate
  • Consent withdraw propagation time

Anti-patterns (non-conformant)

Anti-patternWhy it fails
Monolith consumer ingests via lookup APIViolates RFC-001 role separation
Scores without graph edgesCannot produce RFC-012 evidence
Shared DB row without tenant_idCross-tenant leakage risk
Unsigned PDF reportsNo verification hook
Global context-off flag only in UIMust enforce in ingest gateway