# Popper V2 rung-3 batch r3-b1 — pinning-pass report (2026-08-04)

Pinning pass over the 38 surviving conjectures from
`docs/generated/popper_v2_rung3_triage_20260804.md` (r3-b1-01..40, excluding
KILLED-AT-COMPILE r3-b1-22 and r3-b1-39). Read-only against the prod DB
(`docker exec inferopedia-db-1 psql -U inferopedia -d inferopedia`), aggregate
queries only, no writes, no git. Per the triage doc's binding rulings: bands are
frozen as minted and never adjusted; Gujarat and Chandigarh are out of this batch;
J&K (state_id 15), Assam (4), Gujarat (12), and all tail states were never queried
except the one explicitly sanctioned 210-lead aggregate (source-wide `GROUP BY
holding_state_id`, counts only, no other content field — see §4).

**Result: all 38 conjectures PASS AT COMPILE.** No precise training-side value fell
outside its frozen band. Four precision corrections were found (all non-fatal —
see §5); the four CONDITIONAL conjectures all resolved to REGISTERED (unconditional
survival), detailed in §3.

## Methodology

Two session-scoped temp tables were built once against `scriptome_manuscriptrecord`
(source_id=51, namami-kritisampada), restricted by `WHERE raw->>'holding_state_id'
IN (...)` to exactly the 11 complete training states (Bihar=5, Himachal Pradesh=14,
Karnataka=17, Kerala=18, Madhya Pradesh=20, Maharashtra=21, Odisha=26, Rajasthan=29,
Tamil Nadu=31, Uttar Pradesh=33, West Bengal=35) — this state list is baked into the
`WHERE` clause of every query that built these tables, so it is structurally
impossible for them to contain holdout/tail/Andhra-Pradesh content:

- `namami11` — one row per record with the ~10 fields needed across files 2-4 plus
  the per-state parts of file 1, extracted from `raw` once. Built with
  `SET enable_indexscan=off` (per the minting run's own fix for a bad planner
  choice on the JSONB text filter), then indexed on state. Build cost: 45.35s scan
  + 15.79s index + 2.39s analyze = 63.5s, amortized across ~25 conjectures.
