{"schemaVersion":"1.0","type":"Article","types":["Article"],"slug":"my-three-way-consistency-check-reported-the-three-sources-name-the-same-texts-for-weeks-it-was-true-one-of-those-texts-had-two-different-publication-dates-and-the-check-had-no-column-for-that-b6i7h","url":"https://zyvop.com/my-three-way-consistency-check-reported-the-three-sources-name-the-same-texts-for-weeks-it-was-true-one-of-those-texts-had-two-different-publication-dates-and-the-check-had-no-column-for-that-b6i7h","title":"My three-way consistency check reported \"the three sources name the same texts\" for weeks. It was true. One of those texts had two different publication dates, and the check had no column for that","subtitle":null,"tldr":"Every draft I have not yet published exists in three places. The file itself, on disk. A row in an index table, with the surface it is going to and the date...","keywords":[],"entities":["Mathieu Ades","Founder","ZyVOP"],"keyTakeaways":["Every draft I have not yet published exists in three places.","The file itself, on disk.","A row in an index table, with the surface it is going to and the date."],"headings":["What the sentence does not say","Why this matters more than a typo","The fix and the witness","The general shape","Disclosure"],"outboundLinks":[],"contentText":"Every draft I have not yet published exists in three places. The file itself, on disk. A row in an index table, with the surface it is going to and the date. And a dated gate in my ledger, which is the thing that actually fires on the day and says: post this. Three copies of one fact is a lot of copies, so a script checks them against each other at every opening. The script takes the set of names from each source and computes the symmetric difference. If a draft exists on disk but has no row, it says so. If a row names a draft that has no gate, it says so. When all three sets are identical, it prints a sentence I have read many times: the three sources name exactly the same texts. What the sentence does not say That afternoon I moved eleven gates to earlier dates, then updated the index table to match, and ran the check. Same texts, it said. I believed it, because it was true. While editing those rows I noticed one that said its draft would go out on the seventh, while the gate for the same draft said the fifth. The draft was in all three sets. It was, by the check's definition, in perfect agreement. The check compares names. Dates are not names. Why this matters more than a typo The gate is what fires. The table is what I read when planning. If the two disagree, I plan against one calendar and post against another, and the difference shows up as a day with two posts on a surface that takes one, or a day with none. My cap checker would catch the first kind. Nothing would catch the second. Worse, the sentence \"same texts\" had trained me to read the check as \"the three sources agree\", full stop. The check was answering a narrower question than the one I was hearing. That gap between the question asked and the question heard is where every quiet inconsistency I have found this month has lived. The fix and the witness I added a second comparison. For each draft present in both the table and a gate, read the effective date from the row, skipping any struck-through old dates, and the date from the gate, and name every draft where the two differ. The check now says how many texts it compared on date and either lists the disagreements or says, explicitly, same dates, text by text. Then two witnesses, because a check that has never fired has never been tested. First, a deliberate fault: I edited a copy of the table to push one draft a day later, ran the check, saw that draft named with both dates, and restored the file byte for byte. Second, the real run on the real files. It named a draft I had not noticed: table on the fifth, gate on the third, two days apart, sitting there through every \"same texts\" of the afternoon. I realigned the row and ran it again. Thirty one texts compared on date, no disagreement. The general shape Agreement is always agreement about something. A check that reports consensus should say on which dimension, and I should hear exactly that and no more. \"Same names\" is a fact about names. The moment I let it stand in for \"same everything\", the check stops protecting the dimensions it never looked at, and it does so while printing reassurance. The honest version of the sentence is longer and I have made the script print it: same texts, same dates, compared on this many. When a third dimension turns out to matter, it will get a clause too, and until then I will know it is not covered because the sentence does not mention it. Disclosure I build BlueTicks for Gmail, a Chrome and Firefox extension that shows WhatsApp style ticks in your Gmail sent list, one tick sent and two blue ticks opened. It costs 4 dollars a year, and the free tier covers 30 emails a month. Everything above comes from distributing it in public and reading what my own checks print. You can find it at blueticks.io.","contentHash":"sha256:18c6ee3e4a4f43eee7cb11b4c71d907fad970f883ab9be2ad5ed251f9937130f","authorName":"Mathieu Ades","authorUrl":"https://zyvop.com/author/mathieu","authorSameAs":["https://blueticks.io/"],"category":null,"tags":[],"audience":"Technical professionals and readers researching software development","tone":"Professional, founder perspective","readingTimeMinutes":3,"wordCount":703,"faqs":null,"primaryTopic":null,"publishedAt":"2026-09-14T15:55:27.397Z","updatedAt":"2026-09-14T15:55:27.397Z","canonicalUrl":"https://zyvop.com/my-three-way-consistency-check-reported-the-three-sources-name-the-same-texts-for-weeks-it-was-true-one-of-those-texts-had-two-different-publication-dates-and-the-check-had-no-column-for-that-b6i7h"}