There is a way of looking at a stone that never names it. Our own engine, powered by rainshower, works like this. Each observation strikes things out: a magnet that does not pull, a streak on a tile, a weight in air and in water. What survives goes on a list. The list is a reading order, never an answer.
I like this method because it cannot overclaim. Nothing in it ever says "this is". Every line on a card is the board's arithmetic on answers somebody entered, and the tests sweep thousands of random answer sets to make sure no sentence ever claims an identification.
It has a weakness all the same, and it took a deliberate test to see how big it is.
Elimination on a closed list
The board only knows the rows it holds. Our working list is short: 32 kinds of stone that people actually pick up in one area, each with the traits it can show. Run a stone through it and you get the rows that fit.
Now ask what happens when the stone is something the list has never heard of. The board does not know that. It strikes out what does not fit and shows you whatever is left, in the same format, with the same confidence, as if the truth were on it.
That is not a bug in any one row. It is what an elimination list does when the list is closed.
Measuring it
You cannot measure this with real stones unless you already know what they are, and nothing we have has been confirmed by a lab. So the check runs on simulated stones instead.
For every row on the list, it draws answer sets the table itself says that row can give: a random handful of checks, each answer picked from that row's own allowed list. Then it runs each set through exactly the same screening the cards use. Seed 7, 12,800 simulated stones:
- Recall: 100 percent. No row is ever struck out by answers its own row allows. That sounds like a strong result. It is not. It only shows the table agrees with itself.
- The closed world: 93.7 percent. Take the true row off the list and screen the same answers again. In 93.7 percent of stones the list still offers something, on average 10.4 other rows. The board almost never says "none of these".
- The density band: 2.23 rows. The board turned a measured density into one of four bands. A band is wider than the number, so on average it kept 2.23 rows per stone that the measured number itself would have struck.
The second figure is the one that matters. A stone from outside the list gets a confident-looking list of the wrong things nine times in ten.
The fix is a bigger list, checked first
You cannot make a short list say "none". What you can do is check the stone against something that is not short, and do it first, on every card.
So the engine now carries a second table: 137 single minerals. These are the ores mined for a metal or an element, the minerals that make up nearly all rock, and the vein and cavity minerals that go with both. Each row has the properties you can test at a kitchen table: hardness, density, streak, lustre, magnetism, colour, whether light passes through, whether it fizzes in vinegar. Every card runs against all 137 before the short list is consulted, and the card prints what is still standing.
Three choices shaped it.
Single minerals only. A rock is several minerals at once. A coarse rock of three minerals matches none of the 137 rows as a whole, and that is the correct answer. The card says so instead of forcing a match. When a stone is a mix, you screen the part, not the whole.
Measured density as a number. The four bands were the 2.23 rows. The new board takes the interval from the hanging weighing (dry weight over the grams added when the stone hangs in a tared cup of water, with the scale's error both ways) and strikes every row whose own range, plus the tolerance, does not reach it. A test sweeps densities from 1.6 to 10 and confirms the number never keeps a row the band would strike.
The harmless test that splits what is left. For each card the board works out which test, out of the ones that leave the stone as it was, would leave the fewest survivors in the worst case. Scratching marks a stone, so it is off that list, with one exception: dragging the stone across a glass bottle. That marks the glass, not the stone.
It caught us straight away
The first run of the bias check on the new board was not clean. We drew stones from the short list's own rows, for the rows that are a single mineral, and asked whether that mineral survived on the big board. Across 14 rows and 5,600 stones, it survived in 73.6 percent of draws.
Two different things were going on.
Some misses were real disagreements. A row on the short list allowed a stained surface or a dull face. The same mineral on the big board did not. Two tables typed at different times by the same person said different things about the same material. Neither table could have shown this on its own.
The rest were the check's fault. Where both tables were silent on a trait, the draw picked an answer at random, and invented stones the big board had good reason to reject. The fix was to draw silent traits from the big board's row, so only claims one table states and the other contradicts can strike a stone.
One more thing came out of the misses. A row we had counted as one mineral was really a mix of several, with a density range that no single mineral on the big board covers. It came off the single-mineral list, which left 13 rows.
With the check corrected, the real disagreements widened and that row removed, the result is 100 percent across 5,200 stones. On average 44.6 other minerals are still standing beside the true one. In only 3.5 percent of stones is it the only one left.
That 44.6 is the honest size of what the short list was hiding.
What the score does with it
Each card also scores how well the evidence on file supports a working call. The score is built from the board's own output and capped, and it is never a probability. One part of it is margin: how far the call leads the next entry.
Before this change, a call that was the only row left on the short list got full marks for margin, "no rival". Now, when the call is a single mineral, the margin is measured against the big board too, and the smaller of the two counts. A call can still be first on the short list while several minerals from outside it fit just as well. When that happens the score drops, and the card names the rivals.
What this does not fix
- 137 is not every mineral. There are thousands of species. The table covers the ones mined for something and the ones that make up most rock. A stone outside it falls through the same gap at a larger scale. That gap is much smaller, and it is still there.
- The tables are typed from memory. Every row is flagged unverified. The primary references are not reachable from where this runs, and no row has been checked against one yet.
- None of this measures accuracy against real stones. Simulated stones drawn from the tables can only test whether the tables agree with each other and with the screening. Measuring accuracy needs stones confirmed by a cut face or a lab, run blind. We do not have those yet.
The method still never names a stone. It now says, on every card, how many single minerals the same answers leave standing, and which harmless test would cut that number. That was the line the short list could never print.