Files
dance-lessons-coach/adr
Gabriel Radureau 25a20d4380 📝 docs: add ADR 0025 documenting BDD scenario isolation strategies
- Document 5 considered options for BDD test isolation
- Analyze pros/cons of each approach (transaction rollback, clear tables, schema-per-scenario, database-per-feature, combined)
- Explain Gherkin Background behavior and implications
- Detail critical limitation: PostgreSQL schemas don't isolate in-memory state
- Recommend enhanced multi-layer isolation strategy
- Document cache key prefix/suffix approach for future cache integration
- Add schema and cache key naming conventions
- Reject explicit Background setup approach as error-prone and unscalable

Generated by Mistral Vibe.
Co-Authored-By: Mistral Vibe <vibe@mistral.ai>
2026-04-11 07:57:46 +02:00
..

Architecture Decision Records (ADRs)

This directory contains Architecture Decision Records (ADRs) for the dance-lessons-coach project.

Index of ADRs

Number Title Status
0001 Go 1.26.1 Standard Accepted
0002 Chi Router Accepted
0003 Zerolog Logging Accepted
0004 Interface-Based Design Accepted
0005 Graceful Shutdown Accepted
0006 Configuration Management Accepted
0007 OpenTelemetry Integration Accepted
0008 BDD Testing Accepted
0009 Hybrid Testing Approach Accepted
0010 CI/CD Pipeline Design Accepted
0011 Trunk-Based Development Accepted
0012 Commit Message Conventions Accepted
0013 Version Management Lifecycle Accepted
0014 Swagger Documentation Accepted
0015 Rate Limiting Strategy Accepted
0016 Cache Invalidation Strategy Accepted
0017 JWT Secret Rotation Accepted
0018 Configuration Hot Reloading Accepted
0019 BDD Feature Structure Accepted
0020 Database Migration Strategy Accepted
0021 API Versioning Strategy Accepted
0022 Rate Limiting and Cache Strategy Accepted
0023 Config Hot Reloading 🟡 Proposed
0024 BDD Test Organization and Isolation 🟡 Proposed
0025 BDD Scenario Isolation Strategies 🟡 Proposed

What is an ADR?

An ADR is a document that captures an important architectural decision made along with its context and consequences.

Format

Each ADR follows this structure:

# [Short title is a few words]

* Status: [Proposed | Accepted | Deprecated | Superseded]
* Deciders: [List of decision makers]
* Date: [YYYY-MM-DD]

## Context and Problem Statement

[Describe the context and problem statement]

## Decision Drivers

* [Driver 1]
* [Driver 2]
* [Driver 3]

## Considered Options

* [Option 1]
* [Option 2]
* [Option 3]

## Decision Outcome

Chosen option: "[Option 1]" because [justification]

## Pros and Cons of the Options

### [Option 1]

* Good, because [argument a]
* Good, because [argument b]
* Bad, because [argument c]

### [Option 2]

* Good, because [argument a]
* Good, because [argument b]
* Bad, because [argument c]

## Links

* [Link type] [Link to ADR]
* [Link type] [Link to ADR]

ADR List

How to Add a New ADR

  1. Create a new file with the next available number (e.g., 0010-new-decision.md)
  2. Follow the template format
  3. Update this README.md with the new ADR
  4. Commit the changes

Status Legend

  • Proposed: Decision is being discussed
  • Accepted: Decision has been made and implemented
  • Deprecated: Decision is no longer relevant
  • Superseded: Decision has been replaced by another ADR