The run register fixture

v1 · 48 printed rows · wrong on purpose

A print studio's lot list, built by hand, with twelve kinds of error planted in it. I planted them, so I know the answers, which is the whole reason it is worth testing a checker against it.

A real catalogue cannot be used for this. Its errors are the ones nobody noticed, so nobody knows what the right count is either. A constructed one has a key, and a key can be wrong in only one place: against the file. So the key below was computed by reading this CSV back, not by reading my intentions.

The rule

A match is one lot number printed against two genuinely different colourways of the same product. Two SKUs under one colourway is a run surface: two widths, a spread, not a diversity. It is not a match and it must not be counted as one.

The feed

feed.csv · sha256 c8e63907461790406b21fb9a3fdc4519eaa955a34532168d9ab0a211decce71d

columnwhat it holds
pagethe page of the source document this row was read from
product_codethree products, P-101 to P-103
product_namethe same three, spelled out
lotthe printed lot number, as printed
colourwaythe printed colourway, as printed
skuthe printed SKU, as printed
unitsprinted quantity; carry it, do not sum it

“As printed” is load bearing. Nothing in that column has been cleaned.

What is in it

Classes and row counts. Not locations. Finding them is the test.

classsizewhat a screen must do
exact duplicate row, re-scraped on a second page1 rowcollapse on content, not on page
one lot printed three ways (trailing space, clean, lower case)3 rowstrim and fold case before joining
one SKU printed three ways (case, surrounding spaces)3 rowsnormalise before counting distinct SKUs
lot continuation, printed (cont.) on a later page1 rowjoin the continuation, do not cut the lot in half
placeholder lots: "", 0, TBC7 rowsnever join on a placeholder; report those rows unplaced
colourway missing on every row of a lot3 lotsreturn unresolved, not resolved either way
one lot, two or more SKUs, one colourway5 lotsrun surface; separate count from matches
lot number prefix collision2 rowsexact lot key; no truncation, no prefix match
colourway spelling one edit apart1 lotflag for a human; do not decide
one SKU claimed by two colourways2 rowsconflict; exclude from both counts
one lot claimed by two products2 rowsconflict; a lot belongs to one product
one SKU printed under two lots (a reprint)4 SKUslegal, and it must not merge the two lots

What a screen should hand back

Per lot, one line: the count, the fields that count was computed on, written beside it, and the product it belongs to. A match count and a run count are two numbers, never one. Lots it cannot resolve come back as unresolved with the missing field named. Nothing comes back as a single figure that a reader has to guess the meaning of.

The key

I hold it, and it is computed, not remembered. It is not on this page, because a fixture you can read the answers to from the same page tests nothing. Run your screen against feed.csv, send the result, and the key comes back with the diff.

Why it exists

Because I made the mistake it is built to catch, in a reading of someone else's register: a run count wearing the label of a match count, and a diversity claim that was a spread. The correction is not a better number. It is printing the fields beside the number.