How the cards are tested

Each card holds three implementations of the same code: vulnerable, fixed, and a plausible fix that still fails. One test suite runs against all three. The fixed implementation must pass every test, the vulnerable one must fail at least one exploit test, and the wrong one must fail at least one test. The scanner rules on each card were run against its code where possible, and the card records what each one found.