Repository navigation
v0.58.0
Breaking it on purpose
This file says what it checked at every turn, and the release before last
added how much of itself those checks touch. Neither of those says whether
any of it would catch anything. A check that cannot fail is a check that is
not there, and nothing here had ever been asked to fail.
So now it breaks itself, one small change at a time, in the encoders, the
readers and the narrators - the places where being wrong is quiet. Each
change gets its own interpreter and is put to the battery, then the tier
differential, then the fuzzer. Cheapest first, and the fuzzer last, because a
mistake the fuzzer notices sends it off to shrink the program that showed it,
which costs more than both the checks in front of it put together.
python3 ouroboros.py --fuzz-mutants
It reports. It does not pass or fail, and that is the design rather than a
shortcut: a change nothing noticed is one of two things, and telling them
apart wants a reader. Loosen the bound on the second machine's shifted
immediate and the encoder writes a different encoding that is exactly as
correct; no amount of running will ever call that wrong. Making this a gate
would have meant either pretending it was a bug or quietly dropping it.
The first thing it found was a flaw in itself, which is the right order to
find things in: the first version changed words inside docstrings, which
survive for no interesting reason at all and read as gaps. It masks the
strings and the comments now, through the tokeniser rather than by guessing.
Sixteen of twenty-four caught. One survivor is worth the trip: the x86
narrator's guard on group five can be loosened and nothing minds, because
nothing the battery narrates contains a decrement. The emitter is reached -
the check two releases ago says so - but only into the disk and the firmware,
which are the two texts the narrator is never pointed at.
Full Changelog: v0.57.0...v0.58.0
LOC: 25996