Skip to content

Architecture Decision Records (ADRs)

ADRs (Architecture Decision Records) document important technical decisions: what was decided, why, and which alternatives were discarded.

The full files are in docs/es/adr/.

Index

ADR Title Status
ADR-001 Microservices architecture with FastAPI Accepted
ADR-002 Multi-tenancy with schema isolation in PostgreSQL Accepted
ADR-003 Direct asyncpg instead of SQLAlchemy ORM Accepted
ADR-005 Batch operations API Accepted
ADR-006 Configurable AI provider (multi-provider, global) for the knowledge layer Proposed
ADR-007 Document metadata with template-validated JSONB Proposed
ADR-008 Immutable audit with hash-chained audit_log Proposed
ADR-009 Flow history as append-only events + projection Proposed
ADR-010 Shared library orpycamcp_common (audit and events) Accepted
ADR-011 SvelteKit frontend (SSR) as the presentation app in the monorepo Proposed
ADR-012 Per-tenant migrations (runner global/ + tenant/) Accepted
ADR-013 Authorization resolved in the DB per request (Keycloak authenticates, the DB authorizes) Accepted
ADR-014 Search with PostgreSQL FTS (tsvector + pg_trgm + JSONB), not Elasticsearch Accepted
ADR-015 TRD/CCD model: series↔subseries hierarchy, two-phase retention, AGN disposition (CT/E/S/M) Accepted
ADR-016 Native electronic signature (SHA-256 hash + identity + timestamp), PKI/PDF deferred Accepted
ADR-017 Physical archive: location (recursive address) ≠ conservation unit (mobile container), ArchivesSpace pattern Accepted
ADR-018 Outgoing interoperability via signed HTTP webhooks (HMAC-SHA256) over the event bus, subscribed per tenant Accepted
ADR-019 MCP layer as a thin gateway-client facade (declarative tool catalog, no logic or DB) Accepted
ADR-020 Orpyca design system (Sass tokens + custom properties, per-tenant branding) and conversational assistant (text/voice) as a translator to MCP tools with local opt-in AI Proposed
ADR-021 PEL reclamation and per-consumer-group dead-letter in Redis Streams (signature/workflow/notification-service) Accepted
ADR-022 Electronic index v2 profile — RT-15 metadata per document (format, size, foliation) Accepted
ADR-023 WORM / Object-Lock for preservation (MinIO) and the AIP/PREMIS roadmap Accepted (Increment A)

How to propose a new ADR

  1. Create the file docs/es/adr/ADR-{NNN}-{slug}.md
  2. Use the standard format: Context, Decision, Consequences, Alternatives
  3. Update this page with the new ADR
  4. Open an MR for discussion before marking it as "Accepted"