Scope
Conformance audit of the Rsbuild 2.2.1 development server, HMR relay, MultiCompiler observation, and runtime generation capture at 12526a8b9d1c5d096dc16a9aee823606997edade.
Verdict
Public Rsbuild usage is conformant. One behavior is wrong: the Runtime App relay treats Rsbuild's private ok frame as a reload request even though the provider already emits the documented full-reload operation only for changed App compilations.
Five seams depend on behavior that Rsbuild/Rspack does not document:
- raw JSON HMR frame shape and
ok/hash ordering;
- WebSocket token alphabet and length;
- one-to-one FIFO pairing of global before/after dev compile hooks under MultiCompiler skew;
- Stats child names matching environment keys and cross-root
writeToDisk cohort timing;
startDevServer() / provider-tail timing appearing to act as an initial-compile barrier.
Disposition
The conformance fix branch removes ok-driven reloads, allowlists the provider-emitted full-reload kind, accepts bounded string tokens with URL encoding, derives the HMR path from normalized environment configuration, fails FIFO violations loudly, explicitly names compilers, and documents that startup may return in compiling state.
The deeper protocol-channel, completed-cohort identity, and immutable per-environment output staging changes require focused follow-ups linked to this audit.
References
Scope
Conformance audit of the Rsbuild 2.2.1 development server, HMR relay, MultiCompiler observation, and runtime generation capture at
12526a8b9d1c5d096dc16a9aee823606997edade.Verdict
Public Rsbuild usage is conformant. One behavior is wrong: the Runtime App relay treats Rsbuild's private
okframe as a reload request even though the provider already emits the documentedfull-reloadoperation only for changed App compilations.Five seams depend on behavior that Rsbuild/Rspack does not document:
ok/hashordering;writeToDiskcohort timing;startDevServer()/ provider-tail timing appearing to act as an initial-compile barrier.Disposition
The conformance fix branch removes
ok-driven reloads, allowlists the provider-emittedfull-reloadkind, accepts bounded string tokens with URL encoding, derives the HMR path from normalized environment configuration, fails FIFO violations loudly, explicitly names compilers, and documents that startup may return incompilingstate.The deeper protocol-channel, completed-cohort identity, and immutable per-environment output staging changes require focused follow-ups linked to this audit.
References
hot.send('full-reload')