088d3c745d
Add source_modified() that uses git ls-tree -r HEAD to hash the contents of all tracked files in a source dir, falling back to modified_dir_ignore_git for non-git sources. Wire into cook_build.rs in place of the recursive mtime walk. Eliminates spurious rebuilds from: - .swp files, editor backups - build artifacts in target/ or other untracked dirs - filesystem timestamp drift after touch operations The git-tree approach is content-addressed: identical content always yields the same fingerprint, regardless of mtime. Combined with T1.1 (sysroot content-hash + pkgar mtime preservation), a no-op rebuild should take seconds rather than hours. Plan: local/docs/BUILD-SYSTEM-ROBUSTNESS-PLAN.md