Skip to content

Deltic leg: the conformance suite runtime-linked on stock Deno - #40

Merged
lann merged 2 commits into
mainfrom
deltic-conformance-leg
Aug 10, 2026
Merged

lann merged 2 commits into
mainfrom
deltic-conformance-leg

Conversation

@lann

@lann lann commented Aug 9, 2026

Copy link
Copy Markdown
Collaborator

First leg of the jco-replacement migration in this repo (lann/deltic#14), side by side with the existing targets — nothing jco-side changes. Follows the pattern polymorph-test merged in #75.

What: a fifth conformance target deltic-deno — the suite runs runtime-linked under deltic on stock Deno: no transpile step, no generated tree, no --experimental-wasm-jspi; async exports run on the callback ABI.

  • js/deltic/websocket.ts — the deltic-native host module: js/jco/websocket.js ported to deltic's embedder API (typed streams, WitError), upstreamed from deltic's ports/websocket reference where this suite already ran 55/55. The one behavioral delta (Deno's abnormal-close code 0) is documented in its README. Unit tests against a local echo server.
  • conformance/driver-ct/deltic/run.ts — the leg: mirrors jco/run-node.mjs exactly (same bounds — 256 KiB inbound / 5 s connect / 3 s close / 60 s case wall — same echod LISTENING scrape, same WS_CONFORMANCE_* env, DENO_CERT as the analogue of NODE_EXTRA_CA_CERTS). All 55 cases run, incl. the three websocket/tls/*.

Pinning: deltic release pre-66a6b8c, in two import maps (conformance/driver-ct/deltic/deno.json + js/deltic/deno.json; integrity via committed deno.locks, enforced --frozen) and fetch-translator.ts (TAG + sha256 for the translator-shim release asset, cached under target/deltic/) — cross-checked at run time, incl. the module-identity constraint on the shared @deltic/runtime/embedder URL. Bump procedure in conformance/driver-ct/deltic/README.md.

Gates run locally: just conformance-ct (full five-target matrix: build, lock-check, wasmtime, jco-node, jco-browser, composed, deltic-deno, aggregate, matrix-check) — 5 targets, 275 results, 0 failing; deltic-deno 55/55 in ~15 s. just check and the js/deltic unit tests green. CI gains a pinned denoland/setup-deno step in the conformance job; deltic-module-check joins gha::conformance-checks.

First leg of the jco-replacement migration in this repo (polymorph-components/polyengine#14),
side by side with the existing targets - nothing jco-side changes.

- js/deltic/websocket.ts: the deltic-native host module -
  js/jco/websocket.js ported to deltic's embedder API (typed streams,
  WitError), upstreamed from deltic's ports/websocket reference; the one
  behavioral delta (Deno's abnormal-close code 0) documented in its
  README. Unit tests against a local echo server.
- conformance/driver-ct/deltic/: the deltic-deno target - no transpile
  step, no generated tree, no engine flag; async exports run on the
  callback ABI. run.ts mirrors jco/run-node.mjs (same bounds, same
  echod protocol, same WS_CONFORMANCE_* env).
- The pin: deltic release pre-66a6b8c in two import maps (deno.lock
  enforced --frozen) + fetch-translator.ts (translator-shim release
  asset by sha256, cached under target/deltic/), cross-checked at run
  time.
- Matrix: 55/55 on all five targets (275 results, 0 failing).
- CI: the conformance job gains pinned Deno 2.9.5; deltic-module-check
  joins gha::conformance-checks.
The aggregate composite action re-runs aggregation for the job summary
with its own results input; with targets.toml now declaring five
targets, four results fail its validation (target `deltic-deno`: no
results). The just-recipe gate earlier in the job already passed on all
five legs.
@lann
lann merged commit 2000f54 into main Aug 10, 2026
2 checks passed
@lann
lann deleted the deltic-conformance-leg branch August 10, 2026 00:13
lann pushed a commit that referenced this pull request Aug 10, 2026
… the demo (#42)

* retire jco: deltic carries every JS-host row, the parity carrier, and the demo

The deltic legs (#40 deno, #41 browser) have run green beside the jco
legs across the full 55-case matrix. This removes the jco driver tree,
the jco host module (js/jco/websocket.js — provenance citations in
js/deltic/websocket.ts now read against its last revision, c9252be),
the jco demo, and the shared transpile wrapper.

The WPT parity gate keeps its exact semantics — baseline vs round trip,
per-engine loss ratchets — with the carrier swapped: the runner
component is runtime-linked by deltic against js/deltic/websocket.ts
(one bundled carrier module for both engine drivers; no transpile tree,
no JSPI flag). componentize-js, the guest toolchain, is untouched. Both
loss sets were empty under jco and stay empty under deltic — the new
carrier loses nothing against either baseline.

The demo runs under Deno through the same single pin site
(conformance/driver-ct/deltic): just demo::deltic.

* ci: drop the parity lock from the setup action's pins gate

The parity tree no longer carries a component-test-js pin (the dep was
unused and removed with the jco carrier), so the action's pins gate
fails on a lock with nothing to check — the justfile's _ct-tools gate
already made this move; ci.yml missed it.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants