Architecture Decision Records

This section documents all Architecture Decision Records (ADRs) for the OpenTabletop project, following the MADR 4.0.0 format. ADRs are numbered sequentially (never reused or reordered) but grouped by domain below for discoverability.

Governance & Process

Decisions about how the project operates: format standards, licensing, versioning, contribution workflows, and documentation tooling.

ADRTitleStatus
ADR-0001Use MADR 4.0.0 for Architecture Decision RecordsAccepted
ADR-0003Dual Licensing – Apache 2.0 for Code, CC-BY-4.0 for SpecAccepted
ADR-0004RFC-Based Governance with Steering Committee TransitionAccepted
ADR-0005Semantic Versioning for Spec and ImplementationsAccepted
ADR-0030Structured Data Contributions via Issue TemplatesAccepted
ADR-0031RFC Changes Require Reference ImplementationSuperseded by ADR-0045
ADR-0033mdbook with Mermaid for DocumentationAccepted
ADR-0045Specification-Only RepositoryAccepted

Core Data Model

The foundational entity model: game entity design, relationships, taxonomy, player count polls, playtime modeling, editions, and classification criteria.

ADRTitleStatus
ADR-0006Unified Game Entity with Type DiscriminatorAccepted
ADR-0007Combinatorial Expansion Property ModelAccepted
ADR-0008UUIDv7 Primary Keys with URL Slugs and BGG Cross-ReferencesAccepted
ADR-0009Controlled Vocabulary for TaxonomyAccepted
ADR-0010Structured Per-Player-Count Polling DataAccepted
ADR-0011Typed Game Relationships with JSONB MetadataAccepted
ADR-0014Dual Playtime Model – Publisher-Stated and Community-ReportedAccepted
ADR-0034Experience-Bucketed Playtime AdjustmentProposed
ADR-0035Edition-Level Property DeltasAccepted
ADR-0037Formal Entity Type Classification CriteriaProposed
ADR-0043Player Count Sentiment Model ImprovementsProposed
ADR-0044Player Entity and Collection DataProposed
ADR-0045Specification-Only RepositoryAccepted

API Design

Protocol, pagination, filtering, error handling, resource embedding, hypermedia, caching, and bulk export.

ADRTitleStatus
ADR-0002Use REST with OpenAPI 3.2 as the API ProtocolAccepted
ADR-0012Keyset (Cursor-Based) PaginationAccepted
ADR-0013Compound Multi-Dimensional Filtering as Core FeatureAccepted
ADR-0015RFC 9457 Problem Details for Error ResponsesAccepted
ADR-0016API Key Authentication with Tiered Rate LimitsAccepted
ADR-0017Selective Resource Embedding via ?include ParameterAccepted
ADR-0018HAL-Style Hypermedia Links for DiscoverabilityAccepted
ADR-0019Bulk Data Export EndpointsAccepted
ADR-0028Cache-Control Headers and ETagsAccepted

Infrastructure & Implementation Guidance

Cloud-native design, deployment, observability, search, database migrations, and legacy system migration. These ADRs document recommended patterns for operators building conforming servers – they are guidance, not requirements of the standard. ADR-0025 (reference server) and ADR-0026 (SDK generation) are superseded by ADR-0045.

ADRTitleStatus
ADR-0020Twelve-Factor Application DesignAccepted
ADR-0021Distroless Container ImagesAccepted
ADR-0022Kubernetes-Native Deployment with Docker Compose FallbackAccepted
ADR-0023OpenTelemetry for Unified ObservabilityAccepted
ADR-0024Immutable Infrastructure with Blue-Green DeploymentAccepted
ADR-0025Rust with Axum and SQLx for the Reference ServerSuperseded by ADR-0045
ADR-0026OpenAPI Generator for SDK GenerationSuperseded by ADR-0045
ADR-0027PostgreSQL Full-Text SearchAccepted
ADR-0029Versioned Plain SQL Migration FilesAccepted
ADR-0032Strangler Fig Pattern for BGG Legacy MigrationAccepted

