• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

dennisdoomen / packageguard / 36341330678
81%

Build:
DEFAULT BRANCH: main
Ran 27 Sep 2026 06:44PM UTC
Jobs 1
Files 95
Run time 1min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

27 Sep 2026 06:37PM UTC coverage: 82.286% (+0.4%) from 81.918%
36341330678

push

github

web-flow
Let policies gate on risk scores, package age, and other risk signals (#262)

* Let policies gate on risk scores, package age, and other risk signals

Adds risk-based deny rules (overall/legal/security/operational risk
thresholds, max OSV severity, deny-unsigned/deprecated/without-repository,
and per-ecosystem minimum package age), auto-triggering risk enrichment
when a policy needs it even without --report-risk. Risk exceptions let a
specific package (optionally version-pinned, with an optional expiry) be
excluded from risk-based denial without loosening the policy globally.

Also generalizes warn-only handling: a new warn list mirrors deny's
package/license/prerelease matching but only logs a warning, and
--treat-deny-as-warning (or PACKAGEGUARD_DENY_AS_WARNING) downgrades deny
violations to warnings at runtime. PolicyViolation now carries the
triggering rule's rationale. The explain command was updated so it stays
accurate for packages only affected by these new rules.

Closes #212

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>

* Document risk-based policy gating, risk exceptions, and the warn list

Adds a "Gating on risk and package age" section to the configuration
docs covering the new deny fields, risk exceptions, the warn list, and
--treat-deny-as-warning, cross-links it from the risk metrics page,
mentions it in the README feature list, and removes the now-implemented
items from the roadmap.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>

* Address InspectCode findings on the risk-gating changes

- Make RiskException, WarnList and DenyList.MinPackageAgeDays properties
  init-only/get-only where they're never reassigned after construction
- Actually surface RiskException.Reason/SourceFile (explain now describes
  why a package was excluded and from which config file), instead of
  leaving those accessors unused
- Rename a lambda parameter in ProjectAnalyzer that shadowed the method's
  own projectPath parameter
- Merge Pro... (continued)

2301 of 3072 branches covered (74.9%)

Branch coverage included in aggregate %.

315 of 378 new or added lines in 16 files covered. (83.33%)

6 existing lines in 2 files now uncovered.

7031 of 8269 relevant lines covered (85.03%)

1917.89 hits per line

Uncovered Changes

Lines Coverage ∆ File
21
9.46
-1.03% Src/PackageGuard/ExplainCommand.cs
10
86.05
Src/PackageGuard.Core/Risk/RiskAnalysisPipeline.cs
9
0.0
0.0% Src/PackageGuard/AnalyzeCommand.cs
8
57.5
Src/PackageGuard.Core/Policy/WarnList.cs
6
92.52
-7.48% Src/PackageGuard.Core/Policy/DenyList.cs
4
90.39
-1.34% Src/PackageGuard.Core/CSharp/CSharpProjectAnalysisStrategy.cs
3
91.54
-1.4% Src/PackageGuard/ConfigurationLoader.cs
2
95.04
-4.96% Src/PackageGuard.Core/Npm/NpmProjectAnalysisStrategy.cs

Coverage Regressions

Lines Coverage ∆ File
4
84.88
2.39% Src/PackageGuard.Core/Risk/Enrichment/GitHubRepositoryRiskEnricher.cs
2
95.04
-4.96% Src/PackageGuard.Core/Npm/NpmProjectAnalysisStrategy.cs
Jobs
ID Job ID Ran Files Coverage
1 36341330678.1 27 Sep 2026 06:44PM UTC 95
82.29
GitHub Action Run
Source Files on build 36341330678
  • Tree
  • List 95
  • Changed 68
  • Source Changed 12
  • Coverage Changed 68
Coverage ∆ File Lines Relevant Covered Missed Hits/Line Branch Hits Branch Misses
  • Back to Repo
  • Github Actions Build #36341330678
  • 2390383c on github
  • Prev Build on main (#36299447994)
  • Next Build on main (#37118914354)
  • Delete
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE TRIAL · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc