## What & why

<!-- What does this change do, and why? Link any related issue. -->

## How it was tested

<!-- Commands run, scenarios covered. -->

## Checklist
- [ ] Quality gate green locally (`mypy src tests`, `ruff format --check .`)
- [ ] Tests added/updated where it matters
- [ ] No secrets committed
- [ ] Docs updated if behavior changed