- `inst_ranked` — one row per (state, `raw.institute_raw`), ranked by holdings
  within state, derived from `namami11`. Build cost: 7.22s + 0.10s index + 3.37s
  analyze = 10.7s, amortized across 11 concentration/regression/Unicode
  conjectures (-02/-10's NAMAMI side, -11..18, -33).

Whole-source cross-source comparators (file 1) were run directly against the base
table (no temp table needed; largest was 234,794-234,861-row sources, cheap).

Every `frozen_query` recorded in the three JSON deliverables is the **standalone,
single-state form** — the query validation will actually run, verbatim, against one
holdout state at a time when it lands. That is deliberately *not* the same text as
the batched temp-table machinery used to produce all 11 training values efficiently
in one pass; the batching is a pinning-pass efficiency choice, documented in each
entry's `query_method_note`, not part of the frozen instrument itself.

Full per-conjecture detail (exact query text, per-state training values, band,
band_check, runtime, rowcount) is in:
- `docs/generated/popper_v2_rung3_pinned_instruments_a.json` (r3-b1-01..14)
- `docs/generated/popper_v2_rung3_pinned_instruments_b.json` (r3-b1-15..28, excl. -22)
- `docs/generated/popper_v2_rung3_pinned_instruments_c.json` (r3-b1-29..40, excl. -39)

## 1. Per-conjecture compile table

All values below are precise pinning-pass recomputations, not minted approximations.
"Margin" is the gap between the tightest training-side value and its band edge, in
percentage points unless noted. B* = Pattern B (future-only; band is the
just-measured baseline itself, not a real prior check — trivially "inside").

| ID | Family | Band | Tightest training value | Margin | Verdict |
|---|---|---|---|---|---|
| r3-b1-01 | date coverage | ceiling <1%, >=1 OoM below comparators | 0% (all 11 states) | full | PASS |
| r3-b1-02 | top-1 concentration | ceiling 40% | WB 25.49% / CDLI 31.39% | 8.6–14.5 | PASS |
| r3-b1-03 | fragment dates | [1150,1450] | MPO 1280.61, Fragmentarium 1280.29 | ~130–170 | PASS |
| r3-b1-04 | medium_class mix | B* (baseline) | — | — | PASS (baseline) |
| r3-b1-05 | ContainedText density | B* (±15% of self) | — | — | PASS (baseline) |
| r3-b1-06 | FANKHA repo completeness | B* (±15pp of self) | — | — | PASS (baseline) |
| r3-b1-07 | SfarData multi-scribe rate | [3%,9%] | 5.379% | 2.4–3.6pp | PASS |
| r3-b1-08 | extent_leaves vs NGMCP | ceiling <1% (training) | 0% (all 11 states) | full | PASS (CONDITIONAL, resolved) |
| r3-b1-09 | exact-rate per source | B* (±15pp of self) | — | — | PASS (baseline) |
| r3-b1-10 | top-10/12 concentration | ceiling 92% | WB 85.06% / DS 88.93% | 3.1–6.9 | PASS |
| r3-b1-11 | top-1 (India-only) | ceiling 40% | WB 25.49% | 14.5 | PASS |
| r3-b1-12 | top-3 concentration | ceiling 75% | WB 57.74% | 17.3 | PASS |
| r3-b1-13 | top-12 HHI-lite | ceiling 1500 | WB 1385.79 | 114 (7.6%) | PASS (CONDITIONAL, resolved) |
| r3-b1-14 | top1/top2 ratio | ceiling 20 | HP 15.83 | 4.17 | PASS |
| r3-b1-15 | distinct institutes | floor 50 | WB 196 | 146 | PASS |
| r3-b1-16 | institute density/1000 | ceiling 103 | Odisha 51.60 | 51.4 | PASS |
| r3-b1-17 | log-log slope | [-3.0,-0.3] | WB -2.355 / HP -0.567 | 0.645 / 0.267 | PASS (CONDITIONAL, resolved) |
| r3-b1-18 | tail-UT top-1 (predictive) | n/a — no training pass/fail | WB threshold 25.49% confirmed | — | PASS (no compile check possible) |
| r3-b1-19 | HP Tibetan ceiling (predictive) | threshold 53,727 (frozen) | LTWA true count 53,697 | see §5 | PASS (precision note) |
| r3-b1-20 | distinct script_group | floor 6 | Kerala 6 | 0 (exact) | PASS (precision note, see §5) |
| r3-b1-21 | sanskrit floor | floor 20% | HP 22.42% | 2.42 | PASS |
| r3-b1-23 | unclassified ceiling | ceiling 45% | Bihar 41.26% | 3.74 | PASS |
| r3-b1-24 | unrecognised_evidence | ceiling 35% | Bihar 29.45% | 5.55 | PASS |
| r3-b1-25 | no_language_or_script_evidence | ceiling 15% | Bihar 11.80% | 3.20 | PASS |
| r3-b1-26 | script basis | ceiling 2% | HP 1.604% | 0.396 | PASS |
| r3-b1-27 | script_outranks_language_facet | ceiling 0.1% | HP 0.0331% | 0.067 | PASS |
| r3-b1-28 | tibeto_burman (ceiling side) | ceiling 0.5% | WB 0.131% | 0.369 | PASS |
| r3-b1-29 | brahmic_southern bimodal | belt >75%, non-belt <15% | TN 83.29% / Rajasthan 9.24% | 8.3 / 5.8 | PASS |
| r3-b1-30 | dravidian bimodal | belt >20%, non-belt <5% | Karnataka 27.47% / Rajasthan 2.74% | 7.5 / 2.3 | PASS |
| r3-b1-31 | sanskritic vs indo_aryan | exactly 1 exception (Odisha) | confirmed sole exception | — | PASS |
| r3-b1-32 | max basis share floor | floor 35% | Bihar 40.62% | 5.62 | PASS |
| r3-b1-33 | Unicode belt split | clean belt/non-belt separation | belt min 45.03% vs non-belt max 14.10% | 30.9 | PASS (CONDITIONAL, resolved) |
| r3-b1-34 | holding_is_not_origin | exact zero | 0 exceptions / ~4.22M | full | PASS |
| r3-b1-35 | date_precision exact-zero | exact zero | 0 exceptions / ~4.22M | full | PASS |
| r3-b1-36 | subject density | [0.15%,1.2%] | Kerala 0.218% / TN 0.947% | 0.068 / 0.253 | PASS |
| r3-b1-37 | language count | [30,160] | Kerala 41 / UP 146 | 11 / 14 | PASS |
| r3-b1-38 | islamic bimodal | {UP,Bihar}>10%, others <2% | UP 18.48%,Bihar 15.09% / WB 1.55% | 5.09 / 0.45 | PASS |
| r3-b1-40 | extent_leaves (India-only) | ceiling 0.5% | 0% (all 11 states) | full | PASS (CONDITIONAL, resolved) |

**38/38 PASS at compile. 0 fail.**

## 2. Tightest-margin watchlist

Not failures, but the conjectures with the least room, worth watching first when
holdout states land: r3-b1-27 (0.067pp), r3-b1-26 (0.396pp), r3-b1-38's ceiling side
(0.45pp), r3-b1-20 (Kerala sits exactly at its floor, zero margin), r3-b1-13 (7.6%
relative margin, the tightest CONDITIONAL).

## 3. The four conditionals

**r3-b1-08 / r3-b1-40 (extent_leaves coverage).** All 11 training states show
extent_leaves populated on **exactly 0 records** (not merely under the 1%/0.5%
ceilings — literal zero). NGMCP comparator: 97.63% populated (15,438/15,812),
confirming the contrast is real. **Concentration finding:** the source-wide rate
(11,862/4,425,049 = 0.2681%, updated from minting's 0.2704%) is **100% concentrated
outside the 11 training states** — none of it is spread across training. This is the
honest, slightly uncomfortable answer to the conditional's own question: because
training is uniformly zero, the ceiling is *untested* in the sense that matters — if
a holdout/tail state's landing pipeline used a different detail-fetch step than the
11 training states did, that state alone could carry a rate well above 0.27%. Both
conjectures pass at compile (0% is inside both ceilings), but this concentration
result is flagged as a live risk to watch at validation, not resolvable from
training data alone.

**r3-b1-13 (top-12 HHI-lite).** Precisely re-derived (minting had only an eyeballed
approximation). Max West Bengal 1385.79 — matches minting's ~1386 eyeball closely,
now with a rigorously computed exact figure. Inside the 1500 ceiling with 114 points
(7.6% relative) of margin — the tightest CONDITIONAL, worth attention at validation.

**r3-b1-17 (log-log slope).** Full-distribution regression built and run for all 11
states (`regr_slope(ln(n), ln(rk))`, rk ≤ LEAST(500, n_institutions) — the frozen
instrument minting could only sketch). All 11 slopes land inside [-3.0, -0.3]:
range West Bengal -2.355 (n=196, uncapped) to Himachal Pradesh -0.567 (n=500,
capped). Standard errors (derived from Postgres's `regr_sxx/syy/sxy` via the
standard OLS identity SE = √((Syy − slope·Sxy)/(n−2)/Sxx)) are all tiny (0.003–0.064)
and R² is mostly >0.93 (West Bengal lowest at 0.875) — these are well-determined
fits, not noisy estimates. Tightest margins: Himachal Pradesh (0.267 from the upper
bound) and West Bengal (0.645 from the lower bound); every other state has ≥0.7 of
margin. Per standing ruling 7, power is now reported (SE, R²) rather than left
"not computable."

**r3-b1-33 (mechanical Unicode classifier).** Built and validated: non-Latin iff
`institute_raw` contains any codepoint above U+024F. Postgres's `\x{}` regex escape
does not parse in this build; the working implementation uses `ascii()` (which
returns the Unicode code point under UTF8 encoding) over `unnest(regexp_split_to_
array(inst,''))`, validated against known samples (accented Latin "Bibliothèque
nationale" → max codepoint 232, correctly Latin; Devanagari/Kannada strings →
2381/3277, correctly non-Latin) before running for real. Computed holdings-weighted
over **all** institutions per state (not just top-12, correcting the minted
eyeball). Result: belt (Bihar 45.03%, Madhya Pradesh 60.48%, Rajasthan 92.01%) vs
non-belt (Karnataka 14.10%, Kerala 0.70%, Maharashtra 5.47%, Odisha 0.21%, Tamil
Nadu 0.16%, Himachal Pradesh 7.51%) — **clean separation holds**, belt minimum
(45.03%) clears non-belt maximum (14.10%) by more than 3x, a *cleaner* gap than the
12-per-state eyeball suggested. No contradiction; survives at compile. Rajasthan's
92.01% (97.7% of its 1,005 distinct institutions) was individually spot-checked
against its largest non-Latin institutions and confirmed genuine Devanagari/Kannada
script, not a punctuation false positive. Uttar Pradesh (10.56%) and West Bengal
(5.00%) — left unclassified by the minted statement — both sit below the belt
minimum, consistent with patterning closer to non-belt.

## 4. The 210-lead

One sanctioned aggregate query (source-wide `GROUP BY holding_state_id`, filtered to
`date_precision='century'`, counts only — no other field from any non-training state
was read):

```sql
SELECT raw->>'holding_state_id', count(*) FROM scriptome_manuscriptrecord
WHERE source_id=51 AND date_precision='century' GROUP BY 1 ORDER BY 2 DESC;
```

Result: **Sikkim (state_id 30): 207 rows. Goa (state_id 11): 3 rows.** Total 210,
matching the nationally-observed count exactly. Both are small tail states, **not**
Andhra Pradesh and **not** any of the three named holdouts (Gujarat/J&K/Assam) —
resolving r3-b1-35's own open lead precisely.

## 5. Precision corrections and surprises

- **r3-b1-19 (HP Tibetan ceiling).** The frozen kill-condition threshold (53,727)
  was minted from HP's ALL-tradition top-1-institution count, not a
  `tradition='tibetan'`-filtered count. Running the conjecture's own frozen
  instrument (which does filter on `tradition='tibetan'`) gives **53,697** — 30
  records (0.056%) lower. Per standing ruling 1 the band stays frozen at 53,727;
  this is not a training value falling outside a band (there is no holdout
  observation yet), just a small precision gap in the threshold's own defining
  figure, recorded for the validation record. It makes the effective ceiling
  marginally *more* permissive than a strict re-derivation would set, never less.

- **r3-b1-20 (distinct script_group count).** Minted notes claimed Maharashtra was
  tied with Kerala at the floor (6 each), and gave Madhya Pradesh=7, Rajasthan=7,
  Uttar Pradesh=9. Precise recomputation (cross-checked two ways: direct
  `COUNT(DISTINCT ...)` and manual tally of the per-category breakdown) gives
  **Maharashtra=7, Madhya Pradesh=8, Rajasthan=8, Uttar Pradesh=10** — each one
  higher than minting recorded. Kerala remains the sole state exactly at the floor
  (6, zero margin); the floor check itself is unaffected (min is still 6, still
  ≥6), but "Maharashtra ties Kerala at the floor" does not hold under precise
  recomputation.

- **r3-b1-33's Rajasthan figure (92.01% holdings-weighted non-Latin)** is far above
  the minted top-12 eyeball (83%) — verified genuine on inspection, not a
  classifier artifact (see §3).

- **No other minted approximation moved enough to matter** — file-1 whole-source
  comparators (dated-fractions, exact-rates, repo-completeness, ContainedText
  ratios, fragment means) all reproduced minting's figures to within normal
  corpus-drift noise (typically <0.05pp, reflecting ~7-38k new rows landed across
  various sources since minting, consistent with "the census walk continues
  concurrently").

## 6. Scope discipline note

Every per-state query in this pass filtered `raw->>'holding_state_id'` to the 11
training ids by construction (baked into the temp-table build), making it
structurally impossible to have touched Gujarat/J&K/Assam/Chandigarh/tail/Andhra
Pradesh content. The single exception is the 210-lead (§4), explicitly sanctioned
by the triage doc itself ("→ pinning-lane note (cheap query, r3-b1-35's lead)") as
a source-wide count aggregate — no institution names, no other fields, no content
from those states beyond a per-state row count for one narrow filter.
