case studies
Selectivity Finds the Two CSV Records Behind a Calculation Bug
A CSV importer can be wrong for a reason that disappears when a developer tests one record at a time. The example here needs a sequence: a discount for an order, followed …
Give Selectivity a file or directory and a command that recognizes the failure. It removes material, checks what remains and saves the reductions that preserve the behavior you care about.
20000 to 2
Lines in the saved demonstration
Fresh copies
Each observation starts from snapshot bytes
JSONL
A record of every candidate check
Apache 2.0
Open source Go code
The line count is from a generated fixture with two known trigger lines. It illustrates reduction, without measuring performance on real bugs.
case studies
A CSV importer can be wrong for a reason that disappears when a developer tests one record at a time. The example here needs a sequence: a discount for an order, followed …
case studies
An input can be perfectly valid and still expose a disagreement between two consumers. In this example, one path keeps an integer identifier exactly as parsed. The other …
case studies
A reduction can be useful before it is finished. That matters when the predicate is expensive, a CI job has a fixed allowance, or a developer wants to make a first pass …
input reduction
A minimal reproducer is a small example that still demonstrates a problem. It gives the person investigating a bug less material to read and fewer irrelevant details to …
case studies
The directory demonstration asks a slightly different question from the single-file example: can the reducer find both the relevant files and the relevant lines within …
case studies
The line-reduction demonstration starts with a deliberately oversized text file whose answer is known in advance. It has 20000 lines: alpha appears on line 702, omega on …
release
A useful bug report often begins with an unhelpfully large attachment. The program fails on a particular export, configuration bundle or text file, but nobody knows which …
project name
Selectivity is named for the decision at the center of every reduction. Some parts of an input are necessary to preserve the behavior under investigation. Other parts can …
testing
The central promise of a reducer is easy to state and surprisingly easy to weaken: the saved input should be smaller, while still satisfying the behavior being …
Start with the quick start, inspect the predicate contract, or read the code and recorded checks.