rushd: WS3/WS4 integration with Reporter prerequisites - #6018
Draft
Sean Larkin (TheLarkInn) wants to merge 175 commits into
Draft
rushd: WS3/WS4 integration with Reporter prerequisites#6018Sean Larkin (TheLarkInn) wants to merge 175 commits into
Sean Larkin (TheLarkInn) wants to merge 175 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
Join helper closure, preserve caller-relative cwd, wait for fixture process exit, and isolate Node-version warnings without changing production output. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Member
Author
|
Pushed the focused CI correction batch in
The combined local Node 22 suites and affected cases on actual Linux Node 24.11.1/26.7.0 pass. Fresh hosted CI is running at the new head; Windows confirmation and the remaining required gates are still pending. The PR remains draft. |
Expand Windows short-name aliases consistently with the async host, including endpoint keys, direct session configuration and selected installations. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Add an explicit IPC process-factory seam that retains native lifecycle environment, stdio and process-tree ownership. Run the fixture Node script directly so cmd.exe does not break its IPC channel. Canonicalize temporary fixture roots, surface complete operation/log diagnostics, register protection before idle admission reopens, and always drain the native contention child. Keep all graph/teardown assertions and existing timeouts; initialize real graphs in fixture setup. Linux targeted tests pass 46/46 and native graph regressions 72/72. Genuine Windows Node 26.7 builds pass and targeted tests pass 45/46; the preserved contention assertion independently exposes the parent-owned Windows LockFile issue allowing two live processes to acquire the same physical lock. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 4747f826-8c83-495d-80df-3d1168662e10
Use an OS-owned Windows pipe mutex instead of assuming wx files stay exclusively held, while retaining POSIX locking and the durable crash reservation. Keep Windows sharing-denied predecessor reads unknown within the existing startup deadline; never convert them to ownership release. Join owned resources before bounded Windows sharing cleanup, preserve failed-disposal evidence, and assert IPC close causally rather than assuming a cross-platform exit-to-close delay. Validate with native win32 Node 26.7.0 and targeted Linux suites without changing parent canonical identity scopes. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 4747f826-8c83-495d-80df-3d1168662e10
Integrate parent e53609a without modifying its session/client/launcher/Core identity implementation. Retain direct real Node IPC fixture launches, canonical fixture paths, complete native diagnostics, deterministic protection registration and awaited test child cleanup. Validate proper native Windows Node 26.7 and Linux builds. Matching selected suites pass 70 tests on Linux and 69 on Windows, with the existing registry opt-in test skipped; the unchanged Windows contention assertion still exposes the independently reproduced Core LockFile issue. Windows quiescence, native path, launcher, watcher, warm generation and graph-reference cases pass; selected CLI tests pass 12/12 on Linux. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 4747f826-8c83-495d-80df-3d1168662e10
Store the physical fixture folder using native realpath before writing configuration, so fixture-derived warm/watch expectations match canonical workspace roots. Add a real-alias regression and validate it with a genuine Windows short-name TEMP alias and NTFS junction. Keep the parent's production canonical-identity implementation and warm IPC scripts untouched. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 4747f826-8c83-495d-80df-3d1168662e10
Use kernel-enforced Windows sharing locks, retain interrupted-owner dirtiness across handoffs, and keep native warm IPC, observation and cleanup assertions intact. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Preserve the parent's canonical session, launcher, client and physical-file comparisons alongside the startup and fixture fixes. Linux selected suites and focused native Windows alias/session/Git/launcher identity cases pass. Native Windows operation execution still exposes an existing Path/PATH casing issue in the engine environment hook; retain its diagnostic evidence without changing the parent-owned engine scope. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 4747f826-8c83-495d-80df-3d1168662e10
Merge the validated native LockFile and warm fixture changes without modifying parent-owned kernel source or tests. Resolve the duplicate alias-fixture test while preserving its real alias and cleanup assertions. Reuse the corrected shared LockFile for Windows startup instead of the separate pipe mutex. After an uncached Core/RushLib rebuild, native exclusion, startup and IPC tests pass. Strict no-retry native mutation cleanup still reproduces EBUSY, so existing bounded fixture sharing handling is retained without adding or increasing retries. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 4747f826-8c83-495d-80df-3d1168662e10
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>
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
Draft integration checkpoint for #5894, focused on WS3 (#5898) and WS4 (#5899), with the Reporter prerequisites from #5858.
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 draft 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.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
Targeted existing builds/tests passed for Rush lib, protocol, transport, client core, daemon, CLI, and wire end-to-end conformance on Node 22.23.2. 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, and ordinary CLI status.
The integrated correction candidate is
3053d87b75. Full affected Linux Rush lib, daemon, and standalone CLI packages pass after rebuilding their dependencies and actual RushLib bundles. The latest full Node 26 runs pass 343 daemon and 143 client cases. Native Windows coverage includes kernel locking, exact Rushx parity with genuine 8.3 TEMP paths, and the corrected lifecycle/cleanup paths.The fixture-lifetime follow-up passed 20 of 21 targeted cases on both Windows runtimes; its sole remaining failure combined initial daemon preparation and warm-reuse assertions in one 30-second test. That preparation is now a separate bounded setup hook. The corrected case passes directly on both Windows runtimes with every original assertion and its existing execution limit. A forced-timeout diagnostic separately confirmed that the old callback and fixture are fully disposed before the following preview-engine fixture starts.
Hosted run
34188386272ona99e83def8exposed two additional Windows-only native entry issues: four existing Rushx snapshots received an extra registration warning, and four frontend fixtures tried to delete a still-held native parser lock. The follow-up preserves the snapshots and real lock acquisition, and passes all 4 Rushx plus 31 frontend tests on both Windows runtimes. The six daemon alias regressions also pass with the corrected native code.Hosted run
34190820540on4ff0bc20b2passed every build/test operation on Windows 26, but failed Rush's strict warning policy on generated-fixture Git warnings. Windows 24 also exposed a five-second native graph setup limit. The follow-up is warning-free with an isolatedcore.autocrlf=trueglobal configuration, and all five native graph cases pass on Windows 24 and 26 under the explicit integration budget.The additional native purge regression reproduced deletion of the active lock before the fix and now passes on Linux and Windows 24/26, preserving both live ownership and normal temporary-file removal.
Run
34195130751completed three Linux configurations successfully. Remaining failures were two Windows fixture-deletion sites and an unchanged Reporter wall-time measurement on Linux 24. The cleanup corrections pass 41 selected daemon cases on Windows 26 and 29 launcher/Rushx boundary cases on Windows 24. The Reporter performance suite passes its unchanged thresholds locally. A prior single descendant-state assertion was retained, not weakened; deterministic delayed-completion tests and a real owned-process probe now verify the Linux completion barrier.Run
34201327379completed five full configurations successfully, including both Windows versions and all package-manager/cache stages. Its only failure assumed that projectamust outrankbusing real timing/RSS data. The final test-only correction independently calculates the expected score order from those producer measurements, verifies real eviction, and contrasts telemetry retention with LRU after requested rewarming. The production ranking formula is unchanged; all 31 warm/ranking tests pass on Linux 26 and the real telemetry case passes on Windows.Full hosted acceptance of this final candidate is pending a fresh six-platform matrix. Earlier failed runs and diagnostic observations are retained, not relabeled as passing.
The frozen bootstrap encoder, all 14 AI qualification gates, expanded live Reporter/Heft demo, change-file verification, dependency consistency, and generated README verification also passed. AI output measured 45.89% of legacy and 48.76% of plaintext against the 50% gates.
The opt-in registry integration exercised a genuine published foreign-engine installation and its runtime/protocol attestation. Incompatible installed engines are refused rather than relabeled as supported. Hosted OS/Node matrix results still need to complete on this PR.
Deliberate safety boundaries
daemon.watchcontrols host project observation, not autonomous script execution or native Rush watch mode.