Fixes a bug that only a real runner could show.
This machine has PyYAML; a fresh runner does not. So the built-in config parser — the one that actually runs in CI — was never exercised by a full local pass, and two cases failed the moment they hit ubuntu and macos:
regex: "processed (\\d+) rows" # became a pattern hunting a literal backslash
cmd: "echo '{\"k\": 1}'" # the shell received \"k\" and the JSON brokeOne defect underneath both: double-quoted scalars were not unescaped, so the claim failed for a reason that had nothing to do with the number. Escapes are now processed as YAML defines them, single quotes stay literal apart from '', and an escape the parser does not recognise is refused by name instead of passed through.
The blind spot was the more expensive half, so it is closed too: selftest.py now runs the entire suite twice — the second time with PyYAML blocked — and asserts both parsers agree on the awkward strings. 98 checks, both passes green on ubuntu and macos, Python 3.8 and 3.12.
v1 now points here.