You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Prove transparency and lifecycle correctness, then execute the Rush 6 cutover. First deliver the I/O and exit-code transparency matrix, concurrency/lifecycle integration coverage, warm-path benchmarks, and daemon logging/diagnostics — the bar that gates cutover-readiness. Then ship the plugin migration guide + @beta changelog, an optional compat shim, the version-policy/packaging flip to 6.0.0, the absorption of the CLI client into @microsoft/rush with the bin default flipped to the daemon (permanent in-process fallback), the phased-handler split, and user docs / rollout comms. Ships in the same major as #5858 phase 6.
Transparency matrix. Daemon vs in-process: stdout/stderr parity, redirection/piping, exit codes, TTY vs non-TTY, color/width, Ctrl+C, stdin, and cwd/env-override correctness.
Lifecycle/concurrency integration tests. Auto-start races, queue-and-wait, shared-build merging, self-restart/handoff, version-mismatch restart, idle shutdown, and crash recovery (races made deterministic via hooks).
Warm-path benchmarks. Assert a no-op rush build collapses to sub-100ms once warm; track daemon RSS under each warm-set policy.
Logging & diagnostics. A structured daemon.log, rush daemon logs --follow, and a debug/--verbose mode.
Cutover gate. The transparency, integration, and benchmark suites gate cutover-readiness — the migration and packaging items below proceed only once they are green.
Plugin migration guide + @beta changelog. Hook renames/relocations, runner lastState, and the process-identity break (process.cwd/env/argv/isTTY/exit now reflect the daemon, not the client).
Optional compat shim. Re-expose a few removed hooks (waitingForChanges→onIdle, onOperationStatusChanged←onExecutionStatesUpdated) so unmigrated plugins keep working during the transition.
Version-policy + packaging cutover. Add the new daemon packages (daemon, client, renderer, protocol, transport) to the rush lockstep policy and bump mainProject to 6.0.0, coordinated with the Reporter Overhaul's "daemon-aligned major default flip" ([rush] Rush Reporter Overhaul #5858 phase 6) as the same release.
Flip the bin default. Absorb @rushstack/rush-cli-client into @microsoft/rush and repoint rush/rushx from in-process execution to the daemon client, keeping a permanent in-process fallback (--no-daemon/RUSH_DAEMON=0); retire (or thin to a re-export) the CLI-client package.
Phased-handler split. The client-side PhasedScriptAction degrades to parse→forward→stream→exit while the daemon owns graph/iteration/watch; --watch becomes "attach to the live watched graph".
User docs + rollout comms. The daemon model, the rush daemon commands, CI guidance, and the Rush 5→6 migration path.
Acceptance criteria
Every transparency-matrix cell asserts daemon output/behavior matches in-process, with actionable diagnostics on failure (which cell, expected vs actual).
Each lifecycle/concurrency scenario has a deterministic integration test (races made deterministic via hooks).
A warm no-op rush build meets the sub-100ms budget (a regression fails the gate) and daemon RSS is recorded per warm-set policy and tracked over time in CI.
Lifecycle events and per-request correlation ids are written to a structured daemon.log; rush daemon logs --follow tails it and --verbose/debug increases detail.
The transparency, integration, and benchmark suites run in CI and gate cutover-readiness (the migration/packaging items below merge only once they are green).
The migration guide documents each hook rename/relocation (before/after) and the process-identity break with recommended patterns, and every breaking change (the WS0 engine work and the cutover items below) links to it; reviewed by a plugin owner.
An unmigrated plugin using the shimmed hook names runs unchanged when the optional, clearly-deprecated (with a removal target) shim is enabled.
The new daemon packages are on the rush lockstep policy, mainProject is 6.0.0, released in the same major as [rush] Rush Reporter Overhaul #5858 phase 6, with the cutover-readiness gates above green and rush change --verify passing.
rush/rushx default to the daemon client while --no-daemon/RUSH_DAEMON=0 still run fully in-process; the transparency matrix above passes on the flipped bins; the standalone CLI-client package is retired or reduced to a re-export.
On the client, rush build/rush start only parse args, forward, stream, and exit (the daemon owns graph/iteration/watch), and --watch attaches to the daemon's live watched graph and reflects headless invalidations.
User-facing docs cover the daemon model, rush daemon commands, CI guidance, and the 5→6 migration path, are linked from the release notes and reviewed, and docs build green in CI.
Prove transparency and lifecycle correctness, then execute the Rush 6 cutover. First deliver the I/O and exit-code transparency matrix, concurrency/lifecycle integration coverage, warm-path benchmarks, and daemon logging/diagnostics — the bar that gates cutover-readiness. Then ship the plugin migration guide + @beta changelog, an optional compat shim, the version-policy/packaging flip to
6.0.0, the absorption of the CLI client into@microsoft/rushwith the bin default flipped to the daemon (permanent in-process fallback), the phased-handler split, and user docs / rollout comms. Ships in the same major as #5858 phase 6.Depends on: all above (#5895–#5899); #5858 phases 1–6
Scope
rush buildcollapses to sub-100ms once warm; track daemon RSS under each warm-set policy.daemon.log,rush daemon logs --follow, and a debug/--verbosemode.lastState, and the process-identity break (process.cwd/env/argv/isTTY/exitnow reflect the daemon, not the client).waitingForChanges→onIdle,onOperationStatusChanged←onExecutionStatesUpdated) so unmigrated plugins keep working during the transition.mainProjectto6.0.0, coordinated with the Reporter Overhaul's "daemon-aligned major default flip" ([rush] Rush Reporter Overhaul #5858 phase 6) as the same release.@rushstack/rush-cli-clientinto@microsoft/rushand repointrush/rushxfrom in-process execution to the daemon client, keeping a permanent in-process fallback (--no-daemon/RUSH_DAEMON=0); retire (or thin to a re-export) the CLI-client package.PhasedScriptActiondegrades to parse→forward→stream→exit while the daemon owns graph/iteration/watch;--watchbecomes "attach to the live watched graph".rush daemoncommands, CI guidance, and the Rush 5→6 migration path.Acceptance criteria
rush buildmeets the sub-100ms budget (a regression fails the gate) and daemon RSS is recorded per warm-set policy and tracked over time in CI.daemon.log;rush daemon logs --followtails it and--verbose/debug increases detail.mainProjectis6.0.0, released in the same major as [rush] Rush Reporter Overhaul #5858 phase 6, with the cutover-readiness gates above green andrush change --verifypassing.rush/rushxdefault to the daemon client while--no-daemon/RUSH_DAEMON=0still run fully in-process; the transparency matrix above passes on the flipped bins; the standalone CLI-client package is retired or reduced to a re-export.rush build/rush startonly parse args, forward, stream, and exit (the daemon owns graph/iteration/watch), and--watchattaches to the daemon's live watched graph and reflects headless invalidations.rush daemoncommands, CI guidance, and the 5→6 migration path, are linked from the release notes and reviewed, and docs build green in CI.Part of #5894.