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
6 changes: 3 additions & 3 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
8 changes: 4 additions & 4 deletions conformance/driver-ct/polyengine/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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/<pkg>@0.5.0` for `@polyengine/ct-runner`,
(`jsr:@polyengine/<pkg>@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`.
Expand Down
16 changes: 8 additions & 8 deletions conformance/driver-ct/polyengine/deno.json
Original file line number Diff line number Diff line change
@@ -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 `<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; 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 `<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; 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": {
Expand Down
72 changes: 36 additions & 36 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.1",
"@jsr/polymorph__test": "0.3.0",
"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.

2 changes: 1 addition & 1 deletion conformance/driver-ct/polyengine/run.ts
Original file line number Diff line number Diff line change
Expand Up @@ -218,7 +218,7 @@ async function main() {

const artifacts = await loadArtifacts(cli.translator);
const imports = {
...wasi({ cli: { env, passthrough: false } }),
...wasi({ cli: { env } }),
...websocketImports(),
};

Expand Down
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.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": {
Expand Down
8 changes: 4 additions & 4 deletions js/polyengine/deno.lock

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

Loading