Skip to content

chore(deps): bump @rslint/core to 0.8.2 and @types/node to 26.4.0 - #29

Merged
ScriptedAlchemy merged 1 commit into
mainfrom
chore/rstack-refresh
Aug 29, 2026
Merged

chore(deps): bump @rslint/core to 0.8.2 and @types/node to 26.4.0#29
ScriptedAlchemy merged 1 commit into
mainfrom
chore/rstack-refresh

Conversation

@ScriptedAlchemy

Copy link
Copy Markdown
Owner

Summary

Dependency freshness pass over the rstack toolchain. Nearly everything is already at latest; the only rstack package behind was @rslint/core, plus a safe dev-only @types/node minor.

Package Current Latest Action
@rslint/core 0.8.1 0.8.2 Bumped (root + packages/agent-bundle), patch changeset added
@types/node (dev) 26.2.0 26.4.0 Bumped (root)
@rsbuild/core 2.2.1 2.2.1 Current
@rsbuild/plugin-react 2.1.0 2.1.0 Current
@rspack/core 2.2.1 2.2.1 Current
@rslib/core 0.23.2 0.23.2 (1.0.0 still rc.2) Current; 1.0 migration deferred until stable
@rstest/* (core, adapter-rslib, browser, browser-react, playwright, coverage-istanbul) 0.11.10 0.11.10 Current
react-server-dom-rspack 0.1.0 0.1.0 Current
rsbuild-plugin-rsc 0.1.1 0.1.1 Current
@rstackjs/load-config 0.1.2 0.1.2 Current
@changesets/cli (dev) 2.29.7 3.0.1 Not bumped — major, out of scope

Exact-pin style is preserved. The README pin documentation in examples/rsc-agent-runtime/README.md is unaffected (React/Rsbuild/RSC pins unchanged).

Verification

All run in a clean worktree after the bumps:

  • pnpm build — pass
  • pnpm typecheck — pass
  • pnpm lint — pass (rslint 0.8.2: 0 errors/0 warnings across 618 files, so no new rule behavior)
  • pnpm test:unit — pass, no failures
  • pnpm --filter @agent-bundle/rsc-agent-runtime-demo build — pass
  • tests/rsc-hook.integration.test.ts (worker-spawn / chunk-splitting canary) — pass

No rspack/rsbuild versions changed, so chunk layout was not at risk this round.

The rest of the rstack line (@rsbuild/core 2.2.1, @rspack/core 2.2.1,
@rstest/* 0.11.10, @rslib/core 0.23.2, react-server-dom-rspack 0.1.0,
rsbuild-plugin-rsc 0.1.1, @rsbuild/plugin-react 2.1.0) is already at
latest. @rslib/core 1.0.0 remains at rc.2, so that migration stays
deferred. Includes a patch changeset since @rslint/core is a published
dependency of agent-bundle.
@changeset-bot

changeset-bot Bot commented Aug 29, 2026

Copy link
Copy Markdown

🦋 Changeset detected

Latest commit: 0ccb1b9

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 1 package
Name Type
agent-bundle Patch

Not sure what this means? Click here to learn what changesets are.

Click here if you're a maintainer who wants to add another changeset to this PR

@pkg-pr-new

pkg-pr-new Bot commented Aug 29, 2026

Copy link
Copy Markdown
npm i https://pkg.pr.new/ScriptedAlchemy/agent-bundle@29
npm i https://pkg.pr.new/ScriptedAlchemy/agent-bundle/@agent-bundle/rsc-runtime@29

commit: 0ccb1b9

@chatgpt-codex-connector

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review Completed 2026-08-29T05:14:11.400626Z 0ccb1b9 PR opened
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@ScriptedAlchemy
ScriptedAlchemy merged commit 0f66bc4 into main Aug 29, 2026
27 of 30 checks passed
@ScriptedAlchemy
ScriptedAlchemy deleted the chore/rstack-refresh branch August 29, 2026 06:04
ScriptedAlchemy added a commit that referenced this pull request Aug 29, 2026
…e script (#33)

Post-merge review feedback on #31:

- The example test imported a timing helper from another package's private
  test sources, so the user-facing example could no longer run or be copied
  independently of the repository layout. The example now keeps its own
  tests/support/time-scale.ts copy.
- The lock exclusion tests asserted "contender has not settled" after fixed
  40ms sleeps, which race the contender's 25ms retry loop: on a loaded
  runner a wrongly released lease can take longer than the sleep to be
  noticed, so the assertion passes without testing anything. The test
  support adapter now exposes onLockAttempt, and the tests order those
  assertions on observed lock refusals; after the cancellation they require
  a refusal from an attempt that provably started after it.

Same-class flake fix (observed on the #29 merge run, Node 24: the capture
script's 120s waitForFunction timed out after a fixture write):

- capture-runtime-playground.mjs still rewrote watched fixture sources in
  place with writeFile, the truncate-then-append race #31 removed from the
  HMR e2e test. All watched-source writes and restores now stage a temp
  file in the fixture project's parent and rename it into place.
ScriptedAlchemy added a commit that referenced this pull request Aug 29, 2026
…ps in the Runtime App relay (#35)

* fix(workbench): stop in-place writes to watched files in e2e suites

An in-place writeFile to a file the dev compiler is watching is
truncate-then-append: the watcher can compile off the truncation event,
read incomplete content, and drop the append event inside the same mtime
tick, so the final content never activates. PR #31 root-caused this for
the runtime-playground HMR suite; this applies the same staged-rename
pattern (temp file in the unwatched project parent, then rename) to the
remaining e2e suites through a shared tests/support/watched-files.ts
helper: overview.e2e (7 watched-write sites) and packed-release.e2e (4).

mcp-app-real.e2e had no watched writes; its observed Verify flake (PR
#29 CI attempt 2, teardown-ack poll timing out after 60s) was a
different unrecoverable race: the runtime App bridge waited only a fixed
1s for the ui/resource-teardown acknowledgement before revoking the
binding and destroying the frame, so an ack that missed the window on a
contended two-core runner could never be delivered. The budget is now
10s (a healthy app acks in milliseconds; the budget only bounds a hung
app), with a test seam so the bounded-teardown unit proof stays fast.

* fix(workbench): deflake contended-runner races the staged-rename stress exposed

Stressing the suites under taskset -c 0,1 (mirroring two-core CI) surfaced
three more root causes beyond the in-place writes:

- overview handoff test: the config-reconcile polls used raw 15s budgets
  while each reconcile recompiles the config plus three bundles (~4s
  apiece pinned), failing 4/4 under taskset; they now scale with
  timeScale like the rest of the file.
- overview restart test: the registry-replay-gap fallback announcement
  was asserted with the default 5s budget although it renders only after
  the invalidation cleanup settles; now scaled, and toHaveText reports
  the actual reason when the wrong invalidation wins.
- mcp-app-real third teardown: the test navigated away as soon as the
  third App frame's heading rendered, but the App SDK can acknowledge
  ui/resource-teardown only once its transport is connected. Teardown
  then raced initialization: relayed into a frame that cannot answer,
  the host's bounded grace elapsed, the frame was destroyed, and the ack
  became unobservable forever (2/3 pinned failures; same signature as
  the PR #29 Verify flake). The navigation now waits for the third
  frame's ui/initialize evidence, matching the existing destination gate.

* fix(dev): stop dropping host messages relayed during the Runtime App handshake

The runtime client-surface relay forwarded host-to-app traffic only in the
'initialized' lifecycle (plus the initialize response while 'initializing')
and silently dropped everything else. A host request relayed into that
handshake window — observed as ui/resource-teardown racing the App's
ui/notifications/initialized on contended two-core runners — vanished: the
host burned its bounded teardown grace waiting for an answer that could
never arrive, destroyed the frame, and the acknowledgement evidence was
lost forever (the PR #29 Verify flake signature; budget-independent, still
failing 2/8 under taskset -c 0,1 even with a 30s grace). The relay now
queues up to 32 validated host messages during the handshake and flushes
them once the App reports initialized; the queue survives an HMR entry
reload so a request sent to a retiring App instance is answered by its
replacement. The teardown ack poll also carries enriched failure evidence
now. Single-test stress under taskset -c 0,1: 8/8 after the fix.

* test: pin the origin-checked host relay admission line in the proxy shell

* test(workbench): scale every overview e2e wait budget with timeScale

* test(workbench): reuse the shared watched-file helper in the HMR suite

PR #31 landed replaceWatchedSource locally in the HMR e2e before the
shared tests/support/watched-files.ts helper existed on this branch;
import the shared copy instead of keeping two implementations.

* chore: add a changeset for the runtime relay handshake queue fix

* fix(workbench): deflake the restart preview-count assertion the pinned stress exposed

waitFor(attached) on the runtime preview iframe can resolve against the
outgoing binding's frame during a restart, which unmounts before its
replacement mounts; the instant count() then reads a transient 0 on a
contended two-core runner (1/5 pinned failures). toHaveCount(1) retries
until exactly one preview iframe is attached and still fails duplicates.
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