I've had a similar issue when using fossil in windows and tracked down the cause: I had replaced a file in the working directory by another similar file found elsewhere in the tree.

They didn't have the same content or size, but it seems when you do that windows copies over the modification date of the file (at last when you do it using the explorer), because the original file had the same modification time as the one I replaced.

So the mtime check led fossil to believe the file hadn't changed and it didn't include it in the commit. Then when it compared the checksum of the files in the commit (including the old version of that file mentioned above) to the working directory which contained the latest version, the checksum didn't match.

As a workaround, it is possible to disable mtime check with "fossil set mtimes-changes 0".