# Audit log

Human-curated companion to the git history. Every meaningful change to numbers, sources, or framing is logged here in addition to its commit.

**Conventions**

- One bullet per atomic change.
- `data:` → change to `data.php` (a card was added, retired, or had its number/source updated).
- `content:` → change to a markdown file under `content/`.
- `code:` → change to PHP/CSS/JS that affects how data is rendered.
- Each entry: date · author initials · type · short description · related commit hash (when available).

---

## 2026-05-17 · v0.1 genesis

- `code:` ML · initial scaffold of `sol_web/` mirroring `wto/wto_web` pattern (PHP shell, content-as-markdown, tabbed UI, whitelisted `md.php`).
- `data:` ML · seeded six Macro-Pulse cards covering all six PESTLE pillars and all three horizons (3 live, 2 placeholder, 1 awaiting-data).
- `content:` ML · seeded eight markdown files for the research-flow tabs (overview, thesis, horizons, PESTLE, methodology, sources, audit log, global links).
- `content:` ML · methodology and sources catalog explicitly carried over from the WTO project's verification doctrine.
- `code:` ML · re-skinned the entire site to a Material-Design-inspired light theme (Inter + Source Serif 4, Google blue accent, low-saturation pillar tints).
- `code:` ML · added Primer track (`primer.php`, `sol_primer()` registry, "Primer" nav link) for the zero-prior-knowledge audience layer.
- `content:` ML · seeded eight Primer markdown files (`p1` written; `p2`–`p8` outlined as expandable stubs, each with a forward link).
- `code:` ML · `md.php` cache shortened to 15s + ETag for fast content iteration during writing.

- `content:` ML · `primer:` `p2-how-india-is-governed` initial draft — full first version covering constitutional frame, three branches, state governments, five recurring institutions, and fiscal federalism. ~1400 words.
- `content:` ML · `sources:` added Constitution of India (india.gov.in), Ministry of Finance · DEA, Finance Commission of India, and PRS Legislative Research (new "Indian secondary" section) to the source catalog.

- `content:` ML · `primer:` `p3-the-29-states` initial draft — covers the 5-region frame (south, west, Hindi belt, east, north-east), tier-1/2/3 city classification, special-category status, J&K reorganisation and Delhi's split structure. Includes an illustrative state-comparison table flagged as approximate. ~1500 words.
- `content:` ML · `sources:` promoted **SRS** and **NFHS** to active "Indian primary / official-secondary" sources (used in p3 for state-level fertility, health and labour-force participation references); removed the duplicate NFHS row from the "not yet used" section.

- `content:` ML · `primer-loop:` `p3-the-29-states` promoted through the sourced/verified essay loop — produced two new files: `p3-the-29-states-sourced.md` (every claim and table cell footnoted to a primary source) and `p3-the-29-states-verification-report.md` (cell-by-cell tagging, truth/lie/misinformation/disinformation classification).
- `content:` ML · `verification-finding:` one **misinformation** finding logged in the p3 verification report — HRA city classification was attributed to RBI; the correct attributor is the central government's Central Pay Commission (Department of Expenditure). Fix scheduled for next revision of both the plain and sourced p3 pages; not silently corrected — the audit-log entry preserves the pre-fix state.
- `code:` ML · extended `data.php :: sol_primer()` to support optional `sourced` and `verification` keys per primer entry, and `sol_allowed_md()` to harvest those into the `md.php` whitelist. p3 is the first primer page to use this extension; p1 and p2 will follow when their loops are run.
- `content:` ML · appended a "Sourcing & verification" section to the plain `p3-the-29-states.md` linking to its sourced and verification-report siblings. Section explicitly flags the open misinformation finding so newcomers don't miss it.

- `content:` ML · `verification-fix:` resolved the misinformation finding logged in p3's verification report. HRA city classification (X/Y/Z) is now correctly attributed to the central government's Central Pay Commission framework (administered by Department of Expenditure), not the RBI. Amended in three places: `p3-the-29-states.md` (plain prose), `p3-the-29-states-sourced.md` (prose + footnote), `p3-the-29-states-verification-report.md` (claim #13 retagged VERIFIED (revised); recommendation crossed off). Pre-fix state preserved in git history; audit trail intact.

- `content:` ML · `primer:` `p4-the-demographic-dividend` initial draft — full first version covering the dividend mechanics, India's window opening (~2005) and projected closure (~2045–2055), the Great Internal Divergence with a 13-state TFR table from NFHS-5, the four levers that turn potential into GDP (jobs / FLFP / skill / health), three direct read-throughs to investable themes (southern automation arc, Hindi-belt jobs creation, FLFP as wildcard), failure modes (middle-income trap, demographic-political fallout), and what 2027 census will resolve at district granularity. ~1700 words.

- `content:` ML · `primer:` `p7-what-the-2027-census-actually-is` initial draft — the page that hands the reader directly to the dashboard. Covers the legal basis (Census Act 1948), two enumeration phases (house-listing 2026, population enumeration 2027), what gets enumerated in plain language, six reasons this round matters more than 2011 (16-year gap, delimitation, 16th FC award, migration measurement, DPI rural denominator, climate-vulnerability denominator), the multi-year release cadence (provisional → PCA → B/C series → D-series), the audit-log mechanism for capturing each release, and two political variables (caste enumeration, electoral-roll sync). Maps each of the six dashboard cards back to the specific census release that updates it. ~1900 words.
- `content:` ML · `sources:` added Press Information Bureau (PIB · pib.gov.in) to the active catalog as the primary channel for Government of India press releases, including census release announcements.

- `content:` ML · `primer:` `p8-why-this-moment-is-different` initial draft — closes the Primer narrative arc. Covers the five-fold confluence (2027 census + AI capex + China+1 + DPI export + 16th Finance Commission cycle), why one wave alone would be material vs the unusual feature of the combination, the 5/20/40-year framing applied to this moment, the editorial discipline (30-second rule, investment-implication callouts, state-level-by-default), the five auditability mechanisms a reader can use to challenge any number, and the three growth axes for the portal going forward. ~1700 words. Six of eight Primer pages now fully written; only p5 (DPI stack) and p6 (India in the world today) remain as stubs.
- `content:` ML · no new sources added — p8 cites only at framing level (IEA, BIS, 16th FC, IPCC AR6, OECD long-run scenarios), all already in the catalog.

- `content:` ML · `primer-loop:` `p4-the-demographic-dividend` promoted through the sourced/verified essay loop. Produced two new files: `p4-the-demographic-dividend-sourced.md` (every claim and every table cell footnoted; thirteen-state TFR table is all point figures from NFHS-5) and `p4-the-demographic-dividend-verification-report.md` (cell-by-cell tagging, textual-claim walk by section, truth/lie/misinformation/disinformation classification). **No misinformation findings.** Two author calculations explicitly flagged with inputs and method disclosed (the "roughly two-thirds" aggregate; the "+5pp FLFP → ~50M workers" arithmetic). One follow-up logged: NFHS-5 state-level TFR has no published CI; Methodology page should note this when relevant cards are sourced.
- `code:` ML · `data.php :: sol_primer()` p4 entry extended with `sourced` and `verification` keys. Whitelist propagation is automatic via the existing `sol_allowed_md()` machinery.
- `content:` ML · appended a "Sourcing & verification" section to the plain `p4-the-demographic-dividend.md` linking to its sourced and verification-report siblings, plus a one-paragraph summary of the verification report's principal findings.

- `content:` ML · `primer:` `p5-digital-public-infrastructure` initial draft — full first version covering the public-utility framing of India's DPI ("stack of stacks"), the four foundational layers (Aadhaar, UPI, the DigiLocker/e-KYC/Account Aggregator consent layer, ONDC), the political-economy origin in fiscal-leakage reduction (Rajiv Gandhi's "15 paise" framing → UIDAI), the BIS reference-architecture framing, four investable second-order effects (credit formalisation via AA, DBT-driven fiscal headroom, DPI export, the consented-data layer), and three risks (DPDP Act maturity, function-creep / mandatory-linkage politics, UIDAI single-point-of-failure). ~1500 words. Closes the Aadhaar/UPI/AA/ONDC reference-page gap that previous primer pages had been pointing at.
- `content:` ML · `sources:` added three sources to the catalog ahead of p5: **UIDAI** (Indian primary — Aadhaar enrolment dashboards + authentication-volume statistics), **ONDC** (Indian primary — network transaction statistics + protocol specifications), and **Bank for International Settlements (BIS)** (International / cross-country — DPI as emerging-market reference architecture). UIDAI and ONDC complete the "primary source per layer" coverage for the DPI stack; BIS is the international institutional voice quoted on India's stack design.

