Repository navigation
[rushd][WS5] Rush 6 cutover: testing, observability & migration #5900
Copy link
Copy link
Open
Labels
Description
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 Kuang (@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.
Depends on: all above (#5895–#5899); #5858 phases 1–6
Scope
- 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 buildcollapses 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/--verbosemode. - 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 Kuang (@beta) changelog. Hook renames/relocations, runner
lastState, and the process-identity break (process.cwd/env/argv/isTTY/exitnow 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
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. - Flip the bin default. Absorb
@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. - Phased-handler split. The client-side
PhasedScriptActiondegrades to parse→forward→stream→exit while the daemon owns graph/iteration/watch;--watchbecomes "attach to the live watched graph". - User docs + rollout comms. The daemon model, the
rush daemoncommands, 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 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. - Lifecycle events and per-request correlation ids are written to a structured
daemon.log;rush daemon logs --followtails 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,
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. - On the client,
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. - User-facing docs cover the daemon model,
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.
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
Type
Projects
- StatusShow more project fieldsNeeds triage
Activity