fingerprintInputs function
Stable hash over a list of input files (path + size + mtime) plus scalar extras (mode, defines, tool versions, …). Missing files hash as misses — never silently reuse.
Implementation
Future<String> fingerprintInputs(
Iterable<String> paths, {
Iterable<String> extras = const [],
}) async =>
(await fingerprintInputsDetailed(paths, extras: extras)).digest;