Expand description
The multi-repo scan loop (§10, step 4).
Repos are scanned serially (no async in v1). Each repo degrades
independently: a missing or unreadable lockfile becomes an Errored
RepoOutcome and the run continues — but that gap is what later forces a
non-clean exit (§8), since we cannot claim a repo is clean without reading it.
Output here is pre-correlation: every finding carries a single
occurrence. Grouping across the fleet happens in correlate (M4).
Structs§
- GhActions
Scan - Everything the GitHub Actions scan path needs. Like the other Tier-C feeders it is
toolchain-free only (the matcher reads
.github/workflows/*.ymland an OSV mirror, building nothing), so the only input is thefile://OSV mirror, absent which a workflow repo is an honest gap. - GoScan
- Everything the Go scan path needs, bundled so it threads through the fleet walk as
one argument.
govulncheckisNonewhen consent/binary are absent, which routes the repo to the toolchain-free Tier-C matcher (or an errored gap); the rest mirrorfleetreach_go::GoScanOptions. - HexScan
- Everything the Hex scan path needs. Like the other Tier-C feeders it is toolchain-free
only (the matcher reads
mix.lockand an OSV mirror, building nothing), so the only input is thefile://OSV mirror, absent which an Elixir repo is an honest gap. - Julia
Scan - Everything the Julia scan path needs. Like the other Tier-C feeders it is toolchain-free
only (the matcher reads
Manifest.tomland an OSV mirror, building nothing), so the only input is thefile://OSV mirror, absent which a Julia repo is an honest gap. - Maven
Scan - Everything the Maven scan path needs. Like the other Tier-C feeders it is toolchain-free
only (the matcher reads
gradle.lockfile/pom.xmland an OSV mirror, building nothing), so the only input is thefile://OSV mirror, absent which a Java repo is an honest gap. - NpmScan
- Everything the npm scan path needs. npm is toolchain-free only (the Tier-C
matcher reads
package-lock.jsonand an OSV mirror, building nothing), so unlikeGoScanthere is no binary, sandbox, or online mode — just thefile://<dir>OSV mirror, absent which an npm repo is an honest gap. - NuGet
Scan - Everything the NuGet scan path needs. Like the other Tier-C feeders it is toolchain-free
only (the matcher reads
packages.lock.jsonand an OSV mirror, building nothing), so the only input is thefile://OSV mirror, absent which a .NET repo is an honest gap. - Packagist
Scan - Everything the Packagist scan path needs. Like npm/PyPI/RubyGems it is toolchain-free
only (the Tier-C matcher reads
composer.lockand an OSV mirror, building nothing), so the only input is thefile://OSV mirror, absent which a PHP repo is an honest gap. - PyPi
Scan - Everything the PyPI scan path needs. Like npm it is toolchain-free only (the
Tier-C matcher reads a Python lockfile and an OSV mirror, building nothing), so the
only input is the
file://OSV mirror, absent which a PyPI repo is an honest gap. - Ruby
Gems Scan - Everything the RubyGems scan path needs. Like npm/PyPI it is toolchain-free only
(the Tier-C matcher reads
Gemfile.lockand an OSV mirror, building nothing), so the only input is thefile://OSV mirror, absent which a Ruby repo is an honest gap. - Scan
Data - The aggregated, pre-correlation result of scanning a fleet.
- Swift
Scan - Everything the Swift scan path needs. Like the other Tier-C feeders it is toolchain-free
only (the matcher reads
Package.resolvedand an OSV mirror, building nothing), so the only input is thefile://OSV mirror, absent which a Swift repo is an honest gap. - Toolchain
- An installed toolchain to additionally scan against
Collection::Rust.
Functions§
- discover_
lockfiles - Resolve the lockfile(s) for a repo: a single
Cargo.lockat the root, or — whenglob = true— everyCargo.lockwithinglob_max_depthof the root. - scan_
fleet - Scan every repo in
config, plus the toolchain if provided. Whenhost_tripleisSome, each finding is additionally annotated (viacargo tree) with whether the package is actually built — seecrate::resolve.