Captures the lock-file generation work (audit #9) and the core/images.py dead-code cleanup (audit #15) as explicit follow-ups so they don't get lost between branches.