VulnParse-Pin is organized as a staged pipeline with strong separation of concerns:
Input -> Validation -> Detection -> Parsing -> Enrichment -> PassRunner -> Output
src/vulnparse_pin/main.py — CLI orchestration and end-to-end workflowsrc/vulnparse_pin/parsers/ — scanner format adapterssrc/vulnparse_pin/core/ — identity, schema detection, pass system, dataclassessrc/vulnparse_pin/utils/ — enrichment, caching, exporting, logging, validationsrc/vulnparse_pin/io/pfhandler.py — constrained and policy-aware file I/OPrimary models are in src/vulnparse_pin/core/classes/dataclass.py:
Finding — normalized vulnerability observationAsset — host identity and attached findingsScanResult — top-level parsed/enriched object for one runRunContext — immutable runtime services and path/config statePass contracts are in src/vulnparse_pin/core/classes/pass_classes.py:
Pass protocol (run(ctx, scan) -> DerivedPassResult)PassRunner sequential orchestratorDerivedContext append-only pass output registrymain.py)At runtime, the orchestrator does the following:
ScanResultScoringPass, TopNPass, SummaryPass)