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.

Decision Summary Table


How We Make Decisions