We researched the most famous pairing in gardening. Our own page never heard about it.

Two pages. Same question. Different answers. Both green.

We researched the most famous pairing in gardening. Our own page never heard about it.

A three-year double-blind trial tested whether basil makes tomatoes taste better. It does not. But basil does cut thrips on tomatoes and lifts yield at good density, so the pairing is real for reasons nobody repeats. We had that on our chart tool and not on our tomato page, which called it mere tradition, for three weeks.

The most famous pairing in gardening, actually tested

Plant basil next to your tomatoes. Every chart says it. Most of them say it makes the tomatoes taste better.

Somebody tested that. A three-year double-blind trial — tasters who did not know which tomato came from which plot — found no flavor difference at all.

And the same body of work found something else, which is that basil can cut thrips numbers on tomatoes, and shows a modest yield gain when it is planted at good density. Minnesota Extension carries that finding.

So the pairing survives, and almost every reason given for it is the one part that failed. The famous half is folklore and the useful half does not have a catchphrase.

We had that research. One of our pages did not.

Our companion planting chart has said trialed for basil and tomato since July 20th. It carries the double-blind trial and the thrips finding, and the page contains the phrase "why we tag basil × tomato trialed, not folklore."

Our tomato page, on the same site, said this: Basil — Traditional. Companion-chart tradition; little or no trial evidence.

Both pages were live. Both were correct according to the file behind them. They read different files.

And it was not only basil. Our chart calls fennel genuinely allelopathic and names the compound — trans-anethole — while our tomato page listed fennel as something to avoid for a very different reason: "nobody lists it as a good neighbor." That second one is not a fact about fennel. It is a fact about a chart, and we had cited a chart that lists companions as though it were a source that had ruled out all the others. It never said that.

The boring cause, which is the whole point

On July 11th we shipped the chart. On July 12th we copied its data into the proper sourced records that the crop pages read. At that moment the two agreed exactly, which is what makes this worth writing down.

On July 20th somebody sat down and did the research — found the trial, found the thrips work, found the fennel chemistry — and improved the chart. The records were never touched. They have one commit, from the day they were created.

So the upgrade landed on the copy that had already been declared obsolete, and the copy that was supposed to be authoritative never heard about it. A note in our own repo, written eight days later, states plainly that the old file "is no longer the source of anything." It was the source of the public chart the whole time, and by then it was also the better one.

Nothing failed. No error, no red build, no broken link. Both pipelines ran green every day for three weeks, because each was internally consistent and nothing in the world was comparing them to each other.

Why this matters if you have never heard of us

You cannot tell, on any gardening site, which page got the update. Two pages that disagree look exactly like two pages that agree — each one is confident, each cites something, and the stale one has no marking on it whatsoever.

The pattern is not special to us. Any site big enough to have a tool and an encyclopedia has this: the same fact stored twice, improved once. The one you happen to land on is luck.

And notice which way ours failed. The stale page was not wildly wrong — it was more modest. It undersold a pairing we had good evidence for. A gardener reading it would have concluded basil is a nice old superstition and skipped it, which is the opposite of what our own research said.

What we did about it, including the part that is not a fix

We corrected both records, and kept the flavor legend rather than deleting it. Our data model can hold "a field trial that disproves this" as a first-class thing, and it had never once been used. The legend is now stored as tested-and-failed instead of quietly vanishing, because a reader who has heard the flavor claim deserves to be told it was checked.

Then we built the check that was actually missing: it fails the build when our two datasets give different answers about the same pair of plants — either a different confidence grade, or the far worse case where one recommends what the other warns against.

A reminder would not have worked here. Nobody forgot. The person doing the research believed the records were downstream of the file they were improving, and everything they saw confirmed it. You cannot fix that with more care; you fix it by making the two copies unable to disagree in silence.

The check was wrong twice before it was right

This part is not a detour. The first version reported zero disagreements — while basil was disagreeing on a page we had open at the time. It compared plant names as text, and never worked out that "Onion family" and "Onions & garlic" are the same plants. It also turned "Potatoes" into "Potatoe."

Zero was the comfortable answer, and had we trusted it we would have published an all-clear over a fault we had personally looked at ten minutes earlier.

The second version found a disagreement on radishes and carrots. That one was not real either. The way it split the file into crops required a crop's name to be followed immediately by its list — and one entry, the onion family, has an extra line in between. So the onions were never recognized as a crop and their pairings were absorbed into the radishes above them.

Both times, the thing that caught it was opening the file and reading it. The check now prints how many pairings it actually compared, and fails outright if that number is ever zero — because a check that has quietly stopped examining anything passes forever, and looks identical to one that is working.

What we still cannot tell you

The check compares 16 pairings, not all of them. Our two datasets use two hand-written vocabularies, and matching them loosely is what produced both false alarms above. So it only compares pairs whose names we have matched up by hand, and it reports that number out loud every run rather than implying it covered everything.

We have not re-graded the other records against fresh sources. Twenty-eight of our interaction records still carry only what they were created with. We know they are not contradicted by the chart; we have not proven each is the best available answer, and we are not going to claim we did.

And the underlying oddity stands: we still hold the same knowledge in two places. The check means they can no longer disagree without the build stopping. It does not mean we have one copy, which is the real fix and a larger job than a week.

The chart itself, free and sourced, with every pairing marked trialed, practical or traditional: the companion planting chart.

Every crop we hold, with its companions: the plant database.

The app is in beta now. Join the beta if you want in.