run (or run-suite) executes cases and stores raw outputs in:
results/runs/<RUN_ID>/cases/<CASE_ID>/...results/runs/<RUN_ID>/cases/<CASE_ID>/case.jsonrun finishes, a run-level report is generated:
results/runs/<RUN_ID>/reports/summary.htmlresults/runs/<RUN_ID>/reports/summary.mdresults/runs/<RUN_ID>/manifest.jsonrebuild-reports works on an existing results/runs/<RUN_ID>:
reports/summary.html and reports/summary.md--recompute-case-json, it recalculates case.json from artifacts first, then rebuilds reportsaggregate-reports reads multiple run directories from results/runs/*, copies required case data into an aggregate directory, and generates:
results/aggregate/<NAME>/reports/summary.htmlresults/aggregate/<NAME>/reports/summary.mdRun report (results/runs/.../reports/...) is for a single run and stays close to raw diagnostics.
It is mainly used for debugging and navigation through raw artifacts (failure causes, timeouts, shell/model/tool behavior).
Aggregate report (results/aggregate/.../reports/...) is a cross-run summary layer with grouping and comparison.
In practice, publishing run reports is usually unnecessary (and awkward on GitHub Pages), because they are diagnostic/raw. The aggregate layer is the publication target.
Sanitization is applied when building the aggregate layer:
case.jsonRaw run data in results/runs/* is not rewritten.
Only the aggregate publish projection is sanitized.