Skip to content

[rush-daemon][WS2.8][7/9] Wire request admission - #5970

Merged
Mo Jazayeri (mojaza) merged 3 commits into
mainfrom
mojazayeri-microsoft-rushd-ws2-8-request-admission-upstream
Aug 27, 2026
Merged

[rush-daemon][WS2.8][7/9] Wire request admission#5970
Mo Jazayeri (mojaza) merged 3 commits into
mainfrom
mojazayeri-microsoft-rushd-ws2-8-request-admission-upstream

Conversation

@mojaza

Copy link
Copy Markdown
Contributor

Summary

Adds WS2.8 scheduler classification and request admission for the opt-in rushd phased/global routing stack.

Depends on #5969. This is layer 7/9, follows #5949, advances #5897, and keeps the parser/action prerequisite tracked by #5895. Azure PBI: https://onedrive.visualstudio.com/EFun/_workitems/edit/3216024

This pull request is intentionally a draft for human review. Do not merge or enable auto-merge until the dependent WS2 layers are reviewed in order.

Details

  • Classifies every built-in Rush command as SHARED-BUILD, SHARED-READ, or EXCLUSIVE; unknown commands and custom/plugin replacements fail closed to EXCLUSIVE through explicit parsed command origin.
  • Shares one RequestScheduler per warm workspace across phased and global routes.
  • Adds typed noWait and bounded waitTimeoutMs admission options, queued cancellation, capability-gated one-based queue-position controls, and deterministic typed admission results.
  • Carries one absolute wait deadline and ordered progress channel across workspace admission and the temporary phased graph-execution gate.
  • Holds admission through request cleanup and final-result delivery, including abort, disconnect, output failure, and raw-mode restoration failure.
  • Adds focused protocol, classification, concurrency, FIFO, cancellation, deadline, and cleanup-race coverage.

Limitations

  • CLI parsing for --no-wait and --wait-timeout remains deferred to WS4; this layer accepts resolved typed values only.
  • Compatible SHARED-BUILD requests may hold admission concurrently, but the phased router intentionally retains graph-execution serialization. WS2.9 owns coordinated selection merging.
  • Existing Rush action/parser adaptation, daemon lifecycle/restart work, and apps/rush launcher integration remain out of scope; rushd stays opt-in under @rushstack/rush-daemon.

How it was tested

  • node common/scripts/install-run-rush.js build --only @rushstack/rush-daemon-protocol --only @rushstack/rush-daemon — passed and reran successfully to stabilize API reports.
  • From libraries/rush-daemon-protocol, using installed Jest 29.7.0: node $jest --rootDir . --roots lib-commonjs --testRegex '.*[.]test[.]js$' --transform '{}' --runInBand — 10 suites passed, 49 tests passed.
  • From libraries/rush-daemon, using installed Jest 29.7.0: node $jest --rootDir . --transform '{}' --runInBand --runTestsByPath lib-commonjs/test/CommandResultPolicy.test.js lib-commonjs/test/GlobalCommandRequestRouter.test.js lib-commonjs/test/PhasedRequestInteractive.test.js lib-commonjs/test/PhasedRequestRouter.test.js lib-commonjs/test/RequestAdmissionIntegration.test.js lib-commonjs/test/RushCommandRequestPolicy.test.js — 6 suites passed; 67 tests passed, 1 skipped, 68 total.
  • node common/scripts/install-run-rush.js change --verify — passed.
  • git diff --check 139bc7a7fb8abc4b5986e06d2ae9c4018d5485db..HEAD — passed.
  • git merge-base --is-ancestor 139bc7a7fb8abc4b5986e06d2ae9c4018d5485db HEAD — passed; exact live parent merge base is 139bc7a7fb8abc4b5986e06d2ae9c4018d5485db, and original handoff parent 3eadbbb9335f2bbf3d0bd2455136232415294d9e remains an ancestor.
  • git range-diff 7cfc9f0b7b198a15195e0d7677c00e970955d453..8730ba6884d32ff92214ddd6d7bfe19209fdadc0 139bc7a7fb8abc4b5986e06d2ae9c4018d5485db..HEAD — preserves the two source commits with attributable WS2.7 conflict resolution and inherited-test adaptations.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds WS2.8 request classification and admission across opt-in rushd global and phased routing.

Changes:

  • Adds protocol-minor-4 admission options, queue progress, command origin, and typed failures.
  • Introduces workspace scheduling, command classification, deadlines, cancellation, and graph serialization.
  • Adds integration tests, documentation, API reports, and change records.

Reviewed changes

Copilot reviewed 33 out of 33 changed files in this pull request and generated 2 comments.

