Skip to content

gitleaks parity: diff findings, explain every delta #50

Description

@aksOps

Question

Where do siloscan and gitleaks actually disagree when run over the same trees, and is every disagreement explained?

Parent: #48

secrets.yaml is mechanically generated from gitleaks v8.30.1 - 214 of its 222 rules convert. That "96% parity" is arithmetic: rules counted, not findings compared. The conversion has never been diff-tested, so any fidelity bug in scripts/convert_gitleaks.py - a mistranslated character class, a dropped entropy threshold, a keyword prefilter that suppresses more than gitleaks' does - is invisible.

Run gitleaks detect --no-git (directory mode, matching siloscan's depth-1 scope) and siloscan over the same corpora, then diff findings by file, line and secret value. Suggested trees: the expanded corpus from the corpus ticket, a public leaky-repo fixture, and a large real checkout.

Each disagreement lands in exactly one bucket, and the report must place every one of them:

  • siloscan misses what gitleaks finds - conversion bug or an over-aggressive allowlist. Fix.
  • siloscan finds what gitleaks misses - the generic rules doing their job, or a false positive. Decide which, per shape.
  • Both find it, different span or rule id - cosmetic, unless the fingerprint changes.

Unblocked and independent - the corpus ticket makes it more informative but is not required to start. This is the cheapest high-information work on the map: it validates the conversion, calibrates the generic rules against a tool with years of field exposure, and produces the evidence the parity claim currently lacks.

Deliverable: a reproducible comparison script and a written disposition for every delta. Rule fixes it justifies go in their own tickets.

Metadata

Metadata

Assignees

Labels

wayfinder:taskWayfinder ticket: manual work that unblocks a decision

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions