TFTP orchestration uses direct object comparison
It shouldn't. This was the root cause of why the TFTP orchestration was working for the last year - the build? flag was never read correctly, but because old.os != os was always returning true (even when the OS wasn't changed) the TFTP orchestration was working.
We've fixed the problem in build? (PR 1159) but the object comparisons remain. You can prove that Rails does odd things with a smple snippet:
u = User.first
u1 = User.first
u == u1
As a start I've altered the TFTP orchestration to use object.id which is reliable (since it's loaded from the db). There are probably a lot more of these around the codebase though...