- `content:` ML · `primer:` `p6-india-in-the-world-today` initial draft — full first version covering India's strategic-autonomy / multi-alignment doctrine, the macro position (top-five nominal / third PPP / fastest >6%), trade flows (US as #1 partner, China deficit, UAE/Saudi/Russia hydrocarbon mix, services-export offset), capital flows (FDI run-rate, sovereign-debt index inclusion, ~$650-700bn reserves, managed-float regime), the diaspora as a financial-architecture feature (~32M PIO/NRI, >$125bn remittances and the Gulf→white-collar mix shift), the four overlapping groupings (Quad / BRICS+ / SCO / I2U2), Russia-Ukraine as the multi-alignment stress-test, the three infrastructure corridors (IMEC, INSTC, Quad supply-chain → Industrial Corridor Migration card), and the four global forces converging this decade (China slowdown, US-China decoupling, AI capex, energy transition). Closes by mapping each force back to the 2027 census denominator. ~1500 words. Last remaining Primer stub now filled — Primer track is complete (p1-p8 all written).
- `content:` ML · `sources:` added four sources to the catalog ahead of p6: **Ministry of External Affairs (MEA)** (Indian primary — diaspora tallies + foreign-policy briefs + multilateral working papers), **IMF Direction of Trade Statistics (DOTS)** (International — bilateral merchandise-trade flows; distinct from the WEO row), **World Bank · Migration and Remittances Brief / KNOMAD** (International — annual remittance receipts), and **G20 New Delhi Leaders' Declaration & IMEC MoU** (International — official text of the September 2023 declaration and the corridor MoU). MEA also enables the diaspora-statistics path for any future Macro-Pulse card sourced from "Population of Overseas Indians".

- `content:` ML · `primer-loop:` `p5-digital-public-infrastructure` promoted through the sourced/verified essay loop. Produced two new files: `p5-digital-public-infrastructure-sourced.md` (every concrete claim footnoted — Aadhaar/UPI/AA/ONDC volumes to their primary dashboards; Rajiv Gandhi 1985 attribution to *Selected Speeches*; *Puttaswamy I/II* to Supreme Court of India; DPDP Act 2023 to MeitY) and `p5-digital-public-infrastructure-verification-report.md` (section-by-section claim walk, truth/lie/misinformation/disinformation classification). **No misinformation findings.** Four minor `CLARIFIED-IN-LOOP` rows surfaced (Rajiv Gandhi year; Aadhaar auth/day range; PMJDY account count; *Puttaswamy I/II* split) — folded into the sourced version without amending the plain page.
- `content:` ML · `sources:` added two sources to the catalog ahead of the p5 verification loop: **Ministry of Electronics and Information Technology (MeitY)** (Indian primary — DPDP Act 2023 publisher, DigiLocker / NeGD / India Stack policy framework) and **Supreme Court of India** (Indian primary — *Puttaswamy I / II*, *Kesavananda Bharati*, subsequent constitutional-bench rulings).
- `code:` ML · `data.php :: sol_primer()` p5 entry extended with `sourced` and `verification` keys. The two new files propagate automatically into the `md.php` whitelist via the existing `sol_allowed_md()` machinery.
- `content:` ML · appended a "Sourcing & verification" section to the plain `p5-digital-public-infrastructure.md` linking to its sourced and verification-report siblings, plus a one-paragraph summary of the four clarifications surfaced by the loop.

