# V1 Release Evidence Log

## Step 5 Quality Gates (2026-07-29)

### Lint

- Command: `python -m ruff check .`
- Result: ✅ pass
- Notes: initial findings were auto-fixed (`ruff --fix`) plus small manual line-wrap/annotation adjustments.

### Tests (primary gate)

- Command: `python -m pytest -m "not external" -q`
- Result: ✅ pass (`[100%]`)

### Tests (external smoke)

- Command: `python -m pytest -m external -q`
- Result: ✅ pass (`[100%]`)

### Type Check

- Command: `python -m ty check src tests`
- Result: ⚠️ not passing
- Summary: existing SQLModel/SQLAlchemy typing incompatibilities and test double typing mismatches remain.

Key current blocker families:

1. SQLModel relationship/query attribute typing (`selectinload`, `order_by`, `.any()`)
2. SQLAlchemy join clause typing in `services/transcription.py`
3. Test fake client type mismatch for `OpenRouterTranscriptionProvider(client=...)`
4. `Settings(**defaults)` typed-dict strictness in `tests/test_config.py`

## Current Gate Status

- Lint: pass
- Non-external tests: pass
- External smoke tests: pass
- Type check: **blocked** (requires dedicated typing cleanup pass)
