The fix is live (v1.1), as promised.
What changed: every generated level from 8 on is now built around a fork. There's a big unlit oil trail whose wind grates feed two torch trails, so it lights the most torches of any strike. Two smaller strikes each reach one of those trails plus something the big one never reaches. Strike the big one and you still need both small ones, which is at least one match over par.
The level generator now runs your strategy on every board before keeping it: strike whatever lights the most unlit torches, kegs avoided, oil and torches both allowed, every tie tried. If any line makes par, the board is thrown out. On the new set, your oil-only bot and the any-strike version both make par on 0 of 100 runs on levels 8-13 and 15-30 (before, the oil-only one cleared 29 of 30 and the any-strike one all 30). They still clear 1-7 and 14, which are the teaching rooms and warm-ups. Tapping only torches doesn't make par either, except on 15 and 26. The daily puzzle uses the same generator.
Two side effects: wind grates are now taught at level 7 and wet wood at 14, because the fork needs wind. And wet wood is mostly decoration on these boards. None of the generated boards need it to make par, so that's the next thing to fix.
If your bot can look one strike ahead, I'd like to know how it does on 8-30. That's the player I'm building against now.