9 Architecture Decisions
This section is an index of all Architecture Decision Records (ADRs) for Nebu.
Individual ADR files live in docs/architecture/adr/.
ADR Index
| ADR | Title | Status | Date |
|---|---|---|---|
| ADR-001 | Elixir/OTP as Core Runtime | Accepted | 2026-03-18 |
| ADR-002 | No Redis, No NATS - ETS + pg Process Groups | Accepted | 2026-03-18 |
| ADR-003 | Content-Hash Event IDs (Matrix Room Version 6+) | Accepted | 2026-03-18 |
| ADR-004 | Horde Registry + DynamicSupervisor for Room GenServers | Accepted | 2026-03-18 |
| ADR-005 | gRPC Server-Streaming EventBus + Unary Fallback | Accepted | 2026-03-18 |
| ADR-006 | message_buffer Drain Strategy (Linear MVP, AIMD Phase 2) | Accepted | 2026-03-18 |
| ADR-007 | Ed25519 (Signing) + X25519 (Encryption) - Two Key Pairs per User | Accepted | 2026-03-18 |
| ADR-008 | Node Registration: PSK via Compose Secrets (MVP) → Ephemeral mTLS (Phase 2) | Accepted | 2026-03-18 |
| ADR-009 | OpenAPI Spec-First with oapi-codegen | Accepted | 2026-03-18 |
| ADR-010 | Full-Text Search Strategy | Accepted | 2026-05-08 |
| ADR-011 | Managed E2EE Key Escrow | Proposed | - |
| ADR-012 | Upstream Repo Contains Example-Only Credentials - No Official Deployments | Accepted | 2026-05-04 |
| ADR-013 | MinIO as S3-Compatible Object Store for MVP | Accepted | 2026-05-12 |
| ADR-014 | Deployment Strategy and Infrastructure-as-Code | Accepted | - |
| ADR-015 | OIDC User Directory Integration Strategy (Protocol A + B) | Accepted | 2026-05-16 |
Decision Drivers
All ADRs 001–009 were finalized during the architecture phase (2026-03-18) after evaluation of alternatives. The key drivers were:
- Minimize operational complexity - fewer moving parts means fewer failure modes
- Matrix protocol compatibility - design choices must not create incompatibilities
- GDPR compliance - cryptographic deletion requires a specific key architecture
- Horizontal scalability from day one - Horde and stateless gateway design decisions front-loaded
- Apache 2.0 ecosystem - all dependency choices verified against license compatibility
ADR-010 (FTS strategy) was accepted on 2026-05-08: PostgreSQL native tsvector/tsquery with
a GIN index on the events table (migration 000042, Story 11-1). No external search service
is introduced. See ADR-010 for the full rationale.
ADR-011 (Managed E2EE) is pending because it requires additional investigation and community input before the design can be finalized.
Source: CLAUDE.md, §Resolved Architecture Decisions; _bmad-output/planning-artifacts/architecture.md, §Core Architectural Decisions