Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ jobs:
# Owns the rev derivation, the rev-keyed tools cache, the
# install, and the pins gate; the justfile's _ct-tools
# recognizes the stamped install and does not repeat it.
uses: polymorph-components/polymorph-test/actions/setup@38bfedf2b989522b82ddce5320fc1557a2f61461
uses: polymorph-components/polymorph-test/actions/setup@9f9e4d544b90e3321ac0572be92c57339b963d34
with:
tools: component-test-cli
- uses: pnpm/action-setup@v4
Expand Down Expand Up @@ -131,7 +131,7 @@ jobs:
# against the pin.
- name: Publish the conformance matrix
if: always() && hashFiles('conformance/driver-ct/results/*.jsonl') != ''
uses: polymorph-components/polymorph-test/actions/aggregate@38bfedf2b989522b82ddce5320fc1557a2f61461
uses: polymorph-components/polymorph-test/actions/aggregate@9f9e4d544b90e3321ac0572be92c57339b963d34
with:
lock: conformance/guest-ct/tests.lock
manifest: conformance/driver-ct/targets.toml
Expand Down
14 changes: 7 additions & 7 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 2 additions & 2 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -31,8 +31,8 @@ default-members = [
# conformance/driver-ct/polyengine/package.json and `pnpm --dir
# conformance/driver-ct/polyengine install` — the cargo pins gate, the
# runner-js pin gate, and the CI ref guard fail on skew.
component-test-sdk = { git = "https://github.com/polymorph-components/polymorph-test", rev = "38bfedf2b989522b82ddce5320fc1557a2f61461" }
component-test-runner = { git = "https://github.com/polymorph-components/polymorph-test", rev = "38bfedf2b989522b82ddce5320fc1557a2f61461" }
component-test-sdk = { git = "https://github.com/polymorph-components/polymorph-test", rev = "9f9e4d544b90e3321ac0572be92c57339b963d34" }
component-test-runner = { git = "https://github.com/polymorph-components/polymorph-test", rev = "9f9e4d544b90e3321ac0572be92c57339b963d34" }
anyhow = "1"
bytes = "1"
futures = "0.3"
Expand Down
12 changes: 6 additions & 6 deletions conformance/driver-ct/polyengine/deno.json
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
{
"//": "MODULE-IDENTITY CONSTRAINT: polyengine's wasi module imports @polyengine/runtime/embedder by bare specifier internally. The @polyengine/runtime/embedder entry here must resolve to the IDENTICAL @polyengine/runtime version as ../../../js/polyengine/deno.json's caret range (in both deno.locks), or the embedder module loads twice: value recognition survives that (websocket.ts recognizes polyengine values by @polyengine/protocol brand predicates, not instanceof), but a second copy splits the runtime/translator plan-format pairing, and stateful handles (streams/futures) minted by one copy are refused by the other. Pin story: exact-pinned JSR releases (caret-honest upstream: within a minor line releases stay compatible, breaking bumps the minor; per-commit `<next>-pre.g<hash>` prereleases exist between releases — pin exactly); @polyengine/translator ships the translator wasm for that SAME commit; deno.lock carries integrity, --frozen enforced everywhere; one version repo-wide is asserted by the pin gate (justfile: exam-polyengine).",
"imports": {
"@polyengine/ct-runner": "jsr:@polyengine/ct-runner@0.3.0",
"@polyengine/runtime/embedder": "jsr:@polyengine/runtime@0.3.0/embedder",
"@polyengine/runtime/shim": "jsr:@polyengine/runtime@0.3.0/shim",
"@polyengine/wasi": "jsr:@polyengine/wasi@0.3.0",
"@polyengine/translator": "jsr:@polyengine/translator@0.3.0",
"@polymorph/test/polyengine-worker-main": "jsr:@polymorph/test@0.2.0/polyengine-worker-main"
"@polyengine/ct-runner": "jsr:@polyengine/ct-runner@0.4.0",
"@polyengine/runtime/embedder": "jsr:@polyengine/runtime@0.4.0/embedder",
"@polyengine/runtime/shim": "jsr:@polyengine/runtime@0.4.0/shim",
"@polyengine/wasi": "jsr:@polyengine/wasi@0.4.0",
"@polyengine/translator": "jsr:@polyengine/translator@0.4.0",
"@polymorph/test/polyengine-worker-main": "jsr:@polymorph/test@0.2.1/polyengine-worker-main"
},
"minimumDependencyAge": { "age": "P1D", "exclude": ["jsr:@polyengine/*", "jsr:@polymorph/*"] },
"tasks": {
Expand Down
56 changes: 28 additions & 28 deletions conformance/driver-ct/polyengine/deno.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion conformance/driver-ct/polyengine/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
"type": "module",
"description": "Node driver + bundled worker inputs for the polyengine-browser conformance row: the suite runtime-linked inside headless Chromium with this repo's polyengine host module, through the upstream page driver and polyengine worker-main.",
"dependencies": {
"@jsr/polymorph__test": "0.2.0",
"@jsr/polymorph__test": "0.2.1",
"playwright-core": "^1.61.1"
}
}
10 changes: 5 additions & 5 deletions conformance/driver-ct/polyengine/pnpm-lock.yaml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 2 additions & 2 deletions js/polyengine/deno.json
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
{
"name": "@polymorph/websocket",
"version": "0.3.0",
"version": "0.4.0",
"license": "Apache-2.0",
"exports": "./websocket.ts",
"//": "MODULE-IDENTITY CONSTRAINT: polyengine's wasi module imports @polyengine/runtime/embedder by bare specifier internally. This file's @polyengine/runtime range and conformance/driver-ct/polyengine/deno.json's exact pin must resolve to the IDENTICAL @polyengine/runtime version in both deno.locks, or the embedder module loads twice: value recognition survives that (websocket.ts recognizes polyengine values by @polyengine/protocol brand predicates, not instanceof), but a second copy splits the runtime/translator plan-format pairing, and stateful handles (streams/futures) minted by one copy are refused by the other. Pin story: this published package takes a caret range (caret-honest upstream: within a minor line releases stay compatible, breaking bumps the minor); the repo-internal conformance harness exact-pins instead so its lock is the single source of truth for the resolved version; deno.lock carries integrity, --frozen enforced everywhere; one RESOLVED version repo-wide (across both locks) is asserted by the pin gate (justfile: exam-polyengine).",
"imports": {
"@polyengine/runtime/embedder": "jsr:@polyengine/runtime@^0.3.0/embedder"
"@polyengine/runtime/embedder": "jsr:@polyengine/runtime@^0.4.0/embedder"
},
"minimumDependencyAge": { "age": "P1D", "exclude": ["jsr:@polyengine/*"] },
"compilerOptions": {
Expand Down
14 changes: 7 additions & 7 deletions js/polyengine/deno.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 2 additions & 2 deletions js/polyengine/tests/websocket_test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -223,13 +223,13 @@ Deno.test("receive-via-stream: single-use; pending receive is rejected", async (
// recognition sites to be revisited. (The `deltic.*` spellings were
// retired by upstream's own A18 project rename — pre-A18 copies and
// hand-rolled `deltic.*` brands do NOT interoperate with these by design;
// the `ComponentException` brand is now `polyengine.witError/1`.)
// the `ComponentException` brand is now `polyengine.componentException/1` (A19).)

Deno.test("send-via-stream: a foreign-copy ComponentException's payload passes through the error wrap", async () => {
await withServer(async (s) => {
const ws = await Websocket.connect(`${s.base}/echo`, []);
const foreign = Object.assign(new Error("minted elsewhere"), {
[Symbol.for("polyengine.witError/1")]: true,
[Symbol.for("polyengine.componentException/1")]: true,
payload: { kind: "invalid-argument", value: "minted by another copy" },
});
const producer = (async function* () {
Expand Down
Loading