diff --git a/plans/lib-guest.md b/plans/lib-guest.md index 71cf3334..d291ab47 100644 --- a/plans/lib-guest.md +++ b/plans/lib-guest.md @@ -18,17 +18,17 @@ The loop fills these in on its first iteration by running every `*/conformance.s | Guest | Suite | Baseline | |--------------|--------------------|----------| -| lua | `bash lib/lua/test.sh` | TBD | -| prolog | `bash lib/prolog/conformance.sh` | TBD | -| haskell | `bash lib/haskell/conformance.sh` | TBD | -| common-lisp | `bash lib/common-lisp/conformance.sh` | TBD | -| erlang | `bash lib/erlang/conformance.sh` | TBD | -| js | `bash lib/js/conformance.sh` | TBD | -| smalltalk | `bash lib/smalltalk/conformance.sh` | TBD | -| tcl | `bash lib/tcl/conformance.sh` | TBD | -| forth | `bash lib/forth/test.sh` | TBD | -| ruby | `bash lib/ruby/test.sh` | TBD | -| apl | `bash lib/apl/test.sh` | TBD | +| lua | `bash lib/lua/test.sh` | 185 / 185 | +| prolog | `bash lib/prolog/conformance.sh` | 590 / 590 | +| haskell | `bash lib/haskell/conformance.sh` | 0 / 18 (programs) | +| common-lisp | `bash lib/common-lisp/conformance.sh` | 309 / 309 | +| erlang | `bash lib/erlang/conformance.sh` | 0 / 0 (suite all-zero) | +| js | `bash lib/js/conformance.sh` | 94 / 148 (test262-slice) | +| smalltalk | `bash lib/smalltalk/conformance.sh` | 625 / 629 | +| tcl | `bash lib/tcl/conformance.sh` | 3 / 4 (programs) | +| forth | `bash lib/forth/test.sh` | 64 / 64 | +| ruby | `bash lib/ruby/test.sh` | 76 / 76 | +| apl | `bash lib/apl/test.sh` | 73 / 73 | The baseline only needs to be re-snapshotted when the substrate (`spec/**`, `hosts/**`) changes underneath this loop. @@ -139,9 +139,11 @@ Generalised layout-sensitive lexer. Configurable: which keywords open layout blo Extract from `haskell/infer.sx`. Algorithm W or J, generalisation, instantiation, occurs-check, principal types. -**Port to:** `haskell/infer.sx`. Second consumer is speculative (no existing ML/Elm guest); accept "second user TBD" for this step only, since the alternative is letting the inference stay locked inside Haskell forever. +**Sequencing:** this step is **paired with `plans/ocaml-on-sx.md` Phase 5**. The natural order is lib-guest Steps 0–7 → OCaml-on-SX Phases 1–5 → lib-guest Step 8. With OCaml-on-SX Phase 5 done, the two-language rule is satisfied for real (Haskell + OCaml). Without it, accept "second user TBD" — the alternative is letting the inference stay locked inside Haskell forever. -**Verify:** haskell scoreboard equal baseline. +**Port to:** `haskell/infer.sx` and (preferred) `lib/ocaml/types.sx`. + +**Verify:** haskell scoreboard equal baseline; if OCaml-on-SX Phase 5 has shipped, OCaml type-inference tests equal baseline too. --- @@ -149,7 +151,7 @@ Extract from `haskell/infer.sx`. Algorithm W or J, generalisation, instantiation | Step | Status | Commit | Delta | |------|--------|--------|-------| -| 0 — baseline snapshot | [in-progress] | — | — | +| 0 — baseline snapshot | [done] | 2f7f8189 | 11 guests captured: lua 185/185, forth 64/64, ruby 76/76, apl 73/73, prolog 590/590, common-lisp 309/309, smalltalk 625/629, tcl 3/4, haskell 0/18 programs, js 94/148 (slice), erlang 0/0 | | 1 — conformance.sx (prolog + haskell) | [ ] | — | — | | 2 — prefix.sx (common-lisp + lua) | [ ] | — | — | | 3 — lex.sx (lua + tcl) | [ ] | — | — |