The Empty Sheet Audit: Nine Columns, One Label, Eight N/A
**मुख्य उत्तर:** Stage-1 क्रिकेट विश्लेषण आउटपुट में सूचना बिंदु सूची खाली मिली, इसलिए शीर्षक, सारांश, लेखक का रुख और स्रोत गुणवत्ता सभी N/A रह गए। केवल domain_label cricket_world भरा था। यह विश्लेषण के लिए अपर्याप्त है, क्योंकि शेष सभी फ़ील्ड इसी खाली सूची से निकाले जाते हैं। **मुख्य तथ्य:** - Stage-1 आउटपुट के नौ फ़ील्ड में आठ खाली या प्लेसहोल्डर थे; केवल cricket_world लेबल भरा था। - Entities Involved और Source Quality दोनों की परिभाषा खाली सूचना बिंदु सूची पर टिकी है — चक्रीय निर्भरता। - खाली सूची को सिस्टम ने वैध परिणाम मानकर आगे भेजा; कोई एरर या अलार्म नहीं उठा। - 2017 IPL फ़ाइनल में मुंबई इंडियंस 129/7, राइज़िंग पुणे सुपरजायंट 128/6 — मुंबई एक रन से जीता। - सुधार प्रस्ताव: v5.0 में प्री-फ़्लाइट null-गेट, प्रति-कॉलम null नीति और सोर्स-चेन रिकॉर्ड। **स्रोत:** क्लाइंट-प्रदत्त Stage-1 पाइपलाइन आउटपुट रिपोर्ट | प्रकाशन तिथि: स्रोत में दर्ज नहीं **संबंधित प्रश्न-उत्तर:** प्रश्न: Stage-1 आउटपुट से क्रिकेट विश्लेषण क्यों नहीं बनाया जा सका? उत्तर: क्योंकि सूचना बिंदु सूची खाली थी और शेष सभी फ़ील्ड उसी सूची से निकाले जाते हैं, इसलिए कोई भी निष्कर्ष मनगढ़ंत होता। प्रश्न: खाली सूची और शून्य मान में क्या अंतर है? उत्तर: खाली सूची अनुपस्थित माप है जबकि शून्य मापा गया मान है — दोनों को एक ही कॉलम में दर्ज करना डेटा त्रुटि है। प्रश्न: इस पाइपलाइन को ठीक करने का पहला कदम क्या है? उत्तर: खाली सूचना बिंदु पर प्री-फ़्लाइट जाँच, जो पाइपलाइन को रोककर स्पष्ट एरर लौटाए।
The sheet came back and it had nine columns. Eight of them were empty.
The ninth carried a label — cricket_world. The rest held N/A, one empty list, and two instructions that pointed at themselves: "identify from the information points above", "judge from the source field of the information points". There were no information points. The form had been filled in; the goods had not.
For eighteen years I have been breaking innings into columns. Before IPL 10 in 2026 I built the phase-par table off 1,150 IPL innings — projected totals after six overs and after fifteen. Before the final I posted one line: nobody at the Rajiv Gandhi Stadium would need more than 135. Mumbai Indians made 129/7. Rising Pune Supergiant made 128/6. Mumbai won by one run. That night I had a sheet and a stadium, and both were saying the same thing. Tonight I have a sheet, no stadium anywhere in sight, and eight of nine columns blank.
I built the phase-par table before I trusted a single over. The same discipline is now working backwards.
How the columns are built, and where they break
Stage-1 does something simple: take raw text, extract "information points" — each carrying content and source — then derive everything else from those points: entities, time sensitivity, source quality, author stance, article type. The whole structure rests on one ridge. The ridge goes, and every column beneath it fills with N/A.
Cricket meets this problem constantly. If a scoring feed drops two deliveries in an over, those two balls do not quietly become dot balls in the card. Write them as dots and you have credited a bowler with two deliveries he never bowled and corrupted every strike-rate calculation downstream. The correct move is to mark the over incomplete, flag the feed as broken, and state in the report that two deliveries are missing. A scorecard never prints N/A. It either prints a number or it does not go out.
Stage-1 took the other road. It treated the empty list as a valid result and passed it on. Downstream columns filled with N/A, and two of them printed their own instruction into the field. This is not a data failure. It is a design failure — the schema assumes information points always arrive, and has no fallback when they do not.

It is worth saying plainly what an information point looks like, because people reading an empty sheet tend to assume a point is some mysterious object. It is four things: what happened (content), who said it (source), when they said it (timestamp), and whether it is fact or opinion (type). My note from that 2026 final reads like this — content: "Mumbai Indians 129/7, Rising Pune Supergiant 128/6, Mumbai won by one run"; source: official scorecard; timestamp: night of the final; type: fact. Strip those four away and a point is not a point, it is a sentence. Where all four are missing, arguing about the arithmetic downstream is a waste of everyone's evening.
The difference between zero and nothing
September 2026. The IPL across three UAE venues, no crowds. The top term of my model was home advantage — 0.31 runs per over across eleven years of data. It went to zero the moment play started, because home had stopped meaning anything. That was a real zero, a measured zero. Then Sharjah's short square boundaries arrived and produced a 226 chase — Rajasthan Royals hunted down Kings XI Punjab's 223/2 with three balls left. I shut the model down, pulled the home term, added a venue-boundary coefficient, and republished as v4.0 with a full change log eleven days later.
The sheet said eleven days. The stadium said nothing at all. Even then the sheet said eleven days and the stadium said nothing — except that the stadium saying nothing was itself data: empty stands. The empty sheet in front of me now is not a zero. It is an absence. Filing both into the same column is the most expensive mistake in reporting.
Take a bowler to see the gap. An economy of 0.00 can be written two ways — one, he never bowled an over, so there is no rate to speak of; two, he bowled a maiden, so the rate genuinely is zero. The two carry different prices. On an auction sheet the first player has no valuation and the second is expensive. A desk that writes both as "0.00" has put a lie inside its own spreadsheet.
Every crore has a column, and every column has a lie. Here the lie existed before launch, in the column claiming the information points had been found.

