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.
Question
Where do siloscan and gitleaks actually disagree when run over the same trees, and is every disagreement explained?
Parent: #48
secrets.yamlis 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 inscripts/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) andsiloscanover 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:
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.