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

ADRTitleStatusDate
ADR-001Elixir/OTP as Core RuntimeAccepted2026-03-18
ADR-002No Redis, No NATS - ETS + pg Process GroupsAccepted2026-03-18
ADR-003Content-Hash Event IDs (Matrix Room Version 6+)Accepted2026-03-18
ADR-004Horde Registry + DynamicSupervisor for Room GenServersAccepted2026-03-18
ADR-005gRPC Server-Streaming EventBus + Unary FallbackAccepted2026-03-18
ADR-006message_buffer Drain Strategy (Linear MVP, AIMD Phase 2)Accepted2026-03-18
ADR-007Ed25519 (Signing) + X25519 (Encryption) - Two Key Pairs per UserAccepted2026-03-18
ADR-008Node Registration: PSK via Compose Secrets (MVP) → Ephemeral mTLS (Phase 2)Accepted2026-03-18
ADR-009OpenAPI Spec-First with oapi-codegenAccepted2026-03-18
ADR-010Full-Text Search StrategyAccepted2026-05-08
ADR-011Managed E2EE Key EscrowProposed-
ADR-012Upstream Repo Contains Example-Only Credentials - No Official DeploymentsAccepted2026-05-04
ADR-013MinIO as S3-Compatible Object Store for MVPAccepted2026-05-12
ADR-014Deployment Strategy and Infrastructure-as-CodeAccepted-
ADR-015OIDC User Directory Integration Strategy (Protocol A + B)Accepted2026-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:

  1. Minimize operational complexity - fewer moving parts means fewer failure modes
  2. Matrix protocol compatibility - design choices must not create incompatibilities
  3. GDPR compliance - cryptographic deletion requires a specific key architecture
  4. Horizontal scalability from day one - Horde and stateless gateway design decisions front-loaded
  5. 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