generated from john/python-template
36 lines
1.2 KiB
Markdown
36 lines
1.2 KiB
Markdown
# ADR-0001: Lifespan-owned runtime resources
|
|
|
|
- **Status:** accepted
|
|
- **Date:** 2026-06-25
|
|
|
|
## Context
|
|
|
|
MVP initialized core runtime resources (database engine and worker dependencies) through module-level globals and startup side effects. `REQ-7` requires lifespan-owned runtime resources with explicit ownership and cleanup.
|
|
|
|
## Decision
|
|
|
|
Adopt lifespan-owned runtime resource initialization in `transcription.app`:
|
|
|
|
1. Initialize database runtime during app lifespan startup.
|
|
2. Store runtime handles on `app.state`.
|
|
3. Pass runtime-owned dependencies (engine) to worker startup.
|
|
4. Dispose runtime resources explicitly during lifespan shutdown.
|
|
|
|
## Consequences
|
|
|
|
### Positive
|
|
- Explicit startup and shutdown ownership.
|
|
- Predictable cleanup ordering.
|
|
- Reduced hidden global side effects.
|
|
|
|
### Tradeoffs
|
|
- Minor wiring complexity in app startup.
|
|
- Some call-sites still support fallback lazy initialization for compatibility.
|
|
|
|
## Alternatives Considered
|
|
|
|
1. **Keep module-level global ownership**
|
|
- Rejected: conflicts with `REQ-7` and increases ambiguity.
|
|
2. **Introduce full async DB stack immediately**
|
|
- Rejected for Step 1: too broad for architecture-consolidation scope.
|