How often does the published four-block formula actually run?
Among 213 published overall cells in the frozen snapshot, 21.1% run a renormalised subset rather than the full published A+B+C+M weight set. Counting a cohort-median imputation as absent rather than present, that share is 62.4%.
What this study cannot tell you
- Block-C substance gap. Effective weights here call
effectiveBlockWeights(present)without a Block-C substance fraction. Live composition may further scale Block C when scorable substance is incomplete; this census does not measure that gap. - Imputed presence. Raw presence treats a non-null block score as present. Measured presence demotes C/M when
c_status/m_statusisIMPUTED_COHORT_MEDIAN. Display fill is not the same as measurement. A block whose status is NULL counts as measured rather than demoted, so the measured share published here is the generous reading of our own coverage: the true share of cells not resting on four measured blocks is at least this high, never lower. It is not a count of imputations — a cell whose Block M is simply absent carries no cohort median and still counts here. - What is new here. That the composite renormalises over the blocks present, and that Block C and Block M can be filled from a cohort median, were already disclosed on the methodology and brand pages. This study adds no mechanism — it is the first count of how often each path actually runs. Read it as a coverage census, not as a disclosure.
- Live-upsert / asOf. The package is a point-in-time scan stamped by
asOf. Live upserts after that stamp are outside the artefact. - Headline vs published populations. This package records
population: published, so every share on this page has a denominator of 213 published overall cells. The other population is materially larger — 675 overall cells exist against 213 that clear the publication filter — and it yields a very different share, because unpublished cells are unpublished largely for having too few blocks. Shares across the two filters are not interchangeable, and quoting one against the other's denominator is the single easiest way to misreport this study. - Cell-vs-brand. Counts are overall
brand_scorescells (brand × vertical × geo), not distinct brands. A brand can contribute multiple cells. - First-party exemption. This study reads IndexFair's own score tables and discloses the instrument (
effectiveBlockWeights+ SQL). It does not redistribute encumbered third-party review corpora.
Method
Effective weights are derived only from effectiveBlockWeights in packages/scoring/src/blockWeights.ts — no hand-maintained weight table. The published formula for this study is presence A+B+C+M; any other presence vector is counted as renormalised. Verbatim instrument source (build-time extract):
export function effectiveBlockWeights(
present: BlockPresenceFlags,
substance?: BlockSubstanceFractions,
): {
A: number;
B: number;
C: number;
M: number;
}Verbatim SQL used for the headline scan (committed as query.sql):
SELECT
bs.brand_id AS "brandId",
bs.block_a_score::float8 AS "blockAScore",
bs.block_b_score::float8 AS "blockBScore",
bs.block_c_score::float8 AS "blockCScore",
bs.block_m_score::float8 AS "blockMScore",
bs.c_status AS "cStatus",
bs.m_status AS "mStatus",
bs.score_mode AS "scoreMode",
bs.floor_clamped AS "floorClamped",
v.code AS "verticalCode",
c.code AS "countryCode",
bs.methodology_version AS "methodologyVersion",
bs.publishable AS "publishable",
bs.confidence_label AS "confidenceLabel",
bs.score::float8 AS "score",
(
bs.aspect_id IS NULL
AND bs.confidence_label <> 'insufficient'
AND bs.publishable = true
AND bs.score IS NOT NULL
AND EXISTS (
SELECT 1
FROM brand_jurisdictions bj
WHERE bj.brand_id = bs.brand_id
AND bj.vertical_id = bs.vertical_id
AND (
bs.country_id IS NULL
OR bj.country_id = bs.country_id
)
AND bj.status = 'active'
AND bj.lifecycle_status = 'active'
AND bj.legal_status = 'licensed'
AND bj.display_mode IN ('in_rating', 'info_only')
)
) AS "isPublished"
FROM brand_scores bs
INNER JOIN verticals v ON v.id = bs.vertical_id
LEFT JOIN countries c ON c.id = bs.country_id
WHERE bs.aspect_id IS NULL
Frozen package path in this repository: docs/research/renormalisation-census-2026/ (manifest digests, CSV buckets, README environment stamp). Regenerated by apps/workers/scripts/generate-renormalisation-census.ts. The per-file sha256 digests, byte lengths, scan instant and generator digest are printed at /verify/renormalisation-census-2026, together with the offline command that re-checks them without a database, a network or any credential.
Findings
All shares below are taken over 213 published overall cells. Raw-presence renormalised share: 21.1%. Measured-presence renormalised share: 62.4%. Methodology version observed: 5.1.0. asOf: 2026-07-28T19:30:27.531Z.
score_mode distribution
| Key | Cells |
|---|---|
| absolute | 84 |
| ruler | 129 |
c_status distribution
| Key | Cells |
|---|---|
| IMPUTED_COHORT_MEDIAN | 65 |
| MEASURED | 130 |
| null | 18 |
m_status distribution
| Key | Cells |
|---|---|
| IMPUTED_COHORT_MEDIAN | 68 |
| MEASURED | 105 |
| NOT_APPLICABLE | 2 |
| null | 38 |
Presence census — raw
| Presence | score_mode | Vertical | Geo | Cells | wA | wB | wC | wM |
|---|---|---|---|---|---|---|---|---|
| A+B | absolute | casino | BR | 1 | 0.467 | 0.533 | 0 | 0 |
| A+B | absolute | casino | PT | 1 | 0.467 | 0.533 | 0 | 0 |
| A+B+C | absolute | betting | AU | 9 | 0.350 | 0.400 | 0.250 | 0 |
| A+B+C | absolute | betting | CA | 5 | 0.350 | 0.400 | 0.250 | 0 |
| A+B+C | absolute | betting | DE | 5 | 0.350 | 0.400 | 0.250 | 0 |
| A+B+C | absolute | betting | ES | 7 | 0.350 | 0.400 | 0.250 | 0 |
| A+B+C | absolute | betting | NL | 3 | 0.350 | 0.400 | 0.250 | 0 |
| A+B+C | absolute | betting | PT | 1 | 0.350 | 0.400 | 0.250 | 0 |
| A+B+C | absolute | casino | BR | 2 | 0.350 | 0.400 | 0.250 | 0 |
| A+B+C | absolute | exchange | GB | 1 | 0.350 | 0.400 | 0.250 | 0 |
| A+B+C | absolute | exchange | US | 1 | 0.350 | 0.400 | 0.250 | 0 |
| A+B+C | ruler | casino | GB | 2 | 0.350 | 0.400 | 0.250 | 0 |
| A+B+C+M | absolute | betting | US | 9 | 0.245 | 0.280 | 0.175 | 0.300 |
| A+B+C+M | absolute | casino | CA | 4 | 0.245 | 0.280 | 0.175 | 0.300 |
| A+B+C+M | absolute | casino | ES | 8 | 0.245 | 0.280 | 0.175 | 0.300 |
| A+B+C+M | absolute | casino | NL | 8 | 0.245 | 0.280 | 0.175 | 0.300 |
| A+B+C+M | absolute | casino | PT | 1 | 0.245 | 0.280 | 0.175 | 0.300 |
| A+B+C+M | absolute | exchange | GB | 6 | 0.245 | 0.280 | 0.175 | 0.300 |
| A+B+C+M | absolute | exchange | US | 5 | 0.245 | 0.280 | 0.175 | 0.300 |
| A+B+C+M | ruler | betting | GB | 40 | 0.245 | 0.280 | 0.175 | 0.300 |
| A+B+C+M | ruler | casino | DE | 18 | 0.245 | 0.280 | 0.175 | 0.300 |
| A+B+C+M | ruler | casino | GB | 50 | 0.245 | 0.280 | 0.175 | 0.300 |
| A+B+C+M | ruler | casino | US | 19 | 0.245 | 0.280 | 0.175 | 0.300 |
| A+B+M | absolute | casino | CA | 1 | 0.297 | 0.339 | 0 | 0.364 |
| A+B+M | absolute | exchange | GB | 1 | 0.297 | 0.339 | 0 | 0.364 |
| A+B+M | absolute | exchange | US | 1 | 0.297 | 0.339 | 0 | 0.364 |
| B+C | absolute | betting | CA | 2 | 0 | 0.615 | 0.385 | 0 |
| B+C+M | absolute | casino | CA | 2 | 0 | 0.371 | 0.232 | 0.397 |
Presence census — measured
| Presence | score_mode | Vertical | Geo | Cells | wA | wB | wC | wM |
|---|---|---|---|---|---|---|---|---|
| A+B | absolute | betting | AU | 4 | 0.467 | 0.533 | 0 | 0 |
| A+B | absolute | betting | CA | 1 | 0.467 | 0.533 | 0 | 0 |
| A+B | absolute | betting | US | 1 | 0.467 | 0.533 | 0 | 0 |
| A+B | absolute | casino | BR | 1 | 0.467 | 0.533 | 0 | 0 |
| A+B | absolute | casino | CA | 1 | 0.467 | 0.533 | 0 | 0 |
| A+B | absolute | casino | ES | 2 | 0.467 | 0.533 | 0 | 0 |
| A+B | absolute | casino | NL | 3 | 0.467 | 0.533 | 0 | 0 |
| A+B | absolute | casino | PT | 1 | 0.467 | 0.533 | 0 | 0 |
| A+B | ruler | betting | GB | 10 | 0.467 | 0.533 | 0 | 0 |
| A+B | ruler | casino | DE | 7 | 0.467 | 0.533 | 0 | 0 |
| A+B | ruler | casino | GB | 14 | 0.467 | 0.533 | 0 | 0 |
| A+B | ruler | casino | US | 2 | 0.467 | 0.533 | 0 | 0 |
| A+B+C | absolute | betting | AU | 5 | 0.350 | 0.400 | 0.250 | 0 |
| A+B+C | absolute | betting | CA | 4 | 0.350 | 0.400 | 0.250 | 0 |
| A+B+C | absolute | betting | DE | 5 | 0.350 | 0.400 | 0.250 | 0 |
| A+B+C | absolute | betting | ES | 7 | 0.350 | 0.400 | 0.250 | 0 |
| A+B+C | absolute | betting | NL | 3 | 0.350 | 0.400 | 0.250 | 0 |
| A+B+C | absolute | betting | PT | 1 | 0.350 | 0.400 | 0.250 | 0 |
| A+B+C | absolute | betting | US | 2 | 0.350 | 0.400 | 0.250 | 0 |
| A+B+C | absolute | casino | BR | 2 | 0.350 | 0.400 | 0.250 | 0 |
| A+B+C | absolute | casino | CA | 1 | 0.350 | 0.400 | 0.250 | 0 |
| A+B+C | absolute | casino | ES | 2 | 0.350 | 0.400 | 0.250 | 0 |
| A+B+C | absolute | casino | NL | 3 | 0.350 | 0.400 | 0.250 | 0 |
| A+B+C | absolute | exchange | GB | 1 | 0.350 | 0.400 | 0.250 | 0 |
| A+B+C | absolute | exchange | US | 1 | 0.350 | 0.400 | 0.250 | 0 |
| A+B+C | ruler | betting | GB | 6 | 0.350 | 0.400 | 0.250 | 0 |
| A+B+C | ruler | casino | DE | 6 | 0.350 | 0.400 | 0.250 | 0 |
| A+B+C | ruler | casino | GB | 4 | 0.350 | 0.400 | 0.250 | 0 |
| A+B+C | ruler | casino | US | 6 | 0.350 | 0.400 | 0.250 | 0 |
| A+B+C+M | absolute | betting | US | 6 | 0.245 | 0.280 | 0.175 | 0.300 |
| A+B+C+M | absolute | casino | CA | 3 | 0.245 | 0.280 | 0.175 | 0.300 |
| A+B+C+M | absolute | casino | ES | 3 | 0.245 | 0.280 | 0.175 | 0.300 |
| A+B+C+M | absolute | casino | NL | 2 | 0.245 | 0.280 | 0.175 | 0.300 |
| A+B+C+M | absolute | casino | PT | 1 | 0.245 | 0.280 | 0.175 | 0.300 |
| A+B+C+M | absolute | exchange | GB | 6 | 0.245 | 0.280 | 0.175 | 0.300 |
| A+B+C+M | absolute | exchange | US | 5 | 0.245 | 0.280 | 0.175 | 0.300 |
| A+B+C+M | ruler | betting | GB | 21 | 0.245 | 0.280 | 0.175 | 0.300 |
| A+B+C+M | ruler | casino | GB | 25 | 0.245 | 0.280 | 0.175 | 0.300 |
| A+B+C+M | ruler | casino | US | 8 | 0.245 | 0.280 | 0.175 | 0.300 |
| A+B+M | absolute | casino | ES | 1 | 0.297 | 0.339 | 0 | 0.364 |
| A+B+M | absolute | exchange | GB | 1 | 0.297 | 0.339 | 0 | 0.364 |
| A+B+M | absolute | exchange | US | 1 | 0.297 | 0.339 | 0 | 0.364 |
| A+B+M | ruler | betting | GB | 3 | 0.297 | 0.339 | 0 | 0.364 |
| A+B+M | ruler | casino | DE | 5 | 0.297 | 0.339 | 0 | 0.364 |
| A+B+M | ruler | casino | GB | 9 | 0.297 | 0.339 | 0 | 0.364 |
| A+B+M | ruler | casino | US | 3 | 0.297 | 0.339 | 0 | 0.364 |
| B+C | absolute | betting | CA | 2 | 0 | 0.615 | 0.385 | 0 |
| B+C+M | absolute | casino | CA | 2 | 0 | 0.371 | 0.232 | 0.397 |
Denominators
- Headline cell count: 675
- Published cell count: 213
- Distinct brand count (package stamp; brand ids never written into buckets): 112
- Floor-clamped cells: 3
- Population filter: published
- Environment: production
Corrections
Factual corrections to this study (method, denominators, or a reproduced share that disagrees with the frozen package) are free and open to everyone. Contact /privacy/contact. Corrections do not change scoring formulas; they correct the research artefact.
Why won't you show us the data? This page publishes derived cell counts and the method that produced them. It does not ship per-brand rows, UUIDs, or encumbered review corpora. The reproducible package in docs/research/renormalisation-census-2026/ is brand-free by construction; production regeneration stays read-only against IndexFair's own score tables.