The historical repair remains manual by design; the migration creates the function but does not execute it.
The dedicated pgTAP file disables after_99_notify_amqp_moves during fixtures to avoid notification side effects.
Direct SQL calls to the backfill function are ordinary UPDATEs on geokrety.gk_moves.
The standalone CLI path intentionally acquires its own advisory lock, runs each batch inside SET LOCAL session_replication_role = replica, and commits after every batch so large runs avoid one giant top-level transaction and suppress unrelated trigger side effects.
The review loop caught and resolved an embedded-SQL CTE syntax error before the rollback and re-apply verification run.
pre-commit run -a was attempted in both repositories, but the PHP Coding Standards Fixer hook did not return a final status in this environment even though the owned files remained syntactically clean.