Trying to start over reimplementing the --pretend-up-to-date feature: applied patch to add the command-line option and required arguments and fields, but didn't implement any functionality yet.
Refactored and extended out-of-date checking code: when a specific target is out of date because a specific direct dependency changed, that information is now stored for later use.
Implemented work avoidance if target is pretend target. Next: the tricky part (touching dependencies to preserve out-of-date information).
Implemented the mechanics of reconciling timestamps with out-of-dateness statuses, it's not being used yet or tested. We still need to add some code that clears the targets field after the build process and then does a second add_target pass for all the kept-back targets in order to make the reconciling happen.