v0.7.3 - 20/05/2026
AI resubmit race, bulk-approve ORM pollution, stuck-running sweep
- fix(ai-review): pass revision_round through arq job. Worker reloads
the draft right before writing its verdict and drops the result if
the round has bumped — closes the race where a slow L3/L4 worker
could overwrite a newer resubmit's verdict with stale checks for
the previous content. - fix(wiki-drafts): bulk_approve now expires touched ORM objects on
savepoint rollback. SAVEPOINT only reverts the DB; in-memory
attribute mutations (page.version += 1, draft.status='approved')
stay on the identity-map instance and would otherwise leak into
the next iteration of the loop. - feat(worker): sweep_stuck_ai_review_cron runs every 10 minutes and
resets drafts stuck in ai_check_status='running' for >2×job_timeout
(min 30 min). Catches the SIGKILL/OOM case the in-process
try/except can't cover. - fix(wiki-service): approve_draft scope_id parse now catches
TypeError too and re-validates with isinstance, matching the
defensive parse in wiki_drafts._can_review_draft.