Show a summary per file
File Description
libraries/rush-daemon/README.md Documents admission behavior and limitations.
libraries/rush-daemon/src/GlobalCommandRequest.ts Resolves origin and admission options.
libraries/rush-daemon/src/GlobalCommandRequestClient.ts Adds admission capability and queue output.
libraries/rush-daemon/src/GlobalCommandRequestRouter.ts Integrates global request admission.
libraries/rush-daemon/src/PhasedRequestClient.ts Adds phased queue-position support.
libraries/rush-daemon/src/PhasedRequestRouter.ts Adds workspace and graph admission.
libraries/rush-daemon/src/RushCommandRequestPolicy.ts Classifies built-in and custom commands.
libraries/rush-daemon/src/WorkspaceRequestAdmission.ts Implements shared admission control.
libraries/rush-daemon/src/test/GlobalCommandRequestRouter.test.ts Adapts global routing tests.
libraries/rush-daemon/src/test/PhasedRequestInteractive.test.ts Adds command origin fixture data.
libraries/rush-daemon/src/test/PhasedRequestInput.test.ts Adds command origin fixture data.
libraries/rush-daemon/src/test/PhasedRequestRouter.test.ts Adds command origin fixture data.
libraries/rush-daemon/src/test/PhasedRequestRouterTestUtilities.ts Supports queue-position test output.
libraries/rush-daemon/src/test/RequestAdmissionIntegration.test.ts Covers admission lifecycle and concurrency.
libraries/rush-daemon/src/test/RushCommandRequestPolicy.test.ts Verifies command classifications.
libraries/rush-daemon-protocol/README.md Documents admission protocol contracts.
libraries/rush-daemon-protocol/src/ControlMessageValidation.ts Validates admission controls.
libraries/rush-daemon-protocol/src/DaemonClientCaps.ts Adds admission capability negotiation.
libraries/rush-daemon-protocol/src/DaemonCommandResult.ts Adds typed admission failure results.
libraries/rush-daemon-protocol/src/DaemonControlKinds.ts Registers queue-position controls.
libraries/rush-daemon-protocol/src/DaemonControlMessage.ts Extends the control-message union.
libraries/rush-daemon-protocol/src/DaemonPhasedRequest.ts Adds admission and command origin fields.
libraries/rush-daemon-protocol/src/DaemonProtocolVersion.ts Advances protocol minor version.
libraries/rush-daemon-protocol/src/DaemonRequestAdmission.ts Defines admission types and validation.
libraries/rush-daemon-protocol/src/DaemonRushCommand.ts Defines parsed command origins.
libraries/rush-daemon-protocol/src/RequestAdmissionControlValidation.ts Validates capability and queue positions.
libraries/rush-daemon-protocol/src/index.ts Exports new protocol APIs.
libraries/rush-daemon-protocol/src/test/ControlFrame.test.ts Tests admission control frames.
libraries/rush-daemon-protocol/src/test/RequestAdmission.test.ts Tests admission option validation.
common/reviews/api/rush-daemon.api.md Updates daemon API report.
common/reviews/api/rush-daemon-protocol.api.md Updates protocol API report.
common/changes/@rushstack/rush-daemon/mojazayeri-request-admission_2026-08-21-22-37.json Records daemon package change.
common/changes/@rushstack/rush-daemon-protocol/mojazayeri-request-admission_2026-08-21-22-37.json Records protocol package change.

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment thread libraries/rush-daemon-protocol/src/DaemonPhasedRequest.ts Outdated
Comment thread libraries/rush-daemon/src/WorkspaceRequestAdmission.ts
@mojaza
Mo Jazayeri (mojaza) marked this pull request as ready for review August 27, 2026 02:01
Base automatically changed from mojazayeri-microsoft-rushd-ws2-interactive-io-upstream-86a to main August 27, 2026 02:05
@mojaza
Mo Jazayeri (mojaza) force-pushed the mojazayeri-microsoft-rushd-ws2-8-request-admission-upstream branch 2 times, most recently from 7159fba to 8183897 Compare August 27, 2026 17:52
mojazayeri and others added 3 commits August 27, 2026 13:44
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
@mojaza
Mo Jazayeri (mojaza) force-pushed the mojazayeri-microsoft-rushd-ws2-8-request-admission-upstream branch from 8183897 to e5155ca Compare August 27, 2026 20:45
@mojaza
Mo Jazayeri (mojaza) merged commit 750d664 into main Aug 27, 2026
10 checks passed
@mojaza
Mo Jazayeri (mojaza) deleted the mojazayeri-microsoft-rushd-ws2-8-request-admission-upstream branch August 27, 2026 23:33
@github-project-automation github-project-automation Bot moved this from Needs triage to Closed in Bug Triage Aug 27, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: Closed

Development

Successfully merging this pull request may close these issues.

4 participants