Skip to content

Corpus expansion: cover the shapes the rules are judged on #49

Description

@aksOps

Question

What shapes must the detection corpus carry before any generic-rule change on this map can be called measured, and what do recall and precision read once it does?

Parent: #48

The corpus is 21 hand-written config files. It cannot see the shapes that produced the worst regression in the project's history, and it cannot measure the three deferred debts (#44, '=[^=]', base64) because none of their shapes are in it.

Known-missing shapes, in rough order of how badly they bit:

  • C amalgamations and generated bindings - pub const PPPIOCSPASS: u32 = 2148561991;, let token = Literal::u8_unsuffixed(0);. These produced ~870 indefensible findings when the corpus could not see them.
  • XML / web.config / .csproj - the shapes both this corpus and the gitleaks corpus cover worst, and the reason '=[^=]' in generic-markup-config-secret was left unmeasured.
  • Kubernetes manifests - Secret data: fields are base64 by spec; needed to measure whether decoding is worth its false-positive cost.
  • All-vocabulary passwords in credentialed URLs - AdminPassword, SuperSecretKey, the generic-credentialed-url: an all-vocabulary password is suppressed (AdminPassword, SuperSecretKey) #44 shape.
  • Lockfiles, vendored trees, minified JS - high-entropy noise that must stay unreported.

Deliverable: expanded corpus with manifest rows, plus a recorded recall/precision baseline and a finding count on a large real tree (the 1.8 GB registry checkout used previously) so every later ticket has a before to compare against.

No rule changes in this ticket. Measurement only - a corpus that moves at the same time as a rule proves nothing.

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