Reproducible 10x performance control

The bench-10x-control target measures the reusable indexed Hamming API on a deterministic synthetic workload. It is a local hot-path control, not an end-to-end scientific workflow claim and not a replacement for the public Sanson/Brunello comparison.

make bench-10x-control

The default control is 1,000,000 reads, 4,096 targets, 20-base windows, Hamming k=1, and five timed repeats. Override the workload when diagnosing a different lane:

DOTMATCH_10X_READS=1000000 \
DOTMATCH_10X_TARGETS=4096 \
DOTMATCH_10X_LENGTH=20 \
DOTMATCH_10X_K=1 \
DOTMATCH_10X_REPEATS=5 \
make bench-10x-control

Before timing, the harness compares a 256-read prefix against the exhaustive scan API. Each repeat reports throughput, candidate rates, and a checksum; different checksums or a failed preflight invalidate the run. The target library is built once outside the timed region.

For an auditable comparison, record the exact commit, compiler and flags, machine model, operating-system version, workload arguments, repeat rows, peak-memory method, and whether other CPU-heavy work was running. A noisy or partially captured run is a control failure, not a speed result.

The project speed gate remains the repeated full Sanson/Brunello Hamming k=1 lane in docs/10x-goal-baseline.md. A local synthetic control can identify a hot path and reject regressions; it cannot establish a 10x end-to-end improvement by itself.