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¶
- Create the file
docs/es/adr/ADR-{NNN}-{slug}.md - Use the standard format: Context, Decision, Consequences, Alternatives
- Update this page with the new ADR
- Open an MR for discussion before marking it as "Accepted"