π§βπ» Intermediate Issue β a complex task spanning multiple modules, with real design decisions to own.
Time: ~25 hours Β· Prerequisites: comfortable navigating this repo (a completed beginner issue is the usual route; demonstrated CI/CD proficiency substitutes for workflow-focused issues).
We expect more than "it works": maintainable code that fits the existing architecture.
The task
Blocked by #359 β its ci_health_checks.csv schema is this view's input, and its failures table means nothing waits on this issue.
Problem:
Once ci_health lands, its overview problem is 12 checks Γ ~41 repos β too many cells for a table, exactly the shape the HIPs coverage matrix already solves. The matrix component is generic by design ("a generic entity Γ category matrix" per its own type docs), but its cell model is HIP-flavored: {merged, open} counts with a magnitude heat ramp. CI health needs categorical cells: pass / fail / na / review.
What done looks like:
A repos Γ checks matrix on the Security & scorecards tab: rows = repos sorted worst-first, columns = checks grouped into bands by family (supply chain / required apps / hygiene β mirroring how the HIP matrix bands SDKs), cells rendering the categorical status distinctly (na must never read as fail), and the evidence popover showing each finding's file:line β the same drill-through the HIP matrix does for PR evidence. Server side, a views module builds the matrix doc from the findings CSV following the CUSTOM_VIEWS_MODULE pattern (export/hip_views.py is the worked example). The design decision you own: generalise MatrixView's cell model versus a sibling categorical view β argue it in your approach comment; drive-by breakage of the HIP matrix is the risk either way, and its existing tests must stay green.
Modules involved / constraints: export/ (new views builder), dashboard_spec/security.py (view registration), web/src/api.ts + the matrix components and their tests. Maintainer-side presentation research exists (failures table + KPI tiles ship with #359; this matrix is the browse layer) β non-binding.
How to work on this
- Claim it: comment
/assign and wait to be assigned β unassigned PRs are closed automatically.
- Get a plan: once assigned, comment
@coderabbitai plan for a draft plan, then do your own investigation β docs/architecture.md maps the layers and their rules.
- Propose your approach as a comment before coding. A paragraph is enough; early feedback here routinely saves days of rework.
π€ AI: tools are welcome; verified work is required β you can explain every line and defend every design choice. See the AI policy. Fully automated bot PRs are closed.
Worth knowing about this repo before you design:
- The layer rules in docs/architecture.md are strict β review will hold your solution to them.
- Tests mirror src (
tests/<pkg>/test_<module>.py), and the output-contract test pins the pipeline output surface β if your change adds or renames outputs, update the contract deliberately.
Before opening your PR:
Stuck? Comment here with what you've tried β see getting help.
The task
Blocked by #359 β its
ci_health_checks.csvschema is this view's input, and its failures table means nothing waits on this issue.Problem:
Once ci_health lands, its overview problem is 12 checks Γ ~41 repos β too many cells for a table, exactly the shape the HIPs coverage matrix already solves. The matrix component is generic by design ("a generic entity Γ category matrix" per its own type docs), but its cell model is HIP-flavored:
{merged, open}counts with a magnitude heat ramp. CI health needs categorical cells: pass / fail / na / review.What done looks like:
A repos Γ checks matrix on the Security & scorecards tab: rows = repos sorted worst-first, columns = checks grouped into bands by family (supply chain / required apps / hygiene β mirroring how the HIP matrix bands SDKs), cells rendering the categorical status distinctly (
namust never read asfail), and the evidence popover showing each finding'sfile:lineβ the same drill-through the HIP matrix does for PR evidence. Server side, a views module builds the matrix doc from the findings CSV following theCUSTOM_VIEWS_MODULEpattern (export/hip_views.pyis the worked example). The design decision you own: generaliseMatrixView's cell model versus a sibling categorical view β argue it in your approach comment; drive-by breakage of the HIP matrix is the risk either way, and its existing tests must stay green.Modules involved / constraints:
export/(new views builder),dashboard_spec/security.py(view registration),web/src/api.ts+ the matrix components and their tests. Maintainer-side presentation research exists (failures table + KPI tiles ship with #359; this matrix is the browse layer) β non-binding.How to work on this
/assignand wait to be assigned β unassigned PRs are closed automatically.@coderabbitai planfor a draft plan, then do your own investigation β docs/architecture.md maps the layers and their rules.π€ AI: tools are welcome; verified work is required β you can explain every line and defend every design choice. See the AI policy. Fully automated bot PRs are closed.
Worth knowing about this repo before you design:
tests/<pkg>/test_<module>.py), and the output-contract test pins the pipeline output surface β if your change adds or renames outputs, update the contract deliberately.Before opening your PR:
Stuck? Comment here with what you've tried β see getting help.