# 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.
