From 0aefaa78eb371e4bc10258cfd43cc9399c90dfbf Mon Sep 17 00:00:00 2001 From: Michael Chihlas Date: Sat, 25 Apr 2026 11:35:38 -0400 Subject: [PATCH] docs(ai): queue pytest-xdist parallelization in TODO.md Capture the backend pytest parallelization work so it survives session end. Backend suite is currently ~22 min wall-clock for 1076 tests; xdist with one-DB-per-worker should land in the 3-6 min range on the homelab Gitea Actions runner. Also queues two backlog items: - Frontend lint warnings (23 react-hooks/exhaustive-deps after PR #149) - Periodic audit of the ResourceWarning filterwarnings added by Codex Co-Authored-By: Claude Opus 4.7 --- .ai/TODO.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.ai/TODO.md b/.ai/TODO.md index 38730ced..bf7513e8 100644 --- a/.ai/TODO.md +++ b/.ai/TODO.md @@ -5,8 +5,9 @@ ## Up next -- [ ] No queued backlog yet. +- [ ] **Parallelize backend pytest with pytest-xdist.** Currently the backend suite takes ~22 min wall-clock for `1076 passed, 35 deselected` (verified locally 2026-04-25). With `-n auto` on the homelab Gitea Actions runner, this should land in the 3–6 min range depending on core count. Blocker: `test_db` fixture in `backend/tests/conftest.py` does `DROP SCHEMA public CASCADE` per test, which two workers would race on. Standard fix: one database per worker, derived from `PYTEST_XDIST_WORKER` env var inside conftest. The runner has spare CPU, so prioritize once main is green and the 54-failure cleanup has landed. ## Backlog -- [ ] No queued backlog yet. +- [ ] **Frontend lint warnings cleanup.** 23 `react-hooks/exhaustive-deps` warnings remain after PR #149 (mostly missing-deps in useEffect). Either fix them or audit them for known-safe ones and add eslint-disable comments. Not blocking CI today. +- [ ] **Audit `filterwarnings` ignores added in `wip(handoff): restore backend suite to green`.** Codex added narrow `ResourceWarning` filters for unclosed socket/transport/event-loop noise from pytest-asyncio teardown. Worth periodically reviewing whether those are still needed (e.g. when bumping pytest-asyncio) — if a real warning appears in those forms it would be silenced.