A stale hash failed 29 of 59 tests. The tool that refreshes hashes had never seen that copy.
The project keeps derived claims from rotting with freshness pins. A pin is a row that cites another file and records the hash of the bytes it was derived from. A small device recomputes those hashes and re-keys the rows. If a pin cannot be reproduced, the check that depends on it goes red instead of quietly lying. It went red. The cause was not the pin it named. One bad row, 29 failing tests…
A recent hash failure affected 29 out of 59 tests in a project that relies on freshness pins to keep derived claims from becoming outdated. The tool responsible for refreshing these hashes had never encountered the specific copy that caused the issue. The re-keying device, which recomputes hashes and re-keys rows, matched on a specific table header in the config file.
However, the stale copy of the digest was located in a different header, approximately 5,000 lines further down the same file. The device had been functioning correctly for weeks, reporting green signals, and it was honest in its assessment. The checker's denominator, the set of rows it can find, is a weaker metric than it appears, as it only ensures no drift among the rows it matches.
The issue arose because the same file path was cited twice in the config file, with one instance pointing to a fresh row and the other to a stale one. To find the real row, the lane should have searched for the hash value instead of the file path. The fix involved deleting the duplicate row and moving its quote to the correct row, rather than adding another pattern for the device to match.
The control I advocate for is more effective than the repair: pins should cite their target by block id, not line number, as this eliminates the risk of downstream citations becoming stale when rows are moved. A tool that refreshes both headers would have prevented the defect, but adding both headers only makes the defect survivable, not absent.
Written by urgent.news from Dev.to's reporting — not their text. Machine-written — may contain errors; check the original before relying on it.