ocaml-json: add skip-parse tests + crowbar fuzz harness
Two new dirs:
- ocaml-json/test/test_skip.ml -- alcotest suite with 65 cases:
30 accept-valid (scalars, escapes, numbers, nested containers),
12 reject-structural-error (unclosed, mismatched, missing colon),
6 differential (Json.ignore vs Json.json must agree on corpus-style
inputs), 5 permissive (document known gaps where ignore accepts
inputs json rejects -- the fragility the user flagged), 12 corpus
torture (simdjson corpus files if present at /tmp/jsont_corpus).
- ocaml-json/fuzz/fuzz_skip.ml -- crowbar property test. Property:
for any byte string s, if Json.json accepts s, then Json.ignore
must also accept s. Standalone-runnable; AFL-aware via crowbar.
The permissive-case block explicitly documents content-level
fragility: [1..2], [+5], [1eE2], [\z], short unicode escapes all
round-trip through Json.ignore. The structural-level contract (brackets,
quote matching, colon/comma placement) is enforced. Hardening these
(cheap number shape check, full escape validation) is a follow-up.