Blind spreadsheet benchmark

Organisations publish the same spreadsheet every month or quarter, and it quietly changes shape. I collected twenty real ones, three editions each, and labelled exactly what changed from one edition to the next. In a third of cases, anything reading them automatically should stop.

Made
Built with
Python, reading the workbook files directly
Status
Corpus complete; not yet scored

The question

Tools that read spreadsheets are usually tested on tidy, one-off tables. Real recurring workbooks are nothing like that. Headers span three rows, totals sit in the middle of the data, a formula becomes a typed-in number, a column is renamed, a sheet is reshaped. The hard question isn't "can you read this table?" but "is this month's file still the same kind of file as last month's, and is it safe to carry on?" I wanted a benchmark that asks exactly that, on real files.

What's in it

What broke

Each of the 40 edition-to-edition pairs has a decision: would a careful automated reader carry on, carry on with a warning, or stop?

13 of 40edition changes where a reader should stop
18 of 61individual changes that alter meaning, not just layout

Visible layout drift appeared in 19 of the 20 families. Most changes are harmless, such as a renamed sheet or a reordered column. But 18 of the 61 changes found were material: they change what the numbers mean, or whether they can be trusted. On the corpus's 0 to 4 drift scale (read from the planted examples below: 1 for renames and reordering, up to 4 when the shape of the data changes), the changes split 20, 17, 8, 12 and 4. The outcomes split 23 carry on, 4 warn and 13 stop.

Ten planted changes

Real drift is uneven, so the corpus also has ten controlled mutations. Each takes one real workbook and makes exactly one change, recorded with the expected rating and outcome. Seven are held blind.

The ten controlled mutations
ChangeRatingExpected
Sheet renamed1carry on
Columns reordered1carry on
Header reworded, same meaning2carry on
Header reworded, new meaning2stop
Formula replaced by its value3stop
Stored result disagrees with its formula3stop
A total no longer adds up3stop
A row deleted from a mapping sheet3stop
Suppressed values turned into zeros3stop
A long table turned into a cross-tab4stop

Two are nasty in a specific way. Replacing a formula with its current value changes nothing you can see today, and breaks the file the next time its inputs change. And a stored result that disagrees with its own formula fools any reader that trusts the cached number.

Keeping it blind

Limits