Skip to content

JSR unstable prereleases: @deltic/{runtime,translator,wasi-shims,ct-runner} - #64

Merged
lann merged 2 commits into
mainfrom
jsr-prereleases
Aug 10, 2026
Merged

JSR unstable prereleases: @deltic/{runtime,translator,wasi-shims,ct-runner}#64
lann merged 2 commits into
mainfrom
jsr-prereleases

Conversation

@lann

@lann lann commented Aug 10, 2026

Copy link
Copy Markdown
Collaborator

Executes #16's publishing half: every green main commit publishes 0.1.0-pre.<commit-count> to JSR from the existing release workflow (OIDC).

Dry-run-driven fixes, root causes not suppressions (full list in the commit message): Apache-2.0 license (operator ruling); harness/examples de-named (unpublishable internals); tests publish-excluded; the gitignored translator asset force-included (1.76 MB verified in the simulated file list); the only two slow-types in the workspace annotated; WebAssembly.Suspending removed from public signatures in favor of an opaque exported brand — declare global doesn't travel to JSR's type output, and consumers shouldn't need our ambient augmentation anyway; ct-runner's relative imports into runtime replaced with bare specifiers.

Drive-by: release-artifacts still shipped an untuned 'standard' shim + a min variant — stale since #58; now one tuned shim (the artifact every suite runs against), release notes updated.

⚠ One-time manual setup before the first publish succeeds (needs your JSR account):

  1. Create the @deltic scope on jsr.io.
  2. Create the four packages: runtime, translator, wasi-shims, ct-runner.
  3. Link each to lann/deltic (Settings → GitHub repository) to enable OIDC publishing from Actions.

Until then the JSR step fails (and the GitHub-release step before it still completes). deno publish --dry-run --allow-dirty is green locally for all four packages.

Gates: full sweep green (commit message has the list); conformance 1254/0, 0 unexpected, 0 stale.

…unner} (#16)

Every green main commit now also publishes 0.1.0-pre.<commit-count> to
JSR from the existing release workflow (OIDC; the one-time scope/package
setup checklist is on #16). Blockers found by dry-run, each fixed at the
root rather than suppressed:

- License: Apache-2.0 (operator ruling) — LICENSE at the root, license
  field in all four packages.
- Publish set: harness/ and examples/ lose their workspace names (never
  imported by bare specifier; unnamed members are not publishable and
  stay internal). runtime/ and translator/ gain version fields; tests/
  and testdata/ are publish-excluded everywhere; the gitignored
  translator asset is force-included via a negative publish glob and
  lands in the package (1.76 MB, verified in the dry-run file list).
- Slow types: exactly two in the whole workspace (scheduler.ts Set
  initializers) — annotated explicitly instead of --allow-slow-types.
- Global-augmentation leak: suspendingImport/makeSuspending named
  WebAssembly.Suspending in PUBLIC signatures, which JSR's type output
  drops (declare global does not travel). Public API now uses an opaque
  exported brand (SuspendingImport); the augmentation stays internal.
  This is the right API shape regardless of JSR: consumers should not
  need our ambient declarations to read our signatures.
- Cross-package hygiene: ct-runner imported @deltic/runtime by RELATIVE
  path (illegal across published package boundaries) — switched to the
  bare specifiers wasi-shims already uses; deno publish rewrites them.

Release flow updates: id-token permission (JSR OIDC), fetch-depth 0
(commit count = prerelease number), version stamping is CI-working-tree
only (checked-in versions stay 0.1.0). Re-runs are no-ops-by-failure
twice over (tag guard + JSR duplicate-version refusal).

Drive-by consistency fix: release-artifacts still built an UNTUNED
"standard" shim plus a separate min variant — stale since #58 made the
tuned build the artifact every suite runs against. It now ships the one
tuned shim via the shim recipe (also feeding the translator package
asset), and the release notes stop advertising the retired variant.

Remaining warnings (4) are the legitimately-dynamic CLI import in
ct-runner main.ts and test-file imports outside the publish set —
acknowledged, not suppressed.

Gates: dry-run simulates all four packages cleanly; test-runtime,
test-wasi-shims, test-ct-runner, test-bundle, examples, test-translate,
conformance (1254/0, 0 unexpected, 0 stale), sched-seeds, shells,
test-ports, smoke-tls.
…cap)

The called release.yml now requests id-token: write for JSR OIDC; a
reusable workflow may not request permissions its caller's job does not
grant, and GitHub validates that at STARTUP — so ci.yml itself failed
with startup_failure on the PR (run 31440257705), taking every check
down with it. Grant the permission at the call site.
@lann
lann merged commit 0af442c into main Aug 10, 2026
4 checks passed
@lannbot
lannbot deleted the jsr-prereleases branch August 23, 2026 16:51
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.

1 participant