==============================================================================
HD 2.4.e — attribute table verification
==============================================================================

[1] Schema (scoping doc §1(c)):
  [OK ] expected=institution_id           VARCHAR  | actual=institution_id           VARCHAR
  [OK ] expected=year                     INTEGER  | actual=year                     INTEGER
  [OK ] expected=era                      VARCHAR  | actual=era                      VARCHAR
  [OK ] expected=med_school_share         DOUBLE   | actual=med_school_share         DOUBLE
  [OK ] expected=clinical_trials_share    DOUBLE   | actual=clinical_trials_share    DOUBLE
  [OK ] expected=med_school_value         DOUBLE   | actual=med_school_value         DOUBLE
  [OK ] expected=clinical_trials_value    DOUBLE   | actual=clinical_trials_value    DOUBLE
  [OK ] expected=source_file              VARCHAR  | actual=source_file              VARCHAR
  [OK ] expected=notes                    VARCHAR  | actual=notes                    VARCHAR

  Schema match: PASS

[2] Total rows + uniqueness on (institution_id, year):
  Total rows:                           34,362
  Distinct (institution_id, year):      34,362
  Uniqueness: PASS

[3] Per-era population:
  era       n_rows    n_med_v     n_ct_v    n_med_s     n_ct_s
  A         20,961          0          0          0          0
  B         13,401      2,307      2,693      2,307      2,693
  Era-A NULL discipline: PASS

[4] Year coverage by era:
  era=A years=[1975, 2009] n_distinct=35
  era=B years=[2010, 2024] n_distinct=15

[5] Era-B share value ranges:
  med_school_share:      [         0.0,          1.0]
  clinical_trials_share: [2.0325285875145836e-06,          1.0]
  Shares in [0, ~1]: PASS

[6] Q5 raw-vs-canonical drift coverage by year:
    year     n_rows   n_ct_value
    2010        744          167
    2011        912          175
    2012        894          165
    2013        886          166
    2014        889          171
    2015        898          174
    2016        896          171
    2017        898          177
    2018        911          178
    2019        914          185
    2020        916          184
    2021        908          190
    2022        900          193
    2023        910          199
    2024        925          198
  Q5 covered every era-B year: PASS

==============================================================================
HD 2.4.e scope verification summary:
==============================================================================
  [PASS] Schema matches §1(c) spec
  [PASS] (institution_id, year) uniqueness
  [PASS] Era-A Q4/Q5 NULL discipline
  [PASS] Era-B shares within [0, ~1]
  [PASS] Q5 coverage at every era-B year

  Verdict: HD 2.4.e CLOSED-AT-HD-2.4.d
