Methodology
What can be checked, and what cannot
Every hard number in this case is either computed in-repo from committed data, or it is a hand-entered value that had to clear a gate before any module could read it. This page is the ledger. It is counted from the repository on every build, so it cannot flatter itself.
46
hand-entered values in the whole project
everything else is computed from source data
87%
cleared the gate (40 of 46)
only VERIFIED and CORRECTED_VERIFIED may be read by a module
82%
of the job description evidenced (14 of 17)
self-scored, and deliberately not engineered upward
The gate
A hand-entered number is unusable until a person has checked it against a named primary source. Asking for one that has not cleared raises, and the module simply cannot run. It has blocked real work rather than being relaxed, which is the only evidence that a gate is real.
- 31VERIFIEDchecked against the primary source named in the row
- 9CORRECTED_VERIFIEDthe sheet value was wrong; corrected against the primary source
- 3UNVERIFIED_NO_PRIMARYplausible, and no primary source exists to check it against
- 2NOT_AVAILABLEthe figure is not published by anyone
- 1MODELEDno one publishes it, so it is a labelled modelled knob with a sensitivity beside it
The 6 that never cleared, and why they never will
These are terminal, not a to-do list. Naming them is the point: a case that reports only what it could verify, without saying what it could not, is telling half the story.
| Value | Status | Why it stays open |
|---|---|---|
| air_india_yield_inr_per_rpk | NOT_AVAILABLE | Air India is unlisted and files no exchange results. Partial visibility only via Singapore Airlines 25.1 percent stake disclosures. Long haul yield must be proxied and the proxy labelled on the chart. |
| aircraft_utilisation_hours_per_day_active | NOT_AVAILABLE | CLOSED AS NOT DISCLOSED, not left hanging. The figure exists inside IndiGo and would close this row in one line, but two primary documents were searched and neither publishes it. The Annual Report confirms the AOG situation and an IAE compe |
| india_dubai_weekly_seat_entitlement_one_side | UNVERIFIED_NO_PRIMARY | SECONDARY BY NECESSITY, not by laziness. India treats bilateral entitlements as restricted: the Ministry of Civil Aviation publishes a 'List of Air Services Agreements' and a 'Guidelines for publication/sharing of information pertaining to |
| gulf_hub_connect_premium_pct | MODELED | Unchanged - genuinely modeled, no source expected. Status set to MODELED rather than NOT_AVAILABLE so it is not confused with row 10, where a real figure exists but is not disclosed. Keep the modeled label on any chart. |
| gulf_od_share_pct | UNVERIFIED_NO_PRIMARY | PROMOTED INTO THE GATE, and the reason matters. This figure was carried on the live page and in docs/storyline.md as a hard number ('roughly 40 percent') with no row here at all, which means dp.assumption() never saw it. CLAIM WITHDRAWN 202 |
| india_abu_dhabi_weekly_seat_entitlement_one_side | UNVERIFIED_NO_PRIMARY | SECONDARY BY NECESSITY, exactly as india_dubai_weekly_seat_entitlement_one_side, and for the same reason: India treats bilateral entitlements as restricted and publishes no seat table. BETTER CORROBORATED THAN THE DUBAI ROW, which rests on |
10 documented changes of mind
Each is dated and cites the commit it happened in, including a claim that was published on the page and had to be withdrawn. An analysis that never bent under its own evidence was not really run.
- 1"Gulf first" became "compete with the Gulf hubs, do not fly to them"
- 2"India is losing its own market" became "India is winning it, just not in long-haul"
- 3A wrong answer that passed all 72 tests
- 4A published margin claim, withdrawn
- 5Verifying the gated numbers made the recommendation harder to argue
- 6A widely quoted utilisation figure that did not survive arithmetic
- 7"No Next.js rebuild" became "no rebuild of the ANALYSIS, and a real delivery layer"
- 8A delivery layer was built that was thinner than the surface it replaced
- 9A reason for not looking, which was false
- 10The register fired, and one impact grade was wrong
Where the numbers are checked twice
Two independent agencies now cover this case from the other end, at two different levels. Europe is checked route by route and agrees closely. The Gulf, which carries half the traffic and all of the argument, is checked country by country, and the two agencies disagree there in a way that is the finding rather than a problem.
Europe · route level
2.6%
apart from Eurostat, measuring the same routes from the other end
Seven European countries, same routes from the other end. This covers 5.6% of India’s international traffic, and that figure has not moved: no Gulf authority publishes route statistics, so route-level cover is still Europe only.
The Gulf · country level · 2024
3.7% apart on departures
9.9 points apart on destination
DGCA and IATA agree that 36.66M and 38.01M passengers left India. They disagree on how many were going to the UAE: 29.8% of sectors against 19.9% of origin-destination traffic, a gap of 3.33M people.
They cannot both be right about the destination and they do not have to be. DGCA records the sector flown, IATA records where the journey ends, and the difference is the passenger who lands in Dubai and boards another aeroplane. That difference is the case.
Against the Gulf six, IATA’s wider Middle East region gives a lower bound of 3.92M connecting passengers one way, so 7.84M both ways, against the 8.49M this case models. The load-bearing modelled number is corroborated by measurement, and is slightly conservative. It is not replaced: no source publishes a Gulf six origin-destination share, so gulf_od_share_pct stays gated.
| Gulf point | Seats a week, implied | Reported entitlement | Used |
|---|---|---|---|
| DUBAI | 118,159 | 133,008 | 88.8% |
| ABUDHABI | 70,107 | 100,000 | 70.1% |
The entitlement figures themselves are the weakest link in the recommendation: India publishes no entitlement table, so they carry UNVERIFIED_NO_PRIMARY and are corroborated only from the traffic end.