Decision Log
We document significant architectural decisions as Architecture Decision Records (ADRs). Each ADR captures the context, the options considered, the decision made, and the trade-offs accepted.ADR-001: Smithy as API IDL
Why we chose Smithy over OpenAPI-first or hand-written contracts as the single source of truth.
ADR-002: Rust + Actix-web
Why Rust over Go/Node for the backend, and why Actix-web + Diesel over Axum or SQLx.
ADR-003: JWT Auth Design
Platform-service-account token issuance, stateless app JWTs (RS256), and Keycloak OIDC for admin/dashboard actors.
ADR-004: Provider-Keyed Consultation Messages
Per-provider chat message contracts via a discriminated union. Superseded by ADR-005 for the wire shape.
ADR-005: Neutral Consultation Message Shape
Replace the per-provider message union with one neutral wire shape we own; adapters map upstream messages into it.