Data Model Extensions

Extensions to the core model for BGG parity, publisher/designer utility, and analytical capabilities.

ADRTitleStatus
ADR-0036Time-Series Snapshots and Trend AnalysisProposed
ADR-0038Alternate Names and Localization SupportProposed
ADR-0039Extended Game Credits with Role TaxonomyProposed
ADR-0040Edition Product and Physical MetadataProposed
ADR-0041Community Signals and Aggregate StatisticsProposed
ADR-0042Game Awards and RecognitionProposed

Chronological Index

All ADRs in sequential order for reference. Numbers are append-only and never reused.

ADRTitleStatus
ADR-0001Use MADR 4.0.0 for Architecture Decision RecordsAccepted
ADR-0002Use REST with OpenAPI 3.2 as the API ProtocolAccepted
ADR-0003Dual Licensing – Apache 2.0 for Code, CC-BY-4.0 for SpecAccepted
ADR-0004RFC-Based Governance with Steering Committee TransitionAccepted
ADR-0005Semantic Versioning for Spec and ImplementationsAccepted
ADR-0006Unified Game Entity with Type DiscriminatorAccepted
ADR-0007Combinatorial Expansion Property ModelAccepted
ADR-0008UUIDv7 Primary Keys with URL Slugs and BGG Cross-ReferencesAccepted
ADR-0009Controlled Vocabulary for TaxonomyAccepted
ADR-0010Structured Per-Player-Count Polling DataAccepted
ADR-0011Typed Game Relationships with JSONB MetadataAccepted
ADR-0012Keyset (Cursor-Based) PaginationAccepted
ADR-0013Compound Multi-Dimensional Filtering as Core FeatureAccepted
ADR-0014Dual Playtime Model – Publisher-Stated and Community-ReportedAccepted
ADR-0015RFC 9457 Problem Details for Error ResponsesAccepted
ADR-0016API Key Authentication with Tiered Rate LimitsAccepted
ADR-0017Selective Resource Embedding via ?include ParameterAccepted
ADR-0018HAL-Style Hypermedia Links for DiscoverabilityAccepted
ADR-0019Bulk Data Export EndpointsAccepted
ADR-0020Twelve-Factor Application DesignAccepted
ADR-0021Distroless Container ImagesAccepted
ADR-0022Kubernetes-Native Deployment with Docker Compose FallbackAccepted
ADR-0023OpenTelemetry for Unified ObservabilityAccepted
ADR-0024Immutable Infrastructure with Blue-Green DeploymentAccepted
ADR-0025Rust with Axum and SQLx for the Reference ServerSuperseded by ADR-0045
ADR-0026OpenAPI Generator for SDK GenerationSuperseded by ADR-0045
ADR-0027PostgreSQL Full-Text SearchAccepted
ADR-0028Cache-Control Headers and ETagsAccepted
ADR-0029Versioned Plain SQL Migration FilesAccepted
ADR-0030Structured Data Contributions via Issue TemplatesAccepted
ADR-0031RFC Changes Require Reference ImplementationSuperseded by ADR-0045
ADR-0032Strangler Fig Pattern for BGG Legacy MigrationAccepted
ADR-0033mdbook with Mermaid for DocumentationAccepted
ADR-0034Experience-Bucketed Playtime AdjustmentProposed
ADR-0035Edition-Level Property DeltasAccepted
ADR-0036Time-Series Snapshots and Trend AnalysisProposed
ADR-0037Formal Entity Type Classification CriteriaProposed
ADR-0038Alternate Names and Localization SupportProposed
ADR-0039Extended Game Credits with Role TaxonomyProposed
ADR-0040Edition Product and Physical MetadataProposed
ADR-0041Community Signals and Aggregate StatisticsProposed
ADR-0042Game Awards and RecognitionProposed
ADR-0043Player Count Sentiment Model ImprovementsProposed
ADR-0044Player Entity and Collection DataProposed
ADR-0045Specification-Only RepositoryAccepted