I accidentally reused the mode letter for typecheck and for toml export.
So now is maybe a good time to create a copy of every input, reorder the
modes, then minimize the corpus again.
Without this, the inputs are immediately discarded by the fuzzer -- so
it turns out this seeding was not doing anything all the time! When I
run it now, it crashes instantly with a SIGSGEV. It is not caught by
libfuzzer itself so I can't see which input is crashing, but I suspect
it's my stack overflow example. Let's handle that and see if I can still
make the fuzzer crash.
The fuzzer is having a hard time discovering interesting inputs to
key_by. So far it discovered that it can do
[true].key_by({}.key_by)
which works, because {}.key_by(true) does not fail because the input is
empty, so it returns and empty dict, and then the output is {{}: true}.
But the fuzzer has not yet discovered that key_by is supposed to receive
a lambda, and it's not producing any interesting groupings.
But we do have a corpus of goldens that covers these cases. They are not
as small as the fuzz inputs, but they might be a good starting point. So
let's add a script to seed the fuzz corpus. So far I'm still not
impressed, but maybe I am just impatient and I need to let the fuzzer
run a bit longer.