Urgent.News

What's breaking now, across thousands of outlets.

Tech

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.

Read the original at dev.to →

More in Tech

Standard JSON Schema vs JSON Schema

Damn, I like standards! I'm so happy to live in a world where we can finally use USB-C for almost everything... Oh, the article is not about USB-C, but about JSON Schema finally getting a "Standard"…

  • JSON Schema, since 2007, has undergone multiple updates.
  • Custom schema libraries like Joi and Valibot offer distinct APIs incompatible with JSON Schema.
  • Standard JSON Schema enables interoperability among schema libraries.

Weekend Build Log: The Timeout Is the Product

You sit down Saturday with one failing test file. The stack trace is ugly and long. You want a tiny helper that groups those failures. Ninety minutes later you are still retrying a model.

  • Programmer groups failing test files together
  • Timeout set as product, limiting job to one verb
  • Sunday run with tight scope and 90-second limit

More from Sunday 13 September →