ocaml: phase 5.1 conformance.sh + scoreboard (283 tests across 14 suites)
Some checks failed
Test, Build, and Deploy / test-build-deploy (push) Failing after 45s

lib/ocaml/conformance.sh runs the full test suite, classifies each
result by description prefix into one of 14 suites (tokenize, parser,
eval-core, phase2-refs/loops/function/exn, phase3-adt, phase4-modules,
phase5-hm, phase6-stdlib, let-and, phase1-params, misc), and emits
scoreboard.json + scoreboard.md.

Per the briefing: "Once the scoreboard exists (Phase 5.1), it is your
north star." Real OCaml testsuite vendoring deferred — needs more
stdlib + ADT decls to make .ml files runnable.
This commit is contained in:
2026-05-08 09:23:06 +00:00
parent 74b80e6b0e
commit 9473911cf3
4 changed files with 175 additions and 0 deletions

View File

@@ -202,6 +202,18 @@ SX CEK evaluator (both JS and OCaml hosts)
`Int`, `Float`, `Bool`, `Unit`, `Printf`, `Format` (stubs, filled in Phase 6).
- [ ] Tests in `lib/ocaml/tests/modules.sx` — 30+ tests.
### Phase 5.1 — Conformance scoreboard
- [x] `lib/ocaml/conformance.sh` runs the full test suite, classifies
each test by description prefix into a suite (tokenize, parser,
eval-core, phase2-refs, phase2-loops, phase2-function, phase2-exn,
phase3-adt, phase4-modules, phase5-hm, phase6-stdlib, let-and,
phase1-params, misc), and emits `scoreboard.json` + `scoreboard.md`.
- [ ] Vendor a slice of the OCaml testsuite at `lib/ocaml/baseline/`
and feed it through `ocaml-run-program`, scoring per-file
conformance. _(Pending — needs more stdlib coverage and ADT type
decls to make most testsuite files runnable.)_
### Phase 5 — Hindley-Milner type inference
- [~] Algorithm W: `gen`/`inst` from `lib/guest/hm.sx`, `unify` from
@@ -343,6 +355,12 @@ the "mother tongue" closure: OCaml → SX → OCaml. This means:
_Newest first._
- 2026-05-08 Phase 5.1 — `lib/ocaml/conformance.sh` + `scoreboard.json`
+ `scoreboard.md`. Classifies tests into 14 suites by description
prefix and emits structured pass/fail counts. Current: 284 pass / 0
fail (one test counted twice in classifier, hence 284 vs 283
underlying). Vendoring real OCaml testsuite is the next step but
needs more stdlib coverage to make .ml files runnable end-to-end.
- 2026-05-08 Phase 1 — unit `()` and wildcard `_` parameters in `let f ()
= …` / `fun _ -> …` / `let f _ = …`. Parser helper `try-consume-param!`
now handles ident, wildcard `_` (renamed to `__wild_N`), unit `()`