- leak guard allowlists repo-relative paths (not basenames) so a raw
query in tests/nested/<name>.py cannot slip through
- self-scan removes only the guard functions' spans, then scans the
remaining source as one blob with a pattern including standalone
FROM/JOIN, so SQL split across physical lines is caught
- reorder lock is now per-(connection, loop) via module-level registry
shared by all ChildrenDao instances over one wrapper, matching the
migration runner's approach; race test now uses two DAO instances on
one connection
- SQL-leak guard scans recursively (rglob); self-scan excludes only the
two guard functions' exact source spans via ast line numbers, so code
anywhere else in the file is still scanned
- AdminUsersDao.add: single INSERT ON CONFLICT DO NOTHING (rowcount-derived
result), race-safe; concurrent-add test with 5 racing coroutines
- ChildrenDao.reorder: rejects duplicate ids (ValueError); per-instance
asyncio lock serializes concurrent reorders (the wrapper rejects
concurrent transactions); rollback test now forces a real finalize-batch
failure and asserts original order survives
- SQL-leak guard: scans package + tests with FROM/INTO/UPDATE/DELETE FROM/
JOIN pattern; narrowly justified exclusions (schema DDL, migrations,
their tests); this test file verified to contain no direct table SQL