Align python-code-reviewer skill with repo ground truth
Quality Gate / gate (push) Failing after 11s

Update the reviewer skill so its procedure matches how this repo actually works:

- Route review reports to docs/reviews/ and mark them non-canonical, resolving the conflict where reports landed in the same docs/ tree they resolve findings against.
- Pin verification commands to uv (uv run ruff check / ty check / pytest -m 'not external').
- Record the pytest contract: strict markers, strict asyncio mode, and the never-awaited-coroutine warning promoted to an error.
- Convert the deterministic checks to a table with an Enforced by column; three checks are unenforced and one only partial, which are now findings by construction.
- Add a consequence-based severity rubric and a Direction column for bidirectional drift.
- Escalate test-suite concerns to test-effectiveness-auditor.

Also fix tests/test_db.py, which was missing 'from sqlalchemy import text' while using it in 14 places. Three tests were failing with NameError. Wrapped the pre-existing long lines in the same file so it lints clean.

Document the deliberate nicegui==3.13.0 pin in pyproject.toml, a new runbook dependency upgrade policy, and the reviewer skill, so the pin is not flagged as a defect or widened as incidental cleanup.

Co-authored-by: Copilot App <[email protected]>
This commit is contained in:
Jim Lancaster
2026-08-23 16:27:44 -05:00
co-authored by Copilot App
parent ed6998d8da
commit 5566f48fc0
5 changed files with 104 additions and 19 deletions
+31
View File
@@ -82,3 +82,34 @@ This runbook is the operational checklist for releasing and monitoring the trans
1. Inspect affected `job_source` and `execution_attempt` records.
2. Confirm failures are category-aligned (`external`/`timeout`/`internal`).
3. Triage whether issue is source quality, provider, or runtime regression.
## 6. Dependency upgrade policy
Dependencies are declared in `pyproject.toml` and resolved through the committed
`uv.lock`. The lockfile guarantees reproducible installs; the version specifiers
control what a deliberate `uv lock --upgrade` is allowed to move.
### NiceGUI is pinned exactly (`nicegui==3.13.0`)
1. **Rationale.** NiceGUI bundles Quasar and Vue. Minor releases change component
props, slots, and styling, which surfaces as visual and interaction regressions
rather than import or type errors. The UI suite under `tests/ui/` asserts
structure and behavior, not rendered appearance, so a NiceGUI bump can pass the
full test suite and still degrade the interface.
2. **Scope of risk.** All NiceGUI usage is confined to `src/transcription/ui/` and
uses only the public `nicegui.ui` and `nicegui.events` surfaces. The coupling is
shallow, so the pin is about release stability, not about unpicking deep
framework entanglement.
3. **Current stance.** Hold the exact pin through release stabilization. Do not
widen it as incidental cleanup, and do not let automated dependency updates move
it. This includes forgoing patch releases, which is the accepted cost.
4. **Revisiting.** Treat a NiceGUI upgrade as scheduled work with its own change
window: bump the pin deliberately, run `uv run pytest -m "not external"`, then
manually verify each page contract in `docs/ui/pages/` before accepting.
### All other dependencies
Declared with `>=` floors and moved by explicit `uv lock --upgrade`. Verify with
`uv run ruff check .`, `uv run ty check`, and `uv run pytest -q -m "not external"`
before committing a changed lockfile.