- `content:` ML · `primer-loop:` `p6-india-in-the-world-today` promoted through the sourced/verified essay loop. Produced two new files: `p6-india-in-the-world-today-sourced.md` (every concrete claim footnoted — macro rankings to IMF WEO; bilateral trade to IMF DOTS + DGCI&S; crude dependence to PPAC; services exports gross/net to RBI BoP; FDI to DPIIT; diaspora to MEA; remittances to KNOMAD; corridors to G20 NDLD + Quad joint statements) and `p6-india-in-the-world-today-verification-report.md`. **One misinformation finding logged** — the Trade-flows section's first bullet (plain page) states India's US surplus is "almost entirely on services and pharmaceuticals", which understates the ~$35–40 bn broad-based goods surplus per IMF DOTS / DGCI&S FY24 data. The accurate framing (substantial goods surplus PLUS substantial services surplus) is in the sourced version; the plain page preserves the pre-fix state per the p3 precedent. **Fix scheduled for a subsequent `verification-fix:` commit**, where the services-exports gross/net clarification and the crude-dependence range clarification can be folded in opportunistically. Three additional `CLARIFIED-IN-LOOP` rows logged (crude 85% → 85–88%; services exports ambiguous → net specified; remittances ">$125 bn" → "$129 bn") — co-located in the upcoming fix commit.
- `content:` ML · `sources:` added two sources to the catalog ahead of the p6 verification loop: **DPIIT** (Indian primary — Quarterly FDI Factsheets, PLI administration, ONDC promoter ministry) and **PPAC · Ministry of Petroleum & Natural Gas** (Indian primary — crude import dependence, supplier-country mix, monthly hydrocarbon statistics).
- `code:` ML · `data.php :: sol_primer()` p6 entry extended with `sourced` and `verification` keys. With this commit, p3, p4, p5 and p6 have all been promoted through the loop; only p1, p2, p7 and p8 remain at plain-version only.
- `content:` ML · appended a "Sourcing & verification" section to the plain `p6-india-in-the-world-today.md` linking to its sourced and verification-report siblings, **with an explicit flag of the open misinformation finding** so newcomers don't miss it.

- `content:` ML · `verification-fix:` resolved the misinformation finding logged in p6's verification report. The Trade-flows section's first bullet (US bilateral surplus) had been framed as "almost entirely on services and pharmaceuticals", which understated the ~$35–40 bn broad-based goods surplus (pharma, engineering goods, textiles, gems and jewellery) per IMF DOTS / DGCI&S FY24 data. Amended to the corrected "both goods and services" framing in three places: `p6-india-in-the-world-today.md` (plain prose), `p6-india-in-the-world-today-sourced.md` (correction footnote retagged + at-a-glance row + lede), `p6-india-in-the-world-today-verification-report.md` (claim 2.2 retagged `VERIFIED (revised)`; truth-classification updated; recommendation crossed off; "Now read →" warning lifted). Three co-located `CLARIFIED-IN-LOOP` cleanups folded in at the same time: crude import dependence "85%" → "85–88%" range; services exports "$190–200 bn" → explicit net ($180–200 bn) vs gross ($340 bn+) split; remittances ">$125 bn" → "$129 bn (2024 calendar year)". Pre-fix state of all three files preserved in this commit's parent for audit-trail integrity. p6 verification loop now closes clean.

---

## How to add an entry

When you edit `data.php` or any file under `content/`:

1. Make the commit. Include a one-line summary plus a short body explaining what data changed and why.
2. Add a bullet under the relevant date heading here, with your initials and a one-line description.
3. If the commit hash matters (e.g. it represents a number revision a reader might want to time-travel back to), reference the short SHA.

Example entry shape:

```
- 2026-08-12 · ML · `data:` UPI rural-adoption asOf advanced from 2026-04 to 2026-07; figure 18.4B → 19.6B per NPCI July release. Source link unchanged. (`a1b2c3d`)
```

---

## What does **not** belong in this log

- Typo fixes and pure CSS tweaks (covered by the git history alone).
- Re-organisations of `content/` that don't change any number or framing.
- Content additions that introduce no new data claims (e.g. adding a side-panel that re-states what is already on the dashboard).

The audit log exists for **claims that change**, not for editorial polish.
