report.py mixed DB-reading generation with string formatting: the four render_*_report(run_id, session) functions each re-fetched via generate_report, so the HTML/Markdown/JSON formatting was welded to storage and could not be unit-tested from a plain dict. Extract the formatting into a new pure report_render module whose renderers take the already-built report dict (no session, no storage import). Migrate every caller to generate-then- render, delete the old coupled renderers with no back-compat shim, and drop the _aggregate_runs middle-man alias in favour of metrics.aggregate_runs. |
||
|---|---|---|
| .. | ||
| rules | ||
| __init__.py | ||
| campaign_runner.py | ||
| campaign_scheduler.py | ||
| engine.py | ||
| judgement.py | ||
| metrics.py | ||
| report_render.py | ||
| report.py | ||