diff --git a/AGENTS.md b/AGENTS.md index 4401e37..cc9c2c7 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -39,14 +39,14 @@ Layout (each directory's justfile module in parentheses): the module reads no ambient configuration. Since the A22 protocol/runtime split, this published package (`@polymorph/websocket`) depends on `@polyengine/protocol` only (`js/polyengine/deno.json`, - caret-pinned `^0.2.3`) — no `@polyengine/runtime` import anywhere in + caret-pinned `^0.3.1`) — no `@polyengine/runtime` import anywhere in it; value recognition is brand-based (`@polyengine/protocol` predicates, not `instanceof`), so its copy of `@polyengine/protocol` is harmless even in a multi-copy graph. The runtime-linked application legs (`conformance/driver-ct/polyengine/`, the WPT parity round trip, the demo) separately exact-pin the `@polyengine/{runtime,translator,wasi, - ct-runner}` lockstep family (`0.5.1`) plus `@polyengine/protocol` - (`0.2.3`) in `conformance/driver-ct/polyengine/deno.json`; the root + ct-runner}` lockstep family (`0.6.3`) plus `@polyengine/protocol` + (`0.3.1`) in `conformance/driver-ct/polyengine/deno.json`; the root justfile's `exam-polyengine` recipe (CI-wired) asserts one resolved runtime-family version, one resolved protocol version, and that `js/polyengine` names no `@polyengine/runtime` specifier. Bump diff --git a/conformance/driver-ct/polyengine/README.md b/conformance/driver-ct/polyengine/README.md index de0ac5d..20a07e4 100644 --- a/conformance/driver-ct/polyengine/README.md +++ b/conformance/driver-ct/polyengine/README.md @@ -22,13 +22,13 @@ module graph — no fetch step, no net grant. ## The pin polyengine publishes `@polyengine/{runtime,translator,wasi,ct-runner}` to -JSR as a lockstep-versioned line (this directory exact-pins `0.5.0`) and +JSR as a lockstep-versioned line (this directory exact-pins `0.6.3`) and `@polyengine/protocol` (the host-ABI vocabulary package) as an -independently-versioned line (exact-pinned `0.2.2` here). It is pinned in +independently-versioned line (exact-pinned `0.3.1` here). It is pinned in this directory's `deno.json` import map -(`jsr:@polyengine/@0.5.0` for `@polyengine/ct-runner`, +(`jsr:@polyengine/@0.6.3` for `@polyengine/ct-runner`, `@polyengine/runtime/embedder`, `@polyengine/runtime/shim`, -`@polyengine/wasi`, `@polyengine/translator`; `jsr:@polyengine/protocol@0.2.2` +`@polyengine/wasi`, `@polyengine/translator`; `jsr:@polyengine/protocol@0.3.1` for vocabulary consumed by driver code such as `examples/polyengine-demo/run.ts`). `deno.lock` carries integrity hashes for that module graph, enforced with `--frozen`. diff --git a/conformance/driver-ct/polyengine/deno.json b/conformance/driver-ct/polyengine/deno.json index e97bb6c..284d1ba 100644 --- a/conformance/driver-ct/polyengine/deno.json +++ b/conformance/driver-ct/polyengine/deno.json @@ -1,13 +1,13 @@ { - "//": "A22 MODULE-IDENTITY POSTURE: @polyengine/wasi@0.5.1 is protocol-only internally (the old module-identity clause tying it to @polyengine/runtime/embedder is gone), so this file's runtime-family pins only need to be exact and mutually consistent with each other and with ../../../js/polyengine/deno.json when that package's caret range resolves the same commit — this repo's driver code (run.ts, examples/polyengine-demo/run.ts) that also loads @polyengine/protocol vocabulary must still resolve to ONE @polyengine/runtime version if it loads the embedder in more than one config, since stateful handles (streams/futures) minted by one copy are refused by another; the published @polymorph/websocket host module, by contrast, now couples only to @polyengine/protocol, whose copies are harmless by construction. Pin story: exact-pinned JSR releases (caret-honest upstream: within a minor line releases stay compatible, breaking bumps the minor; per-commit `-pre.g` prereleases exist between releases — pin exactly); @polyengine/translator ships the translator wasm for that SAME commit; deno.lock carries integrity, --frozen enforced everywhere; the pin gate (justfile: exam-polyengine) asserts one resolved @polyengine/runtime version and one resolved @polyengine/protocol version repo-wide.", + "//": "A22 MODULE-IDENTITY POSTURE: @polyengine/wasi@0.6.3 is protocol-only internally (the old module-identity clause tying it to @polyengine/runtime/embedder is gone), so this file's runtime-family pins only need to be exact and mutually consistent with each other and with ../../../js/polyengine/deno.json when that package's caret range resolves the same commit — this repo's driver code (run.ts, examples/polyengine-demo/run.ts) that also loads @polyengine/protocol vocabulary must still resolve to ONE @polyengine/runtime version if it loads the embedder in more than one config, since stateful handles (streams/futures) minted by one copy are refused by another; the published @polymorph/websocket host module, by contrast, now couples only to @polyengine/protocol, whose copies are harmless by construction. Pin story: exact-pinned JSR releases (caret-honest upstream: within a minor line releases stay compatible, breaking bumps the minor; per-commit `-pre.g` prereleases exist between releases — pin exactly); @polyengine/translator ships the translator wasm for that SAME commit; deno.lock carries integrity, --frozen enforced everywhere; the pin gate (justfile: exam-polyengine) asserts one resolved @polyengine/runtime version and one resolved @polyengine/protocol version repo-wide.", "imports": { - "@polyengine/ct-runner": "jsr:@polyengine/ct-runner@0.5.1", - "@polyengine/runtime/embedder": "jsr:@polyengine/runtime@0.5.1/embedder", - "@polyengine/runtime/shim": "jsr:@polyengine/runtime@0.5.1/shim", - "@polyengine/wasi": "jsr:@polyengine/wasi@0.5.1", - "@polyengine/translator": "jsr:@polyengine/translator@0.5.1", - "@polyengine/protocol": "jsr:@polyengine/protocol@0.2.3", - "@polymorph/test/polyengine-worker-main": "jsr:@polymorph/test@0.2.1/polyengine-worker-main" + "@polyengine/ct-runner": "jsr:@polyengine/ct-runner@0.6.3", + "@polyengine/runtime/embedder": "jsr:@polyengine/runtime@0.6.3/embedder", + "@polyengine/runtime/shim": "jsr:@polyengine/runtime@0.6.3/shim", + "@polyengine/wasi": "jsr:@polyengine/wasi@0.6.3", + "@polyengine/translator": "jsr:@polyengine/translator@0.6.3", + "@polyengine/protocol": "jsr:@polyengine/protocol@0.3.1", + "@polymorph/test/polyengine-worker-main": "jsr:@polymorph/test@0.3.0/polyengine-worker-main" }, "minimumDependencyAge": { "age": "P1D", "exclude": ["jsr:@polyengine/*", "jsr:@polymorph/*"] }, "tasks": { diff --git a/conformance/driver-ct/polyengine/deno.lock b/conformance/driver-ct/polyengine/deno.lock index fbabad5..aa15e57 100644 --- a/conformance/driver-ct/polyengine/deno.lock +++ b/conformance/driver-ct/polyengine/deno.lock @@ -1,54 +1,54 @@ { "version": "5", "specifiers": { - "jsr:@polyengine/ct-runner@0.5.1": "0.5.1", - "jsr:@polyengine/protocol@0.2.3": "0.2.3", - "jsr:@polyengine/protocol@~0.2.3": "0.2.3", - "jsr:@polyengine/runtime@0.5.1": "0.5.1", - "jsr:@polyengine/runtime@~0.5.1": "0.5.1", - "jsr:@polyengine/translator@0.5.1": "0.5.1", - "jsr:@polyengine/wasi@0.5.1": "0.5.1", - "jsr:@polymorph/test@0.2.1": "0.2.1", - "npm:@jsr/polymorph__test@0.2.1": "0.2.1", + "jsr:@polyengine/ct-runner@0.6.3": "0.6.3", + "jsr:@polyengine/protocol@0.3.1": "0.3.1", + "jsr:@polyengine/protocol@~0.3.1": "0.3.1", + "jsr:@polyengine/runtime@0.6.3": "0.6.3", + "jsr:@polyengine/runtime@~0.6.3": "0.6.3", + "jsr:@polyengine/translator@0.6.3": "0.6.3", + "jsr:@polyengine/wasi@0.6.3": "0.6.3", + "jsr:@polymorph/test@0.3.0": "0.3.0", + "npm:@jsr/polymorph__test@0.3.0": "0.3.0", "npm:playwright-core@^1.61.1": "1.62.1" }, "jsr": { - "@polyengine/ct-runner@0.5.1": { - "integrity": "97746f0ea1750690f30bf3f1e0cb5a1e0d06be9720c983f2084999c6c6e97d89", + "@polyengine/ct-runner@0.6.3": { + "integrity": "61821fbc7d8de1aab0a82a6ab3adfa89cc63b87c1a4573516e45a407d501027c", "dependencies": [ - "jsr:@polyengine/protocol@~0.2.3", - "jsr:@polyengine/runtime@~0.5.1" + "jsr:@polyengine/protocol@~0.3.1", + "jsr:@polyengine/runtime@~0.6.3" ] }, - "@polyengine/protocol@0.2.3": { - "integrity": "e3f0ac4165eb691d7231164ce28cf75e275c99496aa538e032297febdc52b371" + "@polyengine/protocol@0.3.1": { + "integrity": "3cba0ded857c5cc911fcf9c0782c7566c79af89ddc8e0ec4e48ece60c807a518" }, - "@polyengine/runtime@0.5.1": { - "integrity": "6337c94d623bc2013fdeb324a5206860a916b8897b39cf4bec65b1bf87c287d0", + "@polyengine/runtime@0.6.3": { + "integrity": "8f1ffc1c547793bc4cb3c1dec6a62c8cf0eb5cdb135b70e6df1fd042c6ec58f0", "dependencies": [ - "jsr:@polyengine/protocol@~0.2.3" + "jsr:@polyengine/protocol@~0.3.1" ] }, - "@polyengine/translator@0.5.1": { - "integrity": "16d7ac88997f89f10145cc109737b749bfebd37c9ea1aefe0a41b44c01b75586", + "@polyengine/translator@0.6.3": { + "integrity": "ccd0bb64ce3081d70b13e224c77e423faf7acf9953f62d4e0d2bab97c626c932", "dependencies": [ - "jsr:@polyengine/runtime@~0.5.1" + "jsr:@polyengine/runtime@~0.6.3" ] }, - "@polyengine/wasi@0.5.1": { - "integrity": "1cb71ff91c24415d85a3b15bbb35462757586fa1478febba605cab4c1b2dbe72", + "@polyengine/wasi@0.6.3": { + "integrity": "5c738fe95101f22e469346618e79ce261dd636a5d44e89fdcdd40c33d8c92e17", "dependencies": [ - "jsr:@polyengine/protocol@~0.2.3" + "jsr:@polyengine/protocol@~0.3.1" ] }, - "@polymorph/test@0.2.1": { - "integrity": "1934b15f69d2c5f733cb42176aee8899f6da507a30ba1e25fad942fb82c0546e" + "@polymorph/test@0.3.0": { + "integrity": "dab82b57524c9ad375d3cc75db1f083c198a24d40105d3f1734f719b3db3f70a" } }, "npm": { - "@jsr/polymorph__test@0.2.1": { - "integrity": "sha512-5bkpwmjHp8Hjk69ADkQp1oo4CHyiPT2BAtQWbi7QrbTkrrwIDOn73JzsmZhzWT4mvzkWEL3Q4u1BSOra3sVBLQ==", - "tarball": "https://npm.jsr.io/~/11/@jsr/polymorph__test/0.2.1.tgz" + "@jsr/polymorph__test@0.3.0": { + "integrity": "sha512-NlpHmd5fA3KB/aAaXrBW4KX57UXkl/V9+RLa+fchFUsjASsigthEHMEiiNozRYN/l3xgsKMSC7J3IPp9VtECsQ==", + "tarball": "https://npm.jsr.io/~/11/@jsr/polymorph__test/0.3.0.tgz" }, "playwright-core@1.62.1": { "integrity": "sha512-wPYSwEBJY9GHraISXqyqtx0na0LpO3XEX7jNDhntbex7tzUS7kLnZsOlFruFJB4Hi/rhDMjXGqHewDZ68nYZVw==", @@ -57,16 +57,16 @@ }, "workspace": { "dependencies": [ - "jsr:@polyengine/ct-runner@0.5.1", - "jsr:@polyengine/protocol@0.2.3", - "jsr:@polyengine/runtime@0.5.1", - "jsr:@polyengine/translator@0.5.1", - "jsr:@polyengine/wasi@0.5.1", - "jsr:@polymorph/test@0.2.1" + "jsr:@polyengine/ct-runner@0.6.3", + "jsr:@polyengine/protocol@0.3.1", + "jsr:@polyengine/runtime@0.6.3", + "jsr:@polyengine/translator@0.6.3", + "jsr:@polyengine/wasi@0.6.3", + "jsr:@polymorph/test@0.3.0" ], "packageJson": { "dependencies": [ - "npm:@jsr/polymorph__test@0.2.1", + "npm:@jsr/polymorph__test@0.3.0", "npm:playwright-core@^1.61.1" ] } diff --git a/conformance/driver-ct/polyengine/package.json b/conformance/driver-ct/polyengine/package.json index edf2892..76cf9b1 100644 --- a/conformance/driver-ct/polyengine/package.json +++ b/conformance/driver-ct/polyengine/package.json @@ -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.1", + "@jsr/polymorph__test": "0.3.0", "playwright-core": "^1.61.1" } } diff --git a/conformance/driver-ct/polyengine/pnpm-lock.yaml b/conformance/driver-ct/polyengine/pnpm-lock.yaml index 091e1b0..0188ecd 100644 --- a/conformance/driver-ct/polyengine/pnpm-lock.yaml +++ b/conformance/driver-ct/polyengine/pnpm-lock.yaml @@ -9,16 +9,16 @@ importers: .: dependencies: '@jsr/polymorph__test': - specifier: 0.2.1 - version: 0.2.1 + specifier: 0.3.0 + version: 0.3.0 playwright-core: specifier: ^1.61.1 version: 1.62.1 packages: - '@jsr/polymorph__test@0.2.1': - resolution: {integrity: sha512-5bkpwmjHp8Hjk69ADkQp1oo4CHyiPT2BAtQWbi7QrbTkrrwIDOn73JzsmZhzWT4mvzkWEL3Q4u1BSOra3sVBLQ==, tarball: https://npm.jsr.io/~/11/@jsr/polymorph__test/0.2.1.tgz} + '@jsr/polymorph__test@0.3.0': + resolution: {integrity: sha512-NlpHmd5fA3KB/aAaXrBW4KX57UXkl/V9+RLa+fchFUsjASsigthEHMEiiNozRYN/l3xgsKMSC7J3IPp9VtECsQ==, tarball: https://npm.jsr.io/~/11/@jsr/polymorph__test/0.3.0.tgz} playwright-core@1.62.1: resolution: {integrity: sha512-wPYSwEBJY9GHraISXqyqtx0na0LpO3XEX7jNDhntbex7tzUS7kLnZsOlFruFJB4Hi/rhDMjXGqHewDZ68nYZVw==} @@ -27,6 +27,6 @@ packages: snapshots: - '@jsr/polymorph__test@0.2.1': {} + '@jsr/polymorph__test@0.3.0': {} playwright-core@1.62.1: {} diff --git a/conformance/driver-ct/polyengine/run.ts b/conformance/driver-ct/polyengine/run.ts index 934cf90..2c6d7d6 100644 --- a/conformance/driver-ct/polyengine/run.ts +++ b/conformance/driver-ct/polyengine/run.ts @@ -218,7 +218,7 @@ async function main() { const artifacts = await loadArtifacts(cli.translator); const imports = { - ...wasi({ cli: { env, passthrough: false } }), + ...wasi({ cli: { env } }), ...websocketImports(), }; diff --git a/js/polyengine/deno.json b/js/polyengine/deno.json index ee7e27d..88c5616 100644 --- a/js/polyengine/deno.json +++ b/js/polyengine/deno.json @@ -1,11 +1,11 @@ { "name": "@polymorph/websocket", - "version": "0.5.0", + "version": "0.6.0", "license": "Apache-2.0", "exports": "./websocket.ts", "//": "A22 MODULE-IDENTITY POSTURE: this package couples only to @polyengine/protocol (the host-ABI vocabulary package) — no @polyengine/runtime import anywhere in this module, per polyengine's A22 rule that published host modules must not import @polyengine/runtime. websocket.ts recognizes polyengine values by @polyengine/protocol brand predicates, not instanceof, so its copies are harmless by construction: any application that also loads the embedder resolves its own runtime version independently, and this package neither constrains nor is constrained by that choice. Pin story: this published package takes a caret range on @polyengine/protocol (caret-honest upstream: within a minor line releases stay compatible, breaking bumps the minor); deno.lock carries integrity, --frozen enforced everywhere; the pin gate (justfile: exam-polyengine) asserts this file names no @polyengine/runtime specifier.", "imports": { - "@polyengine/protocol": "jsr:@polyengine/protocol@^0.2.3" + "@polyengine/protocol": "jsr:@polyengine/protocol@^0.3.1" }, "minimumDependencyAge": { "age": "P1D", "exclude": ["jsr:@polyengine/*"] }, "compilerOptions": { diff --git a/js/polyengine/deno.lock b/js/polyengine/deno.lock index db462e5..dbbf811 100644 --- a/js/polyengine/deno.lock +++ b/js/polyengine/deno.lock @@ -1,13 +1,13 @@ { "version": "5", "specifiers": { - "jsr:@polyengine/protocol@~0.2.3": "0.2.3", + "jsr:@polyengine/protocol@~0.3.1": "0.3.1", "jsr:@std/assert@1": "1.0.19", "jsr:@std/internal@^1.0.12": "1.0.14" }, "jsr": { - "@polyengine/protocol@0.2.3": { - "integrity": "e3f0ac4165eb691d7231164ce28cf75e275c99496aa538e032297febdc52b371" + "@polyengine/protocol@0.3.1": { + "integrity": "3cba0ded857c5cc911fcf9c0782c7566c79af89ddc8e0ec4e48ece60c807a518" }, "@std/assert@1.0.19": { "integrity": "eaada96ee120cb980bc47e040f82814d786fe8162ecc53c91d8df60b8755991e", @@ -21,7 +21,7 @@ }, "workspace": { "dependencies": [ - "jsr:@polyengine/protocol@~0.2.3" + "jsr:@polyengine/protocol@~0.3.1" ] } }