Reference
Selectivity removes chunks from an ordered input and asks a predicate whether the behavior of interest survives. When a removal fails, it tries smaller chunks. Each accepted deletion restarts the search, ending with checks of single remaining units. Directory mode removes whole files, optionally reduces each remaining file by lines, and repeats until a full pass leaves the modeled input unchanged.
The predicate uses exit 0 for interesting input, 1 for uninteresting input and other exits for unresolved input. Every configured observation must return 0 before a candidate is accepted. Mixed observations are unstable, timeouts are unresolved, and neither justifies deletion. An original input that does not consistently satisfy the predicate is rejected before reduction. A final repeated check confirms the saved result at the end of a completed run.
The summary’s locally_minimal field is deliberately conservative. It is true only after completion with no unresolved candidate checks anywhere in the run. Its scope is the selected units: one line, one file, or the combination of file deletion and per-file line deletion. It does not establish the globally smallest reproducer, and a finite set of observations cannot prove that a predicate will always behave consistently.
Each output directory contains original, reduced, attempts.jsonl, summary.json and report.html. The audit includes candidate digests, removed units, exit status and bounded combined stdout and stderr for each observation. A failed or interrupted check records its incomplete status. Captured output is limited to 4 KiB per observation. Incomplete runs leave a checkpoint without a final verification claim; storage errors are reported and can leave partial artifacts.
Inputs are held in memory. File lines retain their raw bytes, including CRLF and a missing final newline. Selectivity does not parse CSV records, so a quoted field containing a newline can span multiple reduction units. Put structural validation in the predicate. Directory input retains nested paths and empty directories; directories themselves are not deletion units. Symlinks and special files are rejected. File permissions are copied, while directory permissions, ownership, timestamps, hardlink relationships and extended attributes are outside the input model.
Every predicate observation receives a fresh copy. Changes it makes to that copy do not enter the checkpoint. This is not an operating system sandbox: the command can reach other files and the network through its normal permissions. Unix execution uses a process group to terminate descendants after a check. Windows uses taskkill on timeout; commands should not leave background processes behind. Keep the source still while its snapshot is loaded.
The README is the full manual. The repository also contains the algorithm reference, predicate guidance and recorded checks.