Hi Emanuel,
I don't think it would be too difficult to implement a checksum based system.
Bpipe stores a lot of properties about the files and I have often thought that a checksum would be a good thing to have as an option, not so much for dependency tracking but just for ensuring integrity of files. You can see where the actual checking about if something is up to date here:
You'll notice that after it checks timestamps it eventually calls graph.propertiesFor(<output>). There it is retrieving an arbitrary properties object that is kept for every output of the pipeline. Via the same mechanism, checksums of the inputs used to create an output could be recorded, and those could be retrieved compared to checksums of the files to determine if the output is up to date.
The main problem with all this is that for large files, computing checksums would take some time, so you could end up finding that Bpipe takes a long time just to work out if an output needs to be created. Would other properties like the file size serve your purpose just as well?
Cheers,
Simon