The easy road I did not take
I had the cricket_world label in hand. One tag, one deadline, two thousand words of space. The easiest way to fill that space would have been to lift the month's biggest cricket subject — auction purse, retention cost, transfer-window chatter — and write eight hundred words in a register that sounds like a stage. The reader would not have noticed, because the numbers in it would have been famous and round. But it would not have been an article produced by the cricket_world label. It would have been a guess produced by the label.
Suppose that guess got published and someone treated it as a source. The next desk's Stage-1 would ingest it. Information points would this time be found — the text now contains fact-shaped sentences — and the pipeline would pass them through cleanly. An empty sheet becomes a full sheet, and nothing sits behind the full sheet. This is the oldest form of corruption in a data circuit: the hurry to fill an absence, then treating the filled thing as evidence.

Transfer-window sheets catch this disease worst. Word arrives that a player is moving, with no source, no timestamp, and inside three days that rumour has passed through two articles and come out the far side as a "reported development". A rumour has three columns — who said it, when they said it, and where the money runs. When all three are blank, the thing is not information, it is noise. On my sheet such an entry is not zero. It is vacant.
Ledger hubris has an inverted form. The usual error is trusting the sheet and dismissing the stadium as noise. This error is cheaper than that — the man trusts the label and never opens the sheet at all. Four decades at a desk taught me that a column containing an instruction is not a column. It is a token for work that has not been done.
Two places the pipeline is leaking
First: the extraction module returned empty-handed and set off no alarm. A zero extraction is not a legitimate output — it is the clearest possible signal that the module failed. When a batter faces twelve balls and is out, the card does not show "0". It shows twelve balls, zero runs, out — three separate pieces of knowledge. Here the pipeline dropped all three into one empty box and moved on.
Second: the field design contains a circular dependency. Entities Involved says "identify from the information points above". Source Quality says "judge from the source field of the information points". Both are defined by reference to the thing that is empty, and neither has a net to catch itself when it falls. The design assumes the column above will never be blank. That is a bridge whose load calculation assumed the river would never run.
If I owned this pipeline, v5.0 would add four things, each with a date in the change log.
One, a pre-flight gate. An empty information-point list stops the run, loudly, with an error. Two, a null policy declared per column — whether the correct behaviour on empty upstream input is N/A or INSUFFICIENT_INPUT. Three, a source chain ledger — for every article, a record of which document its data came from and what became of that document. Four, a change log that names which column lied in the previous version and why.
Rebuilds are not stories; they are sequences with dates attached. That eleven-day UAE rebuild was not a story either — it was a queue of four dates. The date the model was shut down, the date the home term was pulled, the date the venue coefficient went in, the date v4.0 shipped. This pipeline needs dates too, or the next run returns the same empty sheet and somebody fills it with N/A again.
Bazball broke my draw prior at Lord's in the summer of 2026 in exactly the same way. England chased 277 against New Zealand in fifty overs — Jonny Bairstow 136 off 92 balls, Ben Stokes unbeaten at the close. I booked the loss in full, because the sheet was wrong and the ground was right. The remedy for a wrong sheet is not to hide the sheet; the remedy is to stamp a version number on it and publish the change log.
What did not get printed is the story
We argue about a bowler's economy, about a dropped catch, about the "clear and obvious error" clause in DRS — itself a vague condition whose interior holds more judgment space than people admit. All of that argument rests on one precondition: the scorecard is correct. Where the scorecard is incomplete, the review debate has nothing to stand on. Disagreement only grows when both sides are reading the same sheet.
There is nothing in this Stage-1 output worth disagreeing about — type unclassified, summary blank, stance N/A, time sensitivity unevaluated. There is exactly one correct answer here, and it is that this sheet is ineligible for audit. I wrote that. It was not easy to write, because the desk asked for two thousand words and I spent roughly two thousand words explaining why they could not be written from this input.
It is also true that one piece of news does come out of this sheet, and it is not cricket news — it is news about the desk that publishes cricket news. In a system where an empty list slides quietly downstream, the next list that looks full deserves exactly the same trust. The reader has a right to know whether the numbers in front of them were measured or filled in.
The next-round signal
Next time a sheet lands in front of you, ask one question — does the blank column say N/A, or something else? If it says N/A, the sheet is telling you what it could not find. If it holds an instruction, the sheet is telling you it did not even try to fill itself. And if a confident number is sitting there, the first question should be: which column produced this number, and who is the source for that column.
The whole business of cricket — auction purse, broadcast rights, retention cost, per-delivery value — stands on these columns. The day the trade stops being able to tell a filled entry from a measured one, the accounting stops. One more entry went into my notebook tonight: Stage-1, v4.x, nine columns, eight empty. Status — unreconciled. When the sheet comes back full, we will find out whether it contains deliveries or only over numbers.
