Skip to content

Decide: conformance-kit's vuln-gate vs the shared osv-scan lane — they now overlap #6

Description

@bdelanghe

conformance-kit ships gates/vuln-gate.mjs, which repos that vendor the kit run as their own dependency check. As of the org-wide rollout (#2), those repos also run the shared osv-scan lane. Two dependency gates, different databases, different postures.

How this surfaced

site#173 is red on conformance:

node vendor/conformance-kit/gates/vuln-gate.mjs
✗ vuln-gate: 3 known critical/high in all deps (0 critical, 3 high) · threshold 0

Pre-existing and unrelated to that PR — but it means the vendored gate has been there all along, and is currently failing. Worth recording against infra#104's premise that "no repo had any dependency scanning": true in effect, wrong in detail. That premise has now been corrected three times (the deno.lock gap, required-baseline.yml being inert, and this).

The actual differences

vuln-gate.mjs osv-scan lane
source npm audit-shaped OSV database
scope vendored per repo, npm only every ecosystem osv-scanner supports + deno.lock npm subset
threshold $VULN_THRESHOLD, counts critical/high any known vulnerability
posture hard-fail at threshold hard-fail, with report-only adoption grace
bump path re-vendor the kit per repo one pin edit, fleet-wide

Redundancy here is not automatically bad — the two consult different advisory sources, and a finding in one that the other misses is real signal. The problem is that nobody has decided, so repos will drift into having two gates with different thresholds and no stated relationship.

Options

  • Coexist, documented. Keep both, write down which is authoritative for merge-blocking and which is advisory. Cheapest; leaves two things to maintain.
  • Shared lane supersedes. Remove vuln-gate from the kit, point vendoring repos at osv-scan. One definition, but drops npm-audit coverage that OSV may not duplicate.
  • vuln-gate becomes an osv-scan caller. The kit stops implementing scanning and just calls the shared workflow. Preserves the kit's interface, single implementation underneath.

Done when

  • A decision is recorded and the losing gate is removed or explicitly marked advisory
  • Count how many repos actually vendor conformance-kit (unknown — needs an org-wide code search, which a repo-scoped agent session can't run)
  • site's 3 pre-existing highs are cleared or accepted with a written reason (separate from this decision — see the remediation queue)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    Status
    Todo

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions