rushd: WS3/WS4 integration with Reporter prerequisites - #6018
Open
Sean Larkin (TheLarkInn) wants to merge 177 commits into
Open
rushd: WS3/WS4 integration with Reporter prerequisites#6018Sean Larkin (TheLarkInn) wants to merge 177 commits into
Sean Larkin (TheLarkInn) wants to merge 177 commits into
Conversation
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: d6318e80-5da9-4858-a147-817e8692f10e
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: d6318e80-5da9-4858-a147-817e8692f10e
Create the authoritative frontend reporter host before version selection, register global reporter controls, and preserve legacy output unless a non-legacy reporter is explicitly selected. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: d6318e80-5da9-4858-a147-817e8692f10e
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: d6318e80-5da9-4858-a147-817e8692f10e
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: d6318e80-5da9-4858-a147-817e8692f10e
Consume the repository experiment before Rush version selection, keep agent detection out of pre-major defaults, strip frontend-only controls before engine handoff, and preserve legacy verbosity compatibility. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: d6318e80-5da9-4858-a147-817e8692f10e
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: d6318e80-5da9-4858-a147-817e8692f10e
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: d6318e80-5da9-4858-a147-817e8692f10e
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: d6318e80-5da9-4858-a147-817e8692f10e
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: d6318e80-5da9-4858-a147-817e8692f10e
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: d6318e80-5da9-4858-a147-817e8692f10e
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: d6318e80-5da9-4858-a147-817e8692f10e
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: d6318e80-5da9-4858-a147-817e8692f10e
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: d6318e80-5da9-4858-a147-817e8692f10e
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: d6318e80-5da9-4858-a147-817e8692f10e
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: d6318e80-5da9-4858-a147-817e8692f10e
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: d6318e80-5da9-4858-a147-817e8692f10e
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: d6318e80-5da9-4858-a147-817e8692f10e
Make the demo independent of inherited reporter controls, verify exclusive output destinations, and correct log-level, alias-position, and latest-log guidance. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: d6318e80-5da9-4858-a147-817e8692f10e
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: d6318e80-5da9-4858-a147-817e8692f10e
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: d6318e80-5da9-4858-a147-817e8692f10e
Validate non-public diagnostic codes against the registry, bucket unknown categories, and bound retained telemetry dimensions deterministically. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: d6318e80-5da9-4858-a147-817e8692f10e
Stop reporter control scans at the pass-through separator and add an exactly-once frontend close contract across success, failure, and termination paths. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: d6318e80-5da9-4858-a147-817e8692f10e
Keep protocol metadata root-owned, gate mixed-privacy diagnostics, and bound producer attribution with trusted deterministic retention. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: d6318e80-5da9-4858-a147-817e8692f10e
Keep reporter controls out of ts-command-line globals, gate incompatible engines before initialization, and enforce bounded signal and close-error behavior. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: d6318e80-5da9-4858-a147-817e8692f10e
Preserve unsupported custom reporter values until frontend ownership is unambiguous, and narrow emergency legacy stripping to the reporter selection flag. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: d6318e80-5da9-4858-a147-817e8692f10e
Probe reporter ownership without requiring a value, then enforce strict reporter parsing only after frontend ownership is established. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: d6318e80-5da9-4858-a147-817e8692f10e
Derive bounded producer retention priority from parent-session provenance instead of child-controlled package namespaces. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: d6318e80-5da9-4858-a147-817e8692f10e
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: d6318e80-5da9-4858-a147-817e8692f10e
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: d6318e80-5da9-4858-a147-817e8692f10e
Retain unknown ownership during transient sharing denial, join resources before bounded fixture cleanup, and preserve Windows Path casing through native operation environments. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Canonicalize fixture watcher paths before fs.watch, preserve Windows early-stdin exit results, and isolate the version-miss registry through native npm configuration. Join CLI child closure before deleting fixtures and give the real metadata subprocess its scoped integration-test budget. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 4747f826-8c83-495d-80df-3d1168662e10
…ul cancellation Split real CLI graph coverage into independent scenarios without weakening assertions. Drive the real signal handler through a Windows-only IPC harness, retain native POSIX SIGINT delivery, and join spawned client closures before fixture cleanup. Scope the two-generation restart case to 45 seconds based on its measured 33-second native Windows execution. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Use the existing node-plus-relative-script event-hook convention and reuse bounded Windows sharing cleanup only after selected-launcher resource joins. Preserve mutation, exactly-once, failure-evidence, and timeout behavior. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 4747f826-8c83-495d-80df-3d1168662e10
Integrate parent 3f3822c with the scoped mutation-hook and launcher-cleanup fixes. The 30 requested native Windows cases and 17 merged Linux CLI cases pass with source assertions and timeouts unchanged. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 4747f826-8c83-495d-80df-3d1168662e10
Allow 15 seconds only for the wrong-version rejection integration case, whose two real Node processes measured about 4.9 seconds. Preserve every rejection and cleanup assertion and all production startup deadlines. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 4747f826-8c83-495d-80df-3d1168662e10
Separate the real initial native build from the soft-reload assertions after measuring their combined Windows runtime above the default five-second budget. Preserve the default test and setup budgets and every generation-fencing assertion. Track callbacks against their own fixture, close the host, and join pending work before disposal so timed-out continuations cannot overlap the next fixture. Give only cleanup room for the existing host drain bound. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 4747f826-8c83-495d-80df-3d1168662e10
Preserve generation assertions and default execution budgets while separating initial preparation and joining timed-out callbacks before disposal. Classify the test-only change note as none, consistent with the other Windows fixture corrections. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Keep native physical paths for workspace identity and confinement, but retain validated Windows invocation spelling for child cwd, lifecycle paths, registration lookup and pnpm-sync diagnostics. Pin queued aliases to their original physical directory. Do not rewrite output or change the original parity assertions. Base: 4dc29c2. Real win32 Node 26.7.0, new owned NTFS deployment rushx-native-4747-QZoTNB, native dependencies and hash-matched rebuilt bundles: parent baseline 27 passed / 3 failed; final Rushx suites 36/36 with genuine 8.3 TEMP and 36/36 with physical TEMP. Native global-child contract: 27 passed, 1 existing platform skip. Pinned Linux Node 22.23.2 Rush build --to rush-cli-client and affected test --only validation with parallelism 3: rush-lib 939 passed, rush-daemon 331 passed, CLI 136 passed. One unchanged warm-owned DaemonGraphGeneration 5-second timeout in a combined run passed on the original-deadline isolated package rerun. Rush change --verify --no-fetch and rush check passed. Evidence: session files/rushx-alias-native-{before,short-final,physical-final,global-context}.log and rushx-alias-linux-daemon-rerun.log. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 4747f826-8c83-495d-80df-3d1168662e10
Keep physical workspace identity and confinement while preserving validated invocation spelling in native Rushx cwd, lifecycle environment and pnpm synchronization. Retain exact output assertions and reject queued alias retargeting before execution. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Prevent timed-out native CLI work from accessing the next test's repository by capturing per-fixture state and joining entire callbacks before deletion. Stop and join owned graph watches, including late registrations. Separate initial daemon preparation from warm reload and hard-restart assertions; preserve all execution assertions and their budgets. Cover callback isolation, watch cleanup, and propagated failures with regression cases. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Move the remaining cold daemon build into its own bounded setup hook. Preserve the warm reuse, native coexistence, Rushx parity, and exactly-once assertions under their existing 30-second execution budget, and always close the setup status connection. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
25 tasks
Only translate registration lookup when the caller supplies an invocation namespace override. Preserve all existing native snapshots. Capture real native locks in embedded frontend parser tests and release them after execution instead of deleting files with live exclusive handles; production locking is unchanged. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Set core.autocrlf=false only in each generated fixture repository before staging files. Avoid host-global Windows LF-to-CRLF warnings without muting stderr, relaxing CI warnings-as-errors, changing source line endings, or altering user Git settings. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Allow 15 seconds only for the real native build preparation hook after its hosted Windows 24 timeout. Preserve all graph-generation assertions, test-body budgets, resource joins, and production deadlines. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Repeated native Windows setup failures show the real host and Git/build subprocess suite cannot use Jest's five-second unit-test default. Set a scoped 15-second integration budget while retaining all assertions, the explicit cleanup limit, and production deadlines. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Do not recycle the current Rush mutex or its Windows dirty companion while purging common/temp. Keep locking enforced rather than disabling it or deleting a live owner. Add a real configuration/lock regression proving temporary data is purged while ownership survives until release. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Fence global request completion on bounded Linux group quiescence, with deterministic delayed-exit/error tests and unchanged immediate descendant-stop assertions. Join fixture daemon PIDs before bounded Windows deletion, preserve graph fixtures after failed host cleanup, and isolate retention assertions from unrelated Jest-worker RSS. Production warning and memory defaults remain unchanged. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Compute expected value ordering independently from real cold/reused durations, request frequency, and IPC RSS rather than assuming project a always wins under CI load. Preserve real resource eviction and verify telemetry versus LRU retain opposite projects after requested rewarming. Production ranking is unchanged. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Use independent producer timing/RSS expectations in both warm-set fixture surfaces instead of a fixed project order. Give actual version-revalidation subprocesses and full qualification corpus setup explicit 15-second budgets. Preserve production ranking and every qualification/performance threshold. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Write and close the fixture PID in a unique temporary file before renaming it to the observable barrier. Prevent readers from treating the file-creation/write gap as PID zero; retain and strengthen single-owner startup assertions. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
12 tasks
Sean Larkin (TheLarkInn)
marked this pull request as ready for review
September 8, 2026 12:54
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Purpose
Implementation for #5894, focused on WS3 (#5898) and WS4 (#5899), with the Reporter prerequisites from #5858.
Fixes #5898. Fixes #5899.
The existing
rushandrushxdefaults are unchanged. The separaterush-clientandrushx-clientbinaries remain opt-in. This does not perform the Rush 6 cutover or close the full epic.Implemented
build/rebuildexecution and real Rushx package scripts, with immutable request inputs, byte-preserving global streams, stdin credits/EOF, cancellation, queue controls, and fail-closed no-replay behavior.daemon.watch, and live generation/reload/resource status without initializing a cold graph.Reporter dependency stack
This branch preserves all original Reporter branch histories. Their changes remain in this diff until the existing PR stack lands; this integration PR is not a substitute for reviewing that stack.
R9 (#5982), R11 (#5984), and WS5 (#5900) remain subject to their actual review, compatibility, and release/ecosystem gates. No legacy-removal or default-selection gate is bypassed.
The Reporter stack has been restacked onto
main@77abfe24with guarded pushes and preserved backup refs. The scoped follow-up fixes are in #6019. Independent approval and dependency-ordered landing remain separate from this integration PR.This PR is ready for review. Independent approval and the Reporter prerequisite landing order still apply before merge; the opt-in clients do not require the later default-selection cutover.
Windows correction batch
LockFileWindows implementation now uses actual kernel exclusive sharing instead of assuming exclusive creation remains exclusive after opening. A dirty companion preserves interrupted-owner state across close/delete handoffs. This correction applies to all WindowsLockFileconsumers, not only the daemon; no native addon or dependency is added.rush purgeretains its own active repository lock and Windows dirty companion while removing other temporary files. The regression verifies that purging does not delete live ownership or bypass the mutex.Pathvalues. Startup handoff treats sharing-denied ownership reads as unknown, not released, and retries only within the existing deadline. Owned child resources are joined before bounded Windows fixture cleanup.cmd.exeto forward the descriptor. Graph CLI scenarios are separated, Windows cancellation exercises the actual CLI signal handler, and graph reload setup is separated from its assertions. Production startup deadlines and no-replay rules are unchanged.core.autocrlf=falselocally so host-global Windows settings do not produce LF-to-CRLF warnings. User Git settings and CI warnings-as-errors are unchanged. The real native graph suite uses an explicit 15-second integration budget after repeated setup timeouts, without changing assertions, cleanup limits, or production deadlines.ps --sid, never resends signals while waiting, and surfaces inspection/timeout failures.Validation
Hosted acceptance passed on exact head
ba5753a9f146325deccb49e5aea485c6ba5aa3e2, run34217211265.Every job completed the full repository build/test run, package-manager integration, generated README verification, second-checkout update/build/test, and repeated build-cache verification. CodeQL and license/CLA checks also pass on this head.
Coverage includes actual CLI install/update, native coexistence, same-PID reloads, new-PID successors, startup-client death, ownership failures, graph-token races, real warm policies, ordinary CLI status, native Windows mutex/purge behavior, and exact Rushx parity through physical paths and 8.3 aliases.
All blocking Reporter qualification and performance gates remain enforced. Earlier failure logs and diagnostic observations are retained separately; the final green run used committed test budgets and the full workflow, without temporary diagnostic overrides or relaxed quality thresholds.
The opt-in registry integration also exercised a genuine published foreign-engine installation and runtime/protocol attestation. Incompatible installed engines are refused rather than relabeled as supported.
Deliberate safety boundaries
daemon.watchcontrols host project observation, not autonomous script execution or native Rush watch mode.