Design Decisions
Design Decisions
Current and historical architecture decisions, proposals, and authoring templates.
This section records current architecture decisions and preserves the original design records. Historical records explain what the team decided at the time; they are not automatically a description of the current implementation.
In particular, the accepted 2025 data ADRs describe per-experiment schemas and dual medallion pipelines. Those mechanisms are superseded by the current central centrum decision below.
Current ADRs
- Consolidate experiment data in centrum — replaces per-experiment schemas, pipelines, and provisioning with central experiment-keyed tables and views.
- Replace ts-rest with oRPC — current contract, runtime validation, client, OpenAPI, and REST-compatibility boundary.
- Pin experiments to workbook snapshots — separates mutable authoring from immutable published execution, upgrade, and rollback.
- Execute macros in isolated language sandboxes — current Python, JavaScript, and R execution and security boundary.
- Use an offline-first mobile outbox — current SQLite, retry, MQTT acknowledgement, and offline recovery boundary.
- Replace Docusaurus with Fumadocs — current decision for the documentation application, static hosting, routing, search, API generation, and cutover safety.
Historical records and proposals
- MQTT data-ingestion topic proposal — introduced the versioned experiment ingestion topic that remains represented in
asyncapi.yaml. - Data governance model ADR — accepted in 2025; its per-experiment schemas and dual medallion model are superseded by the central
centrumADR. - Data ingestion architecture ADR — accepted in 2025; its per-experiment pipelines and orchestration are superseded by the central
centrumADR.
Templates
For current contracts use the generated REST API reference and MQTT API reference; for current system boundaries use Architecture & Pipeline.