You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
chore(toolchain): provision OCaml/wasmtime/Deno + migrate harnesses to Deno (#133/#253) (#150)
## What
Two related estate-toolchain changes:
**1. Durable provisioning** — `tools/provision.sh` (exposed as `just
provision` / `just setup`, wired into `setup.sh`) installs:
- **Deno** — the JS runtime, fetched from the **GitHub release assets**.
`deno.land` / `dl.deno.land` are denied by the network policy
(`x-deny-reason: host_not_allowed`), but `github.com` release downloads
are reachable — same channel that works for wasmtime/just.
- **wasmtime** — the #132 capstone execution gate, via crates.io.
- **AffineScript** — the parser/codegen compiler. It is an **OCaml**
program (built from `hyperpolymath/affinescript` with opam + dune at the
SHA pinned in `c5-regenerate.yml`), **not** an npm package —
`@hyperpolymath/affinescript` 404s on npmjs.
The stale `deps` recipe (which ran `npm ci` against the `package.json`
that #133 removed) is replaced with a real toolchain check.
**2. node → Deno harness migration** (estate #133 / standards#253) — the
`node tests/*.mjs` runners now run under **Deno** with scoped
permissions (`--allow-read --allow-write --allow-run --allow-env
--allow-sys`):
- `deno.json` (tasks + config), the Justfile `deno_run` recipes,
`e2e.yml` (smoke + build-e2e jobs install Deno from the release assets),
and `tests/e2e.sh`.
- The `.mjs` were already Deno-shaped (`node:` imports,
`import.meta.url`-derived `__dirname`), so the change is mechanical — no
source edits to the harnesses.
**Cleanup** — removed the ReScript-era leftovers `deno.lock` +
`package-lock.json`, and the stale `rescript build` /
`node_modules/@rescript` references in the E2E script.
## Why
`@hyperpolymath/affinescript` is OCaml, so it was never an npm/Deno/Bun
package — there's nothing to "migrate" for the compiler. The only
JS-runtime surface is the `.mjs` harnesses, and the estate standard is
**Deno** (#133/#253), not Bun. This PR makes the toolchain reproducible
and finishes the node→Deno harness move.
## Verification (local, deno 2.8.1)
- `deno task test-aspect` / `test-proof` — green
- `just deps` (deno/cargo/wasmtime ok), `just test-aspect` /
`test-proof` — green
- `E2E_BUILD=0 bash tests/e2e.sh` — **47 passed / 0 failed / 7 skipped**
- `tools/provision.sh` runs clean (idempotent skip when tools present)
The CI Deno-install steps + full `e2e.yml` flow are verified by this
PR's own run.
## Note on AffineScript
`provision.sh` *can* build AffineScript here (`github.com` clone is
reachable, opam is apt-installable) but it's a ~5-min OCaml build, so I
didn't run it in this session — it's codified per the authoritative
`c5-regenerate.yml` recipe. Building it is the unblock for the #127
front-end→IR seam.
https://claude.ai/code/session_01Rq4da8i2uGnDUfanSB1Hx4
---
_Generated by [Claude
Code](https://claude.ai/code/session_01Rq4da8i2uGnDUfanSB1Hx4)_
---------
Co-authored-by: Claude <noreply@anthropic.com>
0 commit comments