Skip to content

Version Packages - #8

Merged
lintdeveloper merged 1 commit into
mainfrom
changeset-release/main
Aug 27, 2026
Merged

lintdeveloper merged 1 commit into
mainfrom
changeset-release/main

Conversation

@github-actions

@github-actions github-actions Bot commented Aug 26, 2026

Copy link
Copy Markdown
Contributor

This PR was opened by the Changesets release GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to main, this PR will be updated.

Releases

resilix@0.6.0

Minor Changes

  • 283d5d6: New: resilix/undici — guard undici's Dispatcher and every call site in the process is
    covered at once, including ones you do not own.

    setGlobalDispatcher(
      new Agent().compose(
        resilixInterceptor({
          policies: [breaker({ slowCallMs: 3_000 }), limiter()],
        })
      )
    );

    resilix/fetch covers the WHATWG API, but Node services reach the network through undici — it is
    what fetch, undici.request and most SDK HTTP layers sit on.

    • Latency is time to first byte, taken at onResponseStart, never the time to drain the body.
    • A refused request never reaches the network; RejectedError arrives via onResponseError.
    • Verdicts come from the real status code, so a 404 is answered and a 503 is overload.
    • Requires undici >= 7. undici 7 renamed the entire handler surface, and compose() exists on
      6.x too, so an undici 6 install would get a silently inert interceptor. Verified against real
      6.28, 7.29 and 8.10 rather than assumed. Optional peer; core stays at zero dependencies.
    • timeoutMs, retry and hedge are not available here: dispatch is callback-driven and
      returns synchronously, so the executor cannot wrap it (ADR-013). Compose undici's own
      interceptors.retry / headersTimeout alongside. Every policy works unchanged.

    Also widens the Gate.settleVerdict type to accept retryAfterMs. The implementation always
    took it; only the type omitted it, so anyone driving policies by hand had to discard the
    upstream's own Retry-After. resilix/undici was the first caller to need it.

Patch Changes

  • f09f4d9: The opossum compatibility suite is now pinned to a commit instead of tracking main.

    .opossum-compat/ is not cached in CI, so every run re-fetched the suite — meaning the README's
    "362 of 362" was measured against whatever opossum had merged that morning. A required check whose
    expected value can change upstream without us is not a check. Bumping the pin is now a deliberate
    act, with the new total.

    A stalled file also reports its exit status and the tail of its output. It previously printed only
    the word STALLED with the child's output discarded, so when test.js produced no TAP summary on
    a CI runner while passing locally, there was nothing to diagnose from.

  • 9dd5d1a: release.yml can now be triggered manually (workflow_dispatch).

    The publish fires on a push to main, and a push gives exactly one chance to run it. During the
    2026-08-26 GitHub Actions outage no runs were created at all, which means a release commit landing
    in that window would have consumed its changesets and left the version on main with nothing
    published — recoverable only by pushing another commit purely to fire the event. Exposing the
    dispatch is safe: changeset publish is a no-op for a version already on the registry.

    CONTRIBUTING.md also now states when the branch-protection bypass is legitimate — a platform
    outage or a production incident, with the local checks run first — and that it never extends to
    force-push, branch deletion or tag immutability.

  • f09f4d9: pnpm test:integration is runnable again, and says what to do when it is not.

    The path fix landed separately; this is what running it revealed. The describe-level gate only
    checks whether RESILIX_TEST_DATABASE_URL is set, and the script always sets it with a
    localhost default — so without a database the suite failed with a bare AggregateError and two
    node:net stack frames. It now names the URL it tried, gives the docker run line, and points at
    pnpm test for skipping.

    Verified end to end against a real PostgreSQL 14.15: 13 of 13 pass, so classifySql's
    mappings hold on 14 as well as the 16 they were captured against. One caveat now documented:
    initdb --auth=trust makes the "bad password" case unfalsifiable, and that test reports
    NO THROW until pg_hba.conf uses scram-sha-256 for 127.0.0.1.

  • 48d89e2: Three test suites had been silently disabled since the src/ reorganisation, and none of them
    ran in CI, so nothing reported it.

    • test:integration pointed at src/sql-integration.test.ts (now src/scenarios/)
    • test:perf pointed at src/limiter.simulation.test.ts (now src/policies/)
    • test:compat generated its opossum shim once and cached it, so every harness kept requiring
      dist/compat/opossum.cjs after the shim moved to dist/adapters/. The whole suite reported
      0 of 0 STALLED — meaning the README's "362 of 362" claim was unverifiable for days. The
      shim is now rewritten on every run, since it is a generated file rather than a cached one.

    All three now run in CI, and pnpm test:paths fails the build if any path named in a
    package.json script does not exist. verify runs it first, so it fails in a second rather than
    after a full coverage pass.

@github-actions
github-actions Bot force-pushed the changeset-release/main branch 2 times, most recently from 6d7407e to 14004bb Compare August 27, 2026 09:08
@github-actions
github-actions Bot force-pushed the changeset-release/main branch from 14004bb to a56387a Compare August 27, 2026 09:23
@lintdeveloper
lintdeveloper merged commit 1fb4e0d into main Aug 27, 2026
11 checks passed
@lintdeveloper
lintdeveloper deleted the changeset-release/main branch August 27, 2026 10:40
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