Your browser sucks, JavaScript disabled! Gunnar's console needs JavaScript and WebAssembly. Git over SSH on port 2222 does not.

mikronova/modgunn

.nornir/rollup-guide.md

rollup — guide

Class: guide · audience: someone summarizing findings at fleet altitude. The what is in rollup-design.md.

f0 — roll up a fleet scan

The common path — straight from a warehouse fleet scan to a fleet posture:

let findings = wh.scan_fleet()?;                             // Vec<FleetFinding>
let rollup = modgunn::rollup::rollup_fleet_findings(&findings);
println!("{} repos affected, worst = {:?}", rollup.affected_repos, rollup.severity.worst());
for (component, n) in &rollup.top_components { println!("{n:>3}  {component}"); }

f1 — from your own rows (no warehouse)

use modgunn::rollup::{repo_health, fleet_rollup, FindingRow};
use modgunn::core::Severity;

let rows = vec![
    FindingRow { repo: "app-a".into(), component: "some-crate 1.2.3".into(), severity: Severity::High },
    // …
];
let per_repo = repo_health(&rows);      // Vec<RepoHealth>
let fleet    = fleet_rollup(&rows);     // FleetRollup

f0 — a severity histogram / health score

use modgunn::rollup::SeverityHistogram;
let hist = SeverityHistogram::of(rows.iter().map(|r| r.severity));
println!("worst {:?}, health {:.2}", hist.worst(), hist.health_score());

Gotchas