- cef_universe_run.py: resumable batch over all 295 CEFs ->
cef_annual_all.json (241 parsed, actual per-share character).
- cef_rank_all.json: 239-fund ranking, actual char x (t5 + 0.4 vol5);
surfaces FXBY and DPG beyond the original shortlist.
- share fractions now use the component sum as denominator (always
sum to 1); dist_tot remains the validity gate. Fixes CEE-style
111% sums when the NAV-identity fallback total is short.
- server watchdog + app CEF tab; RESEARCH.md updated.