The standalone HTML report faircode profile --html / faircode compare --html generates (faircode/report.py) builds several <table> blocks with <th> header cells (e.g. the drift-comparison table and the per-column breakdown table) but no scope="col" attribute on those headers, and no <caption> describing what each table shows.
Both are cheap, standard HTML accessibility improvements - scope="col" lets a screen reader announce the right column header when reading a data cell, and a <caption> gives the table a name instead of relying on nearby prose. Worth doing on a project centered on auditing ML systems for fairness/accessibility of outcomes, given the report itself is often the artifact that gets shared outside the tool (CI output, email, a PR comment) - so it should hold up on its own, not just in the context of the page around it.
faircode/report.py isn't part of the paper-frozen core (benchmark.py/metrics.py/strategies.py/models.py/manifest.py/loaders.py/significance.py/figures.py per CLAUDE.md §1) - it's the profiler's report renderer, safe to touch.
The standalone HTML report
faircode profile --html/faircode compare --htmlgenerates (faircode/report.py) builds several<table>blocks with<th>header cells (e.g. the drift-comparison table and the per-column breakdown table) but noscope="col"attribute on those headers, and no<caption>describing what each table shows.Both are cheap, standard HTML accessibility improvements -
scope="col"lets a screen reader announce the right column header when reading a data cell, and a<caption>gives the table a name instead of relying on nearby prose. Worth doing on a project centered on auditing ML systems for fairness/accessibility of outcomes, given the report itself is often the artifact that gets shared outside the tool (CI output, email, a PR comment) - so it should hold up on its own, not just in the context of the page around it.faircode/report.pyisn't part of the paper-frozen core (benchmark.py/metrics.py/strategies.py/models.py/manifest.py/loaders.py/significance.py/figures.pyper CLAUDE.md §1) - it's the profiler's report renderer, safe to touch.