Skip to content

Add direct Rush reporter demo path - #5997

Merged
Sean Larkin (TheLarkInn) merged 14 commits into
copilot/reporter-r5a-operation-adapterfrom
copilot/reporter-r5b-demo-reporters
Sep 11, 2026
Merged

Sean Larkin (TheLarkInn) merged 14 commits into
copilot/reporter-r5a-operation-adapterfrom
copilot/reporter-r5b-demo-reporters

Conversation

@TheLarkInn

Copy link
Copy Markdown
Member

Part of #5978

Stack

Parent: #5996 (copilot/reporter-r5a-operation-adapter)

This PR is based directly on the R5A operation adapter and intentionally excludes the parallel R6 #5993 bootstrap work. Keep auto-merge disabled while stack ancestors remain open.

Demo path

The direct current-version rush build path now transfers visible operation presentation to the frontend-selected reporters when either an explicit non-legacy --reporter is present or the repository useRushReporter experiment is enabled.

  • the selected primary reporter owns its visible destination;
  • the always-on file reporter owns a complete invocation log under common/temp/rush-logs;
  • the retained StreamCollator writes to a no-op destination, preserving scheduling/writer completion semantics without duplicate terminal output;
  • non-operation Rush terminal messages are converted into semantic reporter messages, while operation summaries come from authoritative operationCompleted events;
  • RUSH_REPORTER=legacy removes reporter controls before launching Rush and returns immediately to the existing legacy path.

The file reporter spools active operation output to owner-only temporary files, then appends each operation as a grouped block in completion order. This preserves stdout/stderr chunk order without unbounded heap buffering.

Reproducible demo

rush build --to @microsoft/rush
node apps/rush/src/test/sandbox/reporter-demo/run.mjs

The script exercises:

node apps/rush/bin/rush build --only @rushstack/rush-reporter
node apps/rush/bin/rush build --only @rushstack/rush-reporter --reporter=plaintext
node apps/rush/bin/rush build --only @rushstack/rush-reporter --reporter=json --log-level=debug
node apps/rush/bin/rush build --only @rushstack/rush-reporter --reporter=ai
RUSH_REPORTER=legacy node apps/rush/bin/rush build --only @rushstack/rush-reporter --reporter=json

Observed result:

  • plaintext reconstructs phase-aware grouped operation output and prints an absolute full-log path;
  • JSON stdout is valid payload-only NDJSON with no blank/control lines;
  • AI emits bounded status/final records, suppresses warning details on failure, and includes the exact full-log path;
  • legacy rollback matches the feature-off transcript after normalizing runtime durations;
  • failed parser/selection paths retain their actionable message and flush through sessionCompleted.

Repository opt-in remains "useRushReporter": true in common/config/rush/experiments.json; removing it or setting RUSH_REPORTER=legacy provides immediate rollback.

Validation

  • rush test --only @rushstack/rush-reporter --only @microsoft/rush-lib --only @microsoft/rush --verbose
    • reporter: 301 tests
    • rush-lib: 770 tests
    • apps/rush: 25 tests
  • rush build --only @rushstack/rush-reporter --only @microsoft/rush-lib --only @microsoft/rush --verbose
  • reporter snapshots/goldens in the targeted suite
  • rush check
  • rush change --verify --no-fetch
  • direct demo matrix above
  • direct failed JSON invocation confirmed final commandResult, commandCompleted, and sessionCompleted, with the actionable error in the full log

Coverage includes success, cache hit, warnings, operation failure, blocked and aborted operations, silent operations, parallel grouping, stdout/stderr ordering, TTY/non-TTY behavior, quiet/verbose/debug controls, watch-cycle completion, and legacy flag-off parity.

Non-goals

@TheLarkInn Sean Larkin (TheLarkInn) left a comment

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

Independent R5B review completed against #5978 and RFC phase 4.

Fixed in e61332b:

  • command-specific --json remains the sole stdout owner; incompatible reporter combinations fail before launch;
  • older repository engines force the legacy path and reporter teardown runs on selector failure;
  • file/plaintext grouping is disk-backed without per-graph descriptor growth or unbounded heap retention; stale spools are retained/cleaned safely;
  • watch errors use the semantic terminal, final artifact completeness precedes machine results, zero-width TTYs fall back to 80 columns, and AI parser failures retain actionable context;
  • the demo now self-checks legacy rollback, plaintext/JSON/AI/file/quiet/failure/help/command-JSON output, one visible writer, chunk ordering, final flush, and owner-only logs.

Validation: build succeeded for @rushstack/rush-reporter, @microsoft/rush-lib, and @microsoft/rush; tests 304/773/28; rush check; rush change --verify --no-fetch; expanded demo and real TTY run passed. No unresolved review threads. Auto-merge remains disabled while #5996 and its ancestors are open.

@TheLarkInn
Sean Larkin (TheLarkInn) force-pushed the copilot/reporter-r5b-demo-reporters branch from e61332b to e30aa36 Compare August 28, 2026 08:40
@TheLarkInn

Copy link
Copy Markdown
Member Author

Final restack correction: #5997 was force-replayed onto the exact current remote #5996 tip ac92280377966dc0da67ec6972ea086219abfebb and pushed with --force-with-lease=refs/heads/copilot/reporter-r5b-demo-reporters:e61332b35ccc0964a1f3f240c4a328975b880c24.

Final #5997 tip: e30aa365e5527213bf91ef64b8f8171e3357cc07 (R5B commits 45e43a810d, e30aa365e5). The old and new parent-to-head binary diffs have the identical SHA-256 84086932b410faa5239a08d091c1bf7a92e874bedd84834abbd76fc7af5c4718; the slice remains exactly 31 files with no R5A conflict-resolution delta. GitHub now reports MERGEABLE/CLEAN and auto-merge remains disabled.

Post-restack validation: reporter 304, rush-lib 773, apps/rush 28; expanded reporter demo; rush check; rush change --verify --no-fetch.

@TheLarkInn

Copy link
Copy Markdown
Member Author

Combined deep review of current head e30aa365e5.

  1. HIGH old-engine forceLegacy silently strips explicit non-legacy reporter controls. Reject unsupported explicit requests instead of changing user intent.
  2. MEDIUM MinimalRushConfiguration.commonTempFolder ignores RUSH_TEMP_FOLDER, so logs and purge target different locations.
  3. MEDIUM legacy verbose configuration discovery output is dropped at the repository root. Restore the original predicate and separator.
  4. MEDIUM artifactAvailable.complete is a live getter, so one event can serialize differently across reporter queues. Snapshot the value.
  5. MEDIUM file spooling opens and closes a file for every output chunk on the main thread. Keep bounded persistent descriptors and close them at operation finalization.

@TheLarkInn
Sean Larkin (TheLarkInn) force-pushed the copilot/reporter-r5b-demo-reporters branch from e30aa36 to 7159901 Compare August 28, 2026 20:08
@TheLarkInn

Copy link
Copy Markdown
Member Author

Review fixes published at 715990145a68fd8e9b03ce4ecc01b9612c062d87 on exact #5996 head 11a7f8462dd40b1d3c0d83ffafc5f0b748a80394.

Fixed: incompatible-engine controls remain explicit and are never silently stripped; RUSH_TEMP_FOLDER uses Rush normalization for logs and purge; legacy discovery text and blank lines are restored; artifact completeness is a frozen boolean emitted after file closure; file and plaintext spools use persistent bounded descriptors with exact cleanup. Also fixed output-control ownership, purge-log survival, action-name sanitization, TTY multiline activity, verbose versus debug filtering, AI fallback counts, and file-only parser failures.

Validation: reporter 314, rush-lib 786, apps/rush 70; all affected builds; direct demo matrix at /tmp/rush-reporter-demo-5RtqS3; TTY, CI, cache, watch coverage; rush check; stacked change verification. PR is CLEAN and auto-merge remains disabled pending fresh review.

@TheLarkInn

Copy link
Copy Markdown
Member Author

Four-review gate on 715990145a confirms the prior fixes. Two actionable findings remain:

  1. HIGH The lock-conflict reason is emitted as informational text before AlreadyReportedError. The default reporter can erase it, leaving only a generic command failure. Preserve the actionable reason as an error or structured diagnostic.
  2. MEDIUM Watch iterations re-register and re-complete the same operation IDs, but default, plaintext, and AI reporters accumulate lifetime totals. Later cycles can report 20/20 for a 10-operation graph. Reset or replace per-cycle counts on re-registration or watch-cycle completion.

Dismissible low follow-on: configuration discovery should use the effective RUSH_PREVIEW_VERSION when deciding legacy output. Auto-merge remains disabled.

@TheLarkInn

Copy link
Copy Markdown
Member Author

Round-two findings fixed at 523124198d221cef9ec72c81dd1cfb26eb67023f.

  • Lock contention now emits the actionable reason at error severity in reporter mode while preserving legacy output without duplication.
  • Default, plaintext, and AI watch totals reset per graph cycle, including repeated IDs, silent operations, failure, and recovery.
  • Discovery now uses the effective RUSH_PREVIEW_VERSION, keeping machine stdout clean when the preview matches the frontend.

Validation: reporter 317, rush-lib 787, apps/rush 71; all affected builds; direct demo /tmp/rush-reporter-demo-2ckBQl; preview /tmp/r5b-r2-preview-2ktFGu; real lock contention /tmp/r5b-r2-lock-TtwdV3; TTY/CI/watch coverage; rush check; stacked change verification. PR is CLEAN and auto-merge remains disabled pending fresh review.

@TheLarkInn

Copy link
Copy Markdown
Member Author

Four-review rerun on 523124198d confirms the prior runtime fixes. One MEDIUM concurrency issue remains: a queued watch iteration can register known operation IDs before the prior watchCycleCompleted event. Reporter state can then mix abort completions and next-cycle completions, producing totals such as 20/10.

Required fix: use an explicit cycle boundary or cycle identity that handles overlapping scheduling. Do not assume re-registration occurs after cycle completion.

One dismissible low follow-on remains: make the AI final record consistently per-cycle or session-cumulative after fail-then-success watch recovery. The repeated command-name concern remains dismissed because no supported failing entry point was reproduced.

@TheLarkInn

Copy link
Copy Markdown
Member Author

Round-three findings fixed at 97f807ed6549387b6aab2eccec197123196b725d.

  • Operation lifecycle events now carry an explicit graph iteration ID, and default, plaintext, AI, and file reporters isolate overlapping generations.
  • Superseded scheduled iterations no longer register before execution, completed lifecycle-only cycles are released, and watch state remains bounded.
  • AI final counts, failed projects, diagnostics, and error totals now use the same recovered cycle scope.
  • Grouped output remains ordered and isolated, active file spools retain the real operation ID, and lock contention renders the actionable reason exactly once.

Validation: reporter 317, rush-lib 788, apps/rush 71; affected builds and daemon dependency chain; full demo /tmp/rush-reporter-demo-Iiphvo; lock contention /tmp/r5b-r3-lock-IxxlNG; preview JSON /tmp/r5b-r3-preview-mYC7Pr; rush check; stacked change verification. #5997 remains on exact #5996 head 11a7f8462dd40b1d3c0d83ffafc5f0b748a80394, with auto-merge disabled pending fresh review.

@TheLarkInn

Copy link
Copy Markdown
Member Author

Final combined review of 97f807ed65 found no critical, high, or medium actionable issue. All lock, watch concurrency, AI recovery scope, preview, temp, artifact, spool, compatibility, and output findings are fixed.

One dismissible low follow-on remains: the exported regroupOperationOutput helper still groups by operation ID without iteration ID for third-party watch reporters. The daemon completion concern was dismissed because the current multiplexer forwards completion, and the repeated command-name concern remains unreproduced. This head is low-only.

Sean Larkin (TheLarkInn) added a commit that referenced this pull request Sep 9, 2026
Address #5997 review 5154313870: display bounded errors immediately, summarize warnings once per cycle, and handle short and zero-progress writes with truthful artifact completeness.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: 4747f826-8c83-495d-80df-3d1168662e10
Preserve the published diagnostics, UTF-8 writes, spooling, privacy, preview selection and operation-cycle fixes while reconciling native parser, watcher, and graph members.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 4747f826-8c83-495d-80df-3d1168662e10

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.

Copilot review overview

🟡 Changes recommended

Watch-cycle completion, artifact finalization, and legacy help/discovery parity have unresolved correctness issues.

Once you've addressed the issues Copilot identified, you can request another Copilot review.

Review tier: Balanced
Findings: 3 Medium severity

New issues introduced by this change (3)
Severity Finding
Medium severity apps/​rush/​src/​MinimalRushConfiguration.ts — For legacy/feature-off invocations, discovery output is now printed only after…
Medium severity apps/​rush/​src/​RushReporterHost.ts — When help forces the legacy path, only --reporter is stripped. Reporter-owned…
Medium severity apps/​rush/​src/​RushReporterHost.ts — The full-detail reporter is closed before publishIfChanged() enqueues the final complete: true
What changed in this PR

Adds the opt-in direct Rush reporter path, transferring presentation ownership from legacy collation to frontend-selected reporters while retaining complete file logging and rollback support.

Changes:

  • Adds iteration-aware operation and watch reporting.
  • Implements reporter-owned terminal output, diagnostics, redaction, and log finalization.
  • Adds direct demo coverage and legacy compatibility checks.
File Description
libraries/​rush-lib/​src/​pluginFramework/​RushSession.ts Adds reporter state and flushing helpers.
libraries/​rush-lib/​src/​logic/​ProjectWatcher.ts Makes in-place watch rendering optional.
libraries/​rush-lib/​src/​logic/​operations/​test/​OperationGraphEventSink.test.ts Expands iteration and outcome coverage.
libraries/​rush-lib/​src/​logic/​operations/​ReporterOperationEventSink.ts Adapts iteration-aware operation events.
libraries/​rush-lib/​src/​logic/​operations/​OperationGraph.ts Assigns iteration IDs and delays registration.
libraries/​rush-lib/​src/​logic/​operations/​OperationExecutionRecord.ts Propagates iteration identity through streams.
libraries/​rush-lib/​src/​logic/​operations/​OperationEventSink.ts Extends sink callbacks with iteration IDs.
libraries/​rush-lib/​src/​logic/​operations/​IOperationExecutionResult.ts Exposes owning iteration identity.
libraries/​rush-lib/​src/​cli/​test/​RushCommandLineParserReporterLifecycle.test.ts Tests initialization failure flushing.
libraries/​rush-lib/​src/​cli/​test/​RushCommandLineParser.test.ts Tests sole-writer and lock errors.
libraries/​rush-lib/​src/​cli/​scriptActions/​PhasedScriptAction.ts Routes presentation through reporters.
libraries/​rush-lib/​src/​cli/​RushCommandLineParser.ts Bridges terminal and failure output.
libraries/​rush-lib/​src/​cli/​actions/​BaseRushAction.ts Reports lock contention semantically.
libraries/​rush-lib/​src/​api/​Rush.ts Suppresses the legacy startup banner.
libraries/​rush-lib/​src/​api/​EnvironmentConfiguration.ts Adds early temp-folder resolution.
libraries/​rush-daemon/​src/​test/​PhasedRequestEventMultiplexer.test.ts Updates multiplexer coverage.
libraries/​rush-daemon/​src/​PhasedRequestEventMultiplexer.ts Forwards iteration identity.
libraries/​reporter/​src/​utilities/​writeAllSync.ts Adds complete synchronous writes.
libraries/​reporter/​src/​test/​WriteAllSync.test.ts Tests short writes and failures.
libraries/​reporter/​src/​test/​PlaintextReporter.test.ts Expands grouping and privacy coverage.
libraries/​reporter/​src/​test/​OperationStreamEmitter.test.ts Tests iteration propagation.
libraries/​reporter/​src/​test/​Manager.test.ts Tests confirmed flush timeouts.
libraries/​reporter/​src/​test/​LogLevelFilter.test.ts Tests message log-level overrides.
libraries/​reporter/​src/​test/​JsonAiReporter.test.ts Expands redaction and AI results.
libraries/​reporter/​src/​test/​HumanReadableDiagnostic.test.ts Tests safe diagnostic formatting.
libraries/​reporter/​src/​test/​DefaultInteractiveReporter.test.ts Expands watch and diagnostic coverage.
libraries/​reporter/​src/​session/​ScopedReporterFactory.ts Emits message log-level metadata.
libraries/​reporter/​src/​scheduler/​OperationStreamEmitter.ts Adds iteration IDs to operation events.
libraries/​reporter/​src/​scheduler/​OperationOutputGrouping.ts Exposes output iteration identity.
libraries/​reporter/​src/​reporters/​ReporterRedaction.ts Strengthens event redaction.
libraries/​reporter/​src/​reporters/​LegacyReporter.ts Recognizes aborted operations.
libraries/​reporter/​src/​reporters/​JsonReporter.ts Redacts machine-readable messages.
libraries/​reporter/​src/​reporters/​HumanReadableDiagnostic.ts Adds privacy-aware formatting.
libraries/​reporter/​src/​reporters/​DefaultInteractiveReporter.ts Adds bounded iteration-aware presentation.
libraries/​reporter/​src/​reporters/​AiReporter.ts Adds watch-aware final records.
libraries/​reporter/​src/​producers/​IScopedReporter.ts Adds minimum message log levels.
libraries/​reporter/​src/​manager/​ReporterManager.ts Adds confirmed flush support.
libraries/​reporter/​src/​lifecycle/​LifecycleEvents.ts Extends lifecycle payloads with iterations.
libraries/​reporter/​src/​events/​IMessageEmittedPayload.ts Adds log-level metadata.
libraries/​reporter/​src/​diagnostics/​IRushDiagnostic.ts Associates diagnostics with iterations.
libraries/​reporter/​src/​config/​LogLevelFilter.ts Honors per-message minimum levels.
common/​reviews/​api/​rush-reporter.api.md Updates reporter API baselines.
common/​reviews/​api/​rush-lib.api.md Updates Rush library API baselines.
common/​changes/​@rushstack/​rush-reporter/​reporter-watch-and-short-writes_2026-09-09.json Records watch and write fixes.
common/​changes/​@rushstack/​rush-reporter/​reporter-secret-source-aliases_2026-09-09.json Records privacy fixes.
common/​changes/​@rushstack/​rush-reporter/​reporter-heft-diagnostics_2026-09-09.json Records diagnostic rendering changes.
common/​changes/​@rushstack/​rush-reporter/​copilot-reporter-r5b-demo-reporters_2026-08-28-07-10.json Records reporter presentation support.
common/​changes/​@microsoft/​rush/​copilot-reporter-r5b-demo-reporters_2026-08-28-07-10.json Records Rush integration support.
apps/​rush/​src/​test/​sandbox/​reporter-demo/​run.mjs Adds the self-checking demo matrix.
apps/​rush/​src/​test/​sandbox/​reporter-demo/​README.md Documents direct reporter usage.
apps/​rush/​src/​test/​RushReporterHost.test.ts Expands host selection and artifact tests.
apps/​rush/​src/​test/​RushFrontend.test.ts Tests frontend log placement.
apps/​rush/​src/​test/​MinimalRushConfiguration.test.ts Tests discovery and temp overrides.
apps/​rush/​src/​start.ts Centralizes preview-version lookup.
apps/​rush/​src/​RushReporterHost.ts Creates and finalizes frontend reporters.
apps/​rush/​src/​RushPreviewVersion.ts Adds preview-version resolution.
apps/​rush/​src/​RushFrontend.ts Connects host lifecycle to Rush.
apps/​rush/​src/​MinimalRushConfiguration.ts Adds early reporter-aware configuration.
Suppressed comments (1)

libraries/rush-lib/src/logic/operations/OperationGraph.ts:738

  • The all-silent branch now registers and finalizes its records, then returns without executing #executeInnerAsync. Consequently afterExecuteIterationAsync never runs, so an opted-in watch whose operations are all silent emits operation completions but no watchCycleCompleted; reporters cannot summarize or close that cycle. Emit an equivalent watch boundary for this short-circuit, or route it through the normal after-iteration hook path.

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

Comment thread apps/rush/src/MinimalRushConfiguration.ts
Comment thread apps/rush/src/RushReporterHost.ts Outdated
Comment thread apps/rush/src/RushReporterHost.ts
Address #5997 comment 3981283816 without emitting legacy discovery into explicitly owned reporter output.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 4747f826-8c83-495d-80df-3d1168662e10
Address #5997 comment 3981283879 with selective help ownership, preserving custom values, rollback, and following flags. Exercise the real legacy help parser.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 4747f826-8c83-495d-80df-3d1168662e10
Document and guard the deliberately post-close completeness notification raised by #5997 comment 3981283923. Preserve production ordering and prove fsync/close failures never announce a complete artifact.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 4747f826-8c83-495d-80df-3d1168662e10
Keep R5B terminal ownership and its registration/lifetime helpers. Adapt inherited unscoped-output assertions to expect native operation presentation without resurrecting the R5A deferral wrapper. Preserve native initialization and iteration regressions plus post-close artifact completeness.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 4747f826-8c83-495d-80df-3d1168662e10
Reproduce repository-opted-in custom/global and action help through the real frontend/parser. Use command definitions before interpreting reporter-shaped values, preserve mixed and unknown namespaces, and retain malformed configuration discovery guards.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 4747f826-8c83-495d-80df-3d1168662e10
Retain R5B command-JSON stdout ownership, environment sanitization, quiet handling, and artifact lifetime while replacing ordinary value-shape inference with foundation command ownership. Preserve the shared separated-value guard and optional flag list. Apply primary file levels through the existing wrapper without filtering automatic full-detail logs; retain both regression families.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 4747f826-8c83-495d-80df-3d1168662e10
Preserve the final owning help commit and reuse foundation command ownership rather than duplicate metadata loading. Carry frontend-owned standalone flags through help while retaining custom/action verbose aliases. Align frontend and native parser fixture lookup, preserving unknown/plugin conservatism and all close-before-complete contracts.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 4747f826-8c83-495d-80df-3d1168662e10
Remove only the propagation-added primary FileReporter filter: R5B's automatic full-detail log remains unfiltered at every selected level. Assert selected normal/debug independently from retained debug content. Distinguish no-action help from unknown-command ownership and cover both real root-help paths without changing owning refs.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 4747f826-8c83-495d-80df-3d1168662e10
Sean Larkin (TheLarkInn) added a commit that referenced this pull request Sep 10, 2026
Address #5997 comment 3981283816 without emitting legacy discovery into explicitly owned reporter output.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 4747f826-8c83-495d-80df-3d1168662e10
Sean Larkin (TheLarkInn) added a commit that referenced this pull request Sep 10, 2026
Document and guard the deliberately post-close completeness notification raised by #5997 comment 3981283923. Preserve production ordering and prove fsync/close failures never announce a complete artifact.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 4747f826-8c83-495d-80df-3d1168662e10
Sean Larkin (TheLarkInn) added a commit that referenced this pull request Sep 10, 2026
Address #5997 comment 3981283879 with selective help ownership, preserving custom values, rollback, and following flags. Exercise the real legacy help parser.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 4747f826-8c83-495d-80df-3d1168662e10
Retain the exact reviewed R5B slice, including unfiltered canonical full-detail logs and declaration-aware help.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 4747f826-8c83-495d-80df-3d1168662e10
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 4747f826-8c83-495d-80df-3d1168662e10
Preserve the existing slice and current parent histories; only capture successful fixture setup diagnostics, without changing production behavior, warning policy, or watch assertions.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 4747f826-8c83-495d-80df-3d1168662e10
Preserve the existing slice and parent histories while carrying the validated test-helper correction.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 4747f826-8c83-495d-80df-3d1168662e10
The newly landed parent tree is byte-identical to the already integrated parent. Preserve the entire reviewed slice tree and both parent histories while correcting ancestry after the protected stack-prefix squash landing. For R3C, exclude the 300 lines of duplicated old graph tests introduced by automatic merge; the final source, test, dependency and API trees are exactly unchanged.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 4747f826-8c83-495d-80df-3d1168662e10
@TheLarkInn
Sean Larkin (TheLarkInn) merged commit f443bb5 into main Sep 11, 2026
16 checks passed
@github-project-automation github-project-automation Bot moved this from Needs triage to Closed in Bug Triage Sep 11, 2026
Sean Larkin (TheLarkInn) added a commit that referenced this pull request Sep 11, 2026
Land the four remaining reviewed Reporter core slices (#5992, #5996, #5997, #5998) together after exact-head approval, zero unresolved discussions, and all six current CI runs with 36 complete platform workflows were verified. Preserve opt-in behavior and existing quality gates.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 4747f826-8c83-495d-80df-3d1168662e10
Sean Larkin (TheLarkInn) added a commit that referenced this pull request Sep 12, 2026
* Add Rush reporter repository configuration

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: d6318e80-5da9-4858-a147-817e8692f10e

* Add Rush reporter frontend controls

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

* Fix reporter frontend integration

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

* Emit shadow Rush lifecycle events

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: d6318e80-5da9-4858-a147-817e8692f10e

* Add feature-flagged operation event adapter

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: d6318e80-5da9-4858-a147-817e8692f10e

* Fix operation reporter stream edge cases

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: d6318e80-5da9-4858-a147-817e8692f10e

* Harden reporter demo integration

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: d6318e80-5da9-4858-a147-817e8692f10e

* Harden Heft negotiation fallback

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: d6318e80-5da9-4858-a147-817e8692f10e

* Fix structured Heft output archival

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: d6318e80-5da9-4858-a147-817e8692f10e

* Fix reporter frontend argument and close lifecycle

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

* Preserve Rush CLI reporter compatibility

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

* Refine reporter flag ownership

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

* Tolerate value-less custom reporter flags

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

* Fix operation stream review findings

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: d6318e80-5da9-4858-a147-817e8692f10e

* Fix reporter demo review findings

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: d6318e80-5da9-4858-a147-817e8692f10e

* Fix reporter watch and lock handling

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: d6318e80-5da9-4858-a147-817e8692f10e

* Fix overlapping reporter watch cycles

Track explicit operation graph iteration identities across lifecycle events and isolate reporter totals, diagnostics, and output spools by watch cycle.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: d6318e80-5da9-4858-a147-817e8692f10e

* Fix Heft child reporter review findings

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: d6318e80-5da9-4858-a147-817e8692f10e

* Fix acknowledgement close test race

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: d6318e80-5da9-4858-a147-817e8692f10e

* Preserve fallback on acknowledgement failure

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: d6318e80-5da9-4858-a147-817e8692f10e

* Archive structured Heft diagnostics

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: d6318e80-5da9-4858-a147-817e8692f10e

* Harden Heft child trust boundary

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: d6318e80-5da9-4858-a147-817e8692f10e

* Stop execution after parser initialization failure

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: d6318e80-5da9-4858-a147-817e8692f10e

* Isolate overlapping reporter watch cycles

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: d6318e80-5da9-4858-a147-817e8692f10e

* Preserve reporter cycles across stream callbacks

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: d6318e80-5da9-4858-a147-817e8692f10e

* Redact secret human reporter messages

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: d6318e80-5da9-4858-a147-817e8692f10e

* Force nonzero parser failure exits

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: d6318e80-5da9-4858-a147-817e8692f10e

* Expose scoped RushSession reporter producers

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: d6318e80-5da9-4858-a147-817e8692f10e

* Emit registrations for collapsed iterations

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: d6318e80-5da9-4858-a147-817e8692f10e

* Keep operation sink callbacks compatible

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: d6318e80-5da9-4858-a147-817e8692f10e

* Keep operation stream callbacks compatible

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: d6318e80-5da9-4858-a147-817e8692f10e

* Align reporter completion with failure exit

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: d6318e80-5da9-4858-a147-817e8692f10e

* Complete shadow reporter parity coverage

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: d6318e80-5da9-4858-a147-817e8692f10e

* Forward daemon operation completion events

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: d6318e80-5da9-4858-a147-817e8692f10e

* Finalize machine privacy and zero-work cycles

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: d6318e80-5da9-4858-a147-817e8692f10e

* Complete collapsed daemon operation cycles

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: d6318e80-5da9-4858-a147-817e8692f10e

* Add direct Rush reporter demo path

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: d6318e80-5da9-4858-a147-817e8692f10e

* Preserve iteration callback compatibility

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: d6318e80-5da9-4858-a147-817e8692f10e

* Protect secret logs and callback compatibility

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: d6318e80-5da9-4858-a147-817e8692f10e

* Integrate negotiated Heft child reporting

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: d6318e80-5da9-4858-a147-817e8692f10e

* Use resolved iteration for matcher cleanup

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: d6318e80-5da9-4858-a147-817e8692f10e

* Isolate reporter configuration test fixtures from shared cleanup

Follow up #5987 without changing configuration behavior; concurrent flag-file tests empty api/test/temp.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 4747f826-8c83-495d-80df-3d1168662e10

* Fix Heft reporter pipe detection on Windows

Follow up #6000 and Reporter CI: Node reports S_IFIFO mode for inherited Windows pipes while Stats.isFIFO() returns false. Keep descriptor validation strict, add a mode-predicate regression, and require negative context tests to reach the acknowledgement handshake.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 4747f826-8c83-495d-80df-3d1168662e10

* Add Rush reporter frontend controls

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

* Fix reporter frontend integration

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

* Fix reporter frontend argument and close lifecycle

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

* Preserve Rush CLI reporter compatibility

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

* Refine reporter flag ownership

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

* Tolerate value-less custom reporter flags

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

* Stop execution after parser initialization failure

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: d6318e80-5da9-4858-a147-817e8692f10e

* Expose scoped RushSession reporter producers

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: d6318e80-5da9-4858-a147-817e8692f10e

* Emit shadow Rush lifecycle events

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: d6318e80-5da9-4858-a147-817e8692f10e

* Isolate overlapping reporter watch cycles

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: d6318e80-5da9-4858-a147-817e8692f10e

* Keep operation sink callbacks compatible

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: d6318e80-5da9-4858-a147-817e8692f10e

* Align reporter completion with failure exit

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: d6318e80-5da9-4858-a147-817e8692f10e

* Complete shadow reporter parity coverage

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: d6318e80-5da9-4858-a147-817e8692f10e

* Add feature-flagged operation event adapter

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: d6318e80-5da9-4858-a147-817e8692f10e

* Fix operation reporter stream edge cases

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: d6318e80-5da9-4858-a147-817e8692f10e

* Fix operation stream review findings

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: d6318e80-5da9-4858-a147-817e8692f10e

* Preserve reporter cycles across stream callbacks

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: d6318e80-5da9-4858-a147-817e8692f10e

* Emit registrations for collapsed iterations

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: d6318e80-5da9-4858-a147-817e8692f10e

* Keep operation stream callbacks compatible

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: d6318e80-5da9-4858-a147-817e8692f10e

* Forward daemon operation completion events

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: d6318e80-5da9-4858-a147-817e8692f10e

* Complete collapsed daemon operation cycles

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: d6318e80-5da9-4858-a147-817e8692f10e

* Add direct Rush reporter demo path

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: d6318e80-5da9-4858-a147-817e8692f10e

* Harden reporter demo integration

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: d6318e80-5da9-4858-a147-817e8692f10e

* Force nonzero parser failure exits

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: d6318e80-5da9-4858-a147-817e8692f10e

* Fix reporter demo review findings

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: d6318e80-5da9-4858-a147-817e8692f10e

* Fix reporter watch and lock handling

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: d6318e80-5da9-4858-a147-817e8692f10e

* Fix overlapping reporter watch cycles

Track explicit operation graph iteration identities across lifecycle events and isolate reporter totals, diagnostics, and output spools by watch cycle.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: d6318e80-5da9-4858-a147-817e8692f10e

* Redact secret human reporter messages

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: d6318e80-5da9-4858-a147-817e8692f10e

* Finalize machine privacy and zero-work cycles

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: d6318e80-5da9-4858-a147-817e8692f10e

* Preserve iteration callback compatibility

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: d6318e80-5da9-4858-a147-817e8692f10e

* Protect secret logs and callback compatibility

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: d6318e80-5da9-4858-a147-817e8692f10e

* Add the missing reporter change note for R2B JSON controls

The newly rerun CI for #5989 exposed the existing reporter-package change without its release note. Describe the already-implemented pass-through separator behavior; no runtime code or gate changes.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 4747f826-8c83-495d-80df-3d1168662e10

* Expose scoped RushSession reporter producers

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: d6318e80-5da9-4858-a147-817e8692f10e

* Emit shadow Rush lifecycle events

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: d6318e80-5da9-4858-a147-817e8692f10e

* Isolate overlapping reporter watch cycles

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: d6318e80-5da9-4858-a147-817e8692f10e

* Keep operation sink callbacks compatible

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: d6318e80-5da9-4858-a147-817e8692f10e

* Align reporter completion with failure exit

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: d6318e80-5da9-4858-a147-817e8692f10e

* Complete shadow reporter parity coverage

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: d6318e80-5da9-4858-a147-817e8692f10e

* Add feature-flagged operation event adapter

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: d6318e80-5da9-4858-a147-817e8692f10e

* Fix operation reporter stream edge cases

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: d6318e80-5da9-4858-a147-817e8692f10e

* Fix operation stream review findings

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: d6318e80-5da9-4858-a147-817e8692f10e

* Preserve reporter cycles across stream callbacks

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: d6318e80-5da9-4858-a147-817e8692f10e

* Emit registrations for collapsed iterations

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: d6318e80-5da9-4858-a147-817e8692f10e

* Keep operation stream callbacks compatible

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: d6318e80-5da9-4858-a147-817e8692f10e

* Forward daemon operation completion events

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: d6318e80-5da9-4858-a147-817e8692f10e

* Complete collapsed daemon operation cycles

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: d6318e80-5da9-4858-a147-817e8692f10e

* Add direct Rush reporter demo path

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: d6318e80-5da9-4858-a147-817e8692f10e

* Harden reporter demo integration

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: d6318e80-5da9-4858-a147-817e8692f10e

* Fix reporter demo review findings

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: d6318e80-5da9-4858-a147-817e8692f10e

* Fix reporter watch and lock handling

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: d6318e80-5da9-4858-a147-817e8692f10e

* Fix overlapping reporter watch cycles

Track explicit operation graph iteration identities across lifecycle events and isolate reporter totals, diagnostics, and output spools by watch cycle.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: d6318e80-5da9-4858-a147-817e8692f10e

* Redact secret human reporter messages

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: d6318e80-5da9-4858-a147-817e8692f10e

* Finalize machine privacy and zero-work cycles

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: d6318e80-5da9-4858-a147-817e8692f10e

* Preserve iteration callback compatibility

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: d6318e80-5da9-4858-a147-817e8692f10e

* Protect secret logs and callback compatibility

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: d6318e80-5da9-4858-a147-817e8692f10e

* Add Rush reporter repository configuration

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: d6318e80-5da9-4858-a147-817e8692f10e

* Isolate reporter configuration test fixtures from shared cleanup

Follow up #5987 without changing configuration behavior; concurrent flag-file tests empty api/test/temp.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 4747f826-8c83-495d-80df-3d1168662e10

* Add Rush reporter frontend controls

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

* Fix reporter frontend integration

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

* Fix reporter frontend argument and close lifecycle

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

* Preserve Rush CLI reporter compatibility

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

* Refine reporter flag ownership

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

* Tolerate value-less custom reporter flags

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

* Stop execution after parser initialization failure

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: d6318e80-5da9-4858-a147-817e8692f10e

* Force nonzero parser failure exits

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: d6318e80-5da9-4858-a147-817e8692f10e

* Add the missing reporter change note for R2B JSON controls

The newly rerun CI for #5989 exposed the existing reporter-package change without its release note. Describe the already-implemented pass-through separator behavior; no runtime code or gate changes.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 4747f826-8c83-495d-80df-3d1168662e10

* Expose scoped RushSession reporter producers

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: d6318e80-5da9-4858-a147-817e8692f10e

* Emit shadow Rush lifecycle events

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: d6318e80-5da9-4858-a147-817e8692f10e

* Isolate overlapping reporter watch cycles

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: d6318e80-5da9-4858-a147-817e8692f10e

* Keep operation sink callbacks compatible

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: d6318e80-5da9-4858-a147-817e8692f10e

* Align reporter completion with failure exit

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: d6318e80-5da9-4858-a147-817e8692f10e

* Complete shadow reporter parity coverage

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: d6318e80-5da9-4858-a147-817e8692f10e

* Add feature-flagged operation event adapter

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: d6318e80-5da9-4858-a147-817e8692f10e

* Fix operation reporter stream edge cases

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: d6318e80-5da9-4858-a147-817e8692f10e

* Fix operation stream review findings

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: d6318e80-5da9-4858-a147-817e8692f10e

* Preserve reporter cycles across stream callbacks

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: d6318e80-5da9-4858-a147-817e8692f10e

* Emit registrations for collapsed iterations

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: d6318e80-5da9-4858-a147-817e8692f10e

* Keep operation stream callbacks compatible

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: d6318e80-5da9-4858-a147-817e8692f10e

* Forward daemon operation completion events

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: d6318e80-5da9-4858-a147-817e8692f10e

* Complete collapsed daemon operation cycles

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: d6318e80-5da9-4858-a147-817e8692f10e

* Record Reporter operation forwarding release note

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 4747f826-8c83-495d-80df-3d1168662e10

* Add direct Rush reporter demo path

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: d6318e80-5da9-4858-a147-817e8692f10e

* Harden reporter demo integration

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: d6318e80-5da9-4858-a147-817e8692f10e

* Fix reporter demo review findings

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: d6318e80-5da9-4858-a147-817e8692f10e

* Fix reporter watch and lock handling

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: d6318e80-5da9-4858-a147-817e8692f10e

* Fix overlapping reporter watch cycles

Track explicit operation graph iteration identities across lifecycle events and isolate reporter totals, diagnostics, and output spools by watch cycle.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: d6318e80-5da9-4858-a147-817e8692f10e

* Redact secret human reporter messages

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: d6318e80-5da9-4858-a147-817e8692f10e

* Finalize machine privacy and zero-work cycles

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: d6318e80-5da9-4858-a147-817e8692f10e

* Preserve iteration callback compatibility

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: d6318e80-5da9-4858-a147-817e8692f10e

* Protect secret logs and callback compatibility

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: d6318e80-5da9-4858-a147-817e8692f10e

* Fix reporter rollback and reserved stream destinations

Apply emergency legacy selection before strict reporter validation, preserve custom command controls, and honor canonical stdout/stderr destinations without treating them as paths.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 4747f826-8c83-495d-80df-3d1168662e10

* Expose scoped RushSession reporter producers

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: d6318e80-5da9-4858-a147-817e8692f10e

* Emit shadow Rush lifecycle events

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: d6318e80-5da9-4858-a147-817e8692f10e

* Isolate overlapping reporter watch cycles

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: d6318e80-5da9-4858-a147-817e8692f10e

* Keep operation sink callbacks compatible

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: d6318e80-5da9-4858-a147-817e8692f10e

* Align reporter completion with failure exit

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: d6318e80-5da9-4858-a147-817e8692f10e

* Preserve reporter lifecycle across initialization and finalization failures

Create the root reporting context before repository setup, share correlated failure emission, and publish final completion only after telemetry hooks settle without changing native error handling.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 4747f826-8c83-495d-80df-3d1168662e10

* Complete shadow reporter parity coverage

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: d6318e80-5da9-4858-a147-817e8692f10e

* Add feature-flagged operation event adapter

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: d6318e80-5da9-4858-a147-817e8692f10e

* Fix operation reporter stream edge cases

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: d6318e80-5da9-4858-a147-817e8692f10e

* Fix operation stream review findings

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: d6318e80-5da9-4858-a147-817e8692f10e

* Preserve reporter cycles across stream callbacks

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: d6318e80-5da9-4858-a147-817e8692f10e

* Emit registrations for collapsed iterations

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: d6318e80-5da9-4858-a147-817e8692f10e

* Keep operation stream callbacks compatible

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: d6318e80-5da9-4858-a147-817e8692f10e

* Forward daemon operation completion events

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: d6318e80-5da9-4858-a147-817e8692f10e

* Complete collapsed daemon operation cycles

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: d6318e80-5da9-4858-a147-817e8692f10e

* Record Reporter operation forwarding release note

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 4747f826-8c83-495d-80df-3d1168662e10

* Add direct Rush reporter demo path

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 4747f826-8c83-495d-80df-3d1168662e10

* Harden reporter demo integration

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: d6318e80-5da9-4858-a147-817e8692f10e

* Fix reporter demo review findings

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 4747f826-8c83-495d-80df-3d1168662e10

* Fix reporter watch and lock handling

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: d6318e80-5da9-4858-a147-817e8692f10e

* Fix overlapping reporter watch cycles

Track explicit operation graph iteration identities across lifecycle events and isolate reporter totals, diagnostics, and output spools by watch cycle.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: d6318e80-5da9-4858-a147-817e8692f10e

* Redact secret human reporter messages

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: d6318e80-5da9-4858-a147-817e8692f10e

* Finalize machine privacy and zero-work cycles

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: d6318e80-5da9-4858-a147-817e8692f10e

* Preserve iteration callback compatibility

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: d6318e80-5da9-4858-a147-817e8692f10e

* Protect secret logs and callback compatibility

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: d6318e80-5da9-4858-a147-817e8692f10e

* Adapt foundation regression coverage to restacked R5B

Preserve R5B emergency sanitization, file-primary stderr ownership, and typed-sink flush behavior while retaining the four foundation regression cases.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 4747f826-8c83-495d-80df-3d1168662e10

* Lift shared human diagnostic formatting onto the R5B slice

Reporter-only subset of 1198341 for the posted presentation fixes. No Heft transport, demo, timers, output-observation guard, or manager drain changes are included.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 4747f826-8c83-495d-80df-3d1168662e10

* Adapt bounded diagnostics and reliable writes to the owning R5B slice

Adapt a4cb979 onto staged R5B 06bc7c5 after the shared-only human formatter lift. Preserve original host/parser changes and exclude downstream timers, wasRendered filtering, protected drain, R7 transport and initializer disposal.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 4747f826-8c83-495d-80df-3d1168662e10

* Adapt R7 transport and demo fixes to the owning PR

Replay only the remaining R7 subset of 1198341 after corrected R5B. Preserve Windows fallback/pipe behavior and add explicit local-version/baseEnv setup to the actual old driver. The real driver and descriptor/readability regressions pass without copying integrated files.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 4747f826-8c83-495d-80df-3d1168662e10

* Redact secret aliases from human diagnostic context

Prevent explicitly secret parameter values from reappearing through source labels, source paths or lower-classified template parameters. Preserve the original diagnostic and public context. The unchanged combined R8 corpus now passes all gates without AI, fixture or threshold changes.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 4747f826-8c83-495d-80df-3d1168662e10

* Add Rush reporter repository configuration

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: d6318e80-5da9-4858-a147-817e8692f10e

* Isolate reporter configuration test fixtures from shared cleanup

Follow up #5987 without changing configuration behavior; concurrent flag-file tests empty api/test/temp.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 4747f826-8c83-495d-80df-3d1168662e10

* Refresh R2B reporter controls onto native-private trunk

Preserve the exact published R2B slice and review corrections while reconciling native private members and replacing unbranded parser test objects with real execution paths.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 4747f826-8c83-495d-80df-3d1168662e10

* Refresh R3A scoped producers onto native-private trunk

Retain the exact scoped producer API and WeakMap-backed plugin facades while preserving native-private parser/plugin members and real launch-boundary coverage.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 4747f826-8c83-495d-80df-3d1168662e10

* Refresh R3B shadow lifecycle onto native-private trunk

Preserve published early-failure, late-telemetry and operation-callback corrections; reconcile native lifecycle fields and telemetry references, with real branded parser regression coverage.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 4747f826-8c83-495d-80df-3d1168662e10

* Refresh R3C parity coverage onto native-private trunk

Retain the published cancellation, identity, output and shadow parity slice on the reconciled R3B parent.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 4747f826-8c83-495d-80df-3d1168662e10

* Refresh R5A operation reporting onto native-private trunk

Preserve operation stream/callback corrections and the owning forwarding consumer; reconcile native record/graph fields without changing scheduling or public contracts.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 4747f826-8c83-495d-80df-3d1168662e10

* Refresh corrected R5B reporters onto native-private trunk

Preserve the published diagnostics, UTF-8 writes, spooling, privacy, preview selection and operation-cycle fixes while reconciling native parser, watcher, and graph members.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 4747f826-8c83-495d-80df-3d1168662e10

* Clarify the frontend reporter channel identity contract

Document both the typed event sink and the frontend-assigned sessionId in the cross-version handoff without changing its shape.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 4747f826-8c83-495d-80df-3d1168662e10

* Preserve rollback flags and primary file detail defaults

Share separated-value recognition with stripping so valueless controls cannot consume legacy flags, and use debug only as the unrequested primary file log-level default.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 4747f826-8c83-495d-80df-3d1168662e10

* fix(rush): preserve discovery after malformed configuration

Address #5997 comment 3981283816 without emitting legacy discovery into explicitly owned reporter output.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 4747f826-8c83-495d-80df-3d1168662e10

* fix(rush): strip owned reporter controls from help

Address #5997 comment 3981283879 with selective help ownership, preserving custom values, rollback, and following flags. Exercise the real legacy help parser.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 4747f826-8c83-495d-80df-3d1168662e10

* test(reporter): preserve post-close artifact truthfulness

Document and guard the deliberately post-close completeness notification raised by #5997 comment 3981283923. Preserve production ordering and prove fsync/close failures never announce a complete artifact.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 4747f826-8c83-495d-80df-3d1168662e10

* fix(rush): retain unscoped output during operation deferral

Address #5996 comment 3981270424 by deferring only operation-scoped external chunks. Cover real adapter stdout/stderr and command-scoped output in JSON and detailed plaintext without duplicating collated operation output.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 4747f826-8c83-495d-80df-3d1168662e10

* Connect watch cancellation to shadow parity observation

Retain selected-action cancellation for subsequent shadow observations while preserving legacy process and telemetry results. Exercise a native watch session and compare raw terminal chunks and per-stream bytes.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 4747f826-8c83-495d-80df-3d1168662e10

* Fix shadow lifecycle error correlation and final registration

Keep immutable errors intact, capture original pre-execution parser failures without changing legacy rendering, and observe final configured operation silence.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 4747f826-8c83-495d-80df-3d1168662e10

* Respect command ownership when consuming reporter controls

Consume --verbose only for known actions that do not define it and parse repository opt-in value controls only when they are not command-owned. Preserve native aliases, declared custom values, unresolved plugin namespaces, and pass-through arguments.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 4747f826-8c83-495d-80df-3d1168662e10

* fix(rush): preserve declared custom controls on help

Reproduce repository-opted-in custom/global and action help through the real frontend/parser. Use command definitions before interpreting reporter-shaped values, preserve mixed and unknown namespaces, and retain malformed configuration discovery guards.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 4747f826-8c83-495d-80df-3d1168662e10

* Preserve later full-log and root-help contracts in core staging

Remove only the propagation-added primary FileReporter filter: R5B's automatic full-detail log remains unfiltered at every selected level. Assert selected normal/debug independently from retained debug content. Distinguish no-action help from unknown-command ownership and cover both real root-help paths without changing owning refs.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 4747f826-8c83-495d-80df-3d1168662e10

* Refresh R2B reporter controls onto native-private trunk

Preserve the exact published R2B slice and review corrections while reconciling native private members and replacing unbranded parser test objects with real execution paths.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 4747f826-8c83-495d-80df-3d1168662e10

* Preserve rollback flags and primary file detail defaults

Share separated-value recognition with stripping so valueless controls cannot consume legacy flags, and use debug only as the unrequested primary file log-level default.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 4747f826-8c83-495d-80df-3d1168662e10

* Respect command ownership when consuming reporter controls

Consume --verbose only for known actions that do not define it and parse repository opt-in value controls only when they are not command-owned. Preserve native aliases, declared custom values, unresolved plugin namespaces, and pass-through arguments.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 4747f826-8c83-495d-80df-3d1168662e10

* Refresh R3A scoped producers onto native-private trunk

Retain the exact scoped producer API and WeakMap-backed plugin facades while preserving native-private parser/plugin members and real launch-boundary coverage.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 4747f826-8c83-495d-80df-3d1168662e10

* Clarify the frontend reporter channel identity contract

Document both the typed event sink and the frontend-assigned sessionId in the cross-version handoff without changing its shape.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 4747f826-8c83-495d-80df-3d1168662e10

* Refresh R3B shadow lifecycle onto native-private trunk

Preserve published early-failure, late-telemetry and operation-callback corrections; reconcile native lifecycle fields and telemetry references, with real branded parser regression coverage.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 4747f826-8c83-495d-80df-3d1168662e10

* Fix shadow lifecycle error correlation and final registration

Keep immutable errors intact, capture original pre-execution parser failures without changing legacy rendering, and observe final configured operation silence.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 4747f826-8c83-495d-80df-3d1168662e10

* Normalize Rush cwd before analyzing repository inputs

Resolve physical cwd at parser entry so native Windows short names and directory aliases match Git repository paths. Keep real watch cancellation coverage and add symlink/junction regressions without mocking input analysis or watcher behavior.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 4747f826-8c83-495d-80df-3d1168662e10

* Use native realpath to expand Windows short directory names

Native Node 24 and 26 validation showed that generic realpathSync and FileSystem.getRealPath retain 8.3 names. Use the existing native-realpath pattern to resolve the physical directory before configuration discovery.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 4747f826-8c83-495d-80df-3d1168662e10

* Capture successful Git setup diagnostics in watch regression tests

Explicit pipes prevent Git line-ending notices from being mirrored onto the parent test stderr. Real setup failures still throw with the original captured error text. Reproduced the actual Rush production gate with process-local core.autocrlf=true and core.safecrlf=warn: unchanged tests exited with warnings before the fix and passed cleanly after it, without changing CI warning policy or watch assertions.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 4747f826-8c83-495d-80df-3d1168662e10

* Compare physical dependency targets in package manager tests

Resolve both expected and actual link locations using native-backed realpath before comparing them. Add a real directory-alias regression that still rejects wrong and missing targets, and run it alongside the unchanged npm and Yarn integration workflows. Reproduced the previous lexical mismatch before the fix; the regression and complete suite pass under an invocation-owned aliased temporary root. No production code, dependency versions, or CI gates changed.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 4747f826-8c83-495d-80df-3d1168662e10

* test(rush): join timed-out watch fixtures before teardown

Own the complete real watch test promise so Jest afterEach can cancel and join setup, parser execution, and finalization before releasing locks or resetting fixture files and mocks. Forward teardown cancellation only after production abort listeners are installed, and cover successful and failed finalization with deterministic gates.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 4747f826-8c83-495d-80df-3d1168662e10

* fix(reporter): validate negotiated Heft diagnostic identity

Require child diagnostic categories and supplied template keys to match the registered definition, preserving optional detail omission and severity overrides. Enforce positive safe integer source coordinates when present. Cover canonical controls and real accepted children that exit zero after sending forged identities or zero coordinates.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 4747f826-8c83-495d-80df-3d1168662e10

* fix(reporter): redact forwarded secret aliases

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: 4747f826-8c83-495d-80df-3d1168662e10

Copilot-Session: 719d36bf-0fcf-419e-b464-844ddf140881

---------

Co-authored-by: TheLarkInn <TheLarkInn@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: d6318e80-5da9-4858-a147-817e8692f10e
Copilot-Session: 4747f826-8c83-495d-80df-3d1168662e10
Copilot-Session: 719d36bf-0fcf-419e-b464-844ddf140881
Sean Larkin (TheLarkInn) added a commit that referenced this pull request Sep 14, 2026
…ow-up) (#6019)

* Fix reviewed reporter output ownership and idle rendering

Address current review findings on #5989, #5993, and #5997 without changing reporter defaults or wire contracts. Preserve command-owned bootstrap flags, reserve machine/file stdout, observe current-engine direct output through the existing adapter, register frontend-owned environment controls, and stop lifecycle timers on close. Extend the #5998 demo and include the missing release note for existing #5996 operation forwarding.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 4747f826-8c83-495d-80df-3d1168662e10

* Fix Heft reporter pipe detection on Windows

Follow up #6000 and Reporter CI: Node reports S_IFIFO mode for inherited Windows pipes while Stats.isFIFO() returns false. Keep descriptor validation strict, add a mode-predicate regression, and require negative context tests to reach the acknowledgement handshake.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 4747f826-8c83-495d-80df-3d1168662e10

* Adapt timer containment to the original scoped reporter follow-up

Adapt a9d3204 directly onto #6019 head f5db19d. Retain temporary review base 0bf12a8, original diagnostic state and protected drain. Exclude fresh R5B diagnostics, write-all logic, R6 initializer disposal and 1926 runtime cleanup.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 4747f826-8c83-495d-80df-3d1168662e10

* test(rush): preserve follow-up stdout ownership

Adapt the inherited R6 additional-output matrix to the follow-up's existing file-reporter stdout reservation while keeping plaintext output live.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: 4747f826-8c83-495d-80df-3d1168662e10

Copilot-Session: 719d36bf-0fcf-419e-b464-844ddf140881

---------

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: TheLarkInn <TheLarkInn@users.noreply.github.com>
Copilot-Session: 4747f826-8c83-495d-80df-3d1168662e10
Copilot-Session: 719d36bf-0fcf-419e-b464-844ddf140881
Sean Larkin (TheLarkInn) added a commit that referenced this pull request Sep 22, 2026
* Fix reporter frontend integration

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

* Emit shadow Rush lifecycle events

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: d6318e80-5da9-4858-a147-817e8692f10e

* Complete shadow reporter parity coverage

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: d6318e80-5da9-4858-a147-817e8692f10e

* Add reporter bootstrap handoff

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: d6318e80-5da9-4858-a147-817e8692f10e

* Fix reporter bootstrap compatibility failures

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: d6318e80-5da9-4858-a147-817e8692f10e

* Add feature-flagged operation event adapter

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: d6318e80-5da9-4858-a147-817e8692f10e

* Add direct Rush reporter demo path

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: d6318e80-5da9-4858-a147-817e8692f10e

* Fix operation reporter stream edge cases

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: d6318e80-5da9-4858-a147-817e8692f10e

* Harden reporter demo integration

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: d6318e80-5da9-4858-a147-817e8692f10e

* Integrate negotiated Heft child reporting

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: d6318e80-5da9-4858-a147-817e8692f10e

* Document experimental Rush reporters

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: d6318e80-5da9-4858-a147-817e8692f10e

* Add deterministic AI reporter qualification gates

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: d6318e80-5da9-4858-a147-817e8692f10e

* Harden Heft negotiation fallback

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: d6318e80-5da9-4858-a147-817e8692f10e

* Harden reporter documentation examples

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

* Harden AI reporter qualification gates

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: d6318e80-5da9-4858-a147-817e8692f10e

* Fix structured Heft output archival

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: d6318e80-5da9-4858-a147-817e8692f10e

* Harden diagnostic telemetry dimensions

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

* Fix reporter frontend argument and close lifecycle

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

* Harden telemetry session attribution

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

* Preserve Rush CLI reporter compatibility

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

* Refine reporter flag ownership

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

* Tolerate value-less custom reporter flags

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

* Protect parent telemetry producers

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

* Fix reporter bootstrap review findings

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: d6318e80-5da9-4858-a147-817e8692f10e

* Fix bootstrap diagnostic privacy

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: d6318e80-5da9-4858-a147-817e8692f10e

* Route legacy bootstrap warnings to stderr

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: d6318e80-5da9-4858-a147-817e8692f10e

* Fix operation stream review findings

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: d6318e80-5da9-4858-a147-817e8692f10e

* Fix reporter demo review findings

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: d6318e80-5da9-4858-a147-817e8692f10e

* Fix reporter watch and lock handling

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: d6318e80-5da9-4858-a147-817e8692f10e

* Fix overlapping reporter watch cycles

Track explicit operation graph iteration identities across lifecycle events and isolate reporter totals, diagnostics, and output spools by watch cycle.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: d6318e80-5da9-4858-a147-817e8692f10e

* Align reporter docs with reviewed behavior

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: d6318e80-5da9-4858-a147-817e8692f10e

* Fix AI fallback privacy gates

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: d6318e80-5da9-4858-a147-817e8692f10e

* Fix Heft child reporter review findings

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: d6318e80-5da9-4858-a147-817e8692f10e

* Fix acknowledgement close test race

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: d6318e80-5da9-4858-a147-817e8692f10e

* Preserve fallback on acknowledgement failure

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: d6318e80-5da9-4858-a147-817e8692f10e

* Archive structured Heft diagnostics

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: d6318e80-5da9-4858-a147-817e8692f10e

* Redact secret reporter envelope context

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: d6318e80-5da9-4858-a147-817e8692f10e

* Harden Heft child trust boundary

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: d6318e80-5da9-4858-a147-817e8692f10e

* Stop execution after parser initialization failure

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: d6318e80-5da9-4858-a147-817e8692f10e

* Isolate overlapping reporter watch cycles

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: d6318e80-5da9-4858-a147-817e8692f10e

* Preserve reporter cycles across stream callbacks

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: d6318e80-5da9-4858-a147-817e8692f10e

* Redact secret human reporter messages

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: d6318e80-5da9-4858-a147-817e8692f10e

* Fix reporter engine compatibility routing

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: d6318e80-5da9-4858-a147-817e8692f10e

* Force nonzero parser failure exits

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: d6318e80-5da9-4858-a147-817e8692f10e

* Emit registrations for collapsed iterations

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: d6318e80-5da9-4858-a147-817e8692f10e

* Keep operation sink callbacks compatible

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: d6318e80-5da9-4858-a147-817e8692f10e

* Keep operation stream callbacks compatible

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: d6318e80-5da9-4858-a147-817e8692f10e

* Align reporter completion with failure exit

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: d6318e80-5da9-4858-a147-817e8692f10e

* Forward daemon operation completion events

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: d6318e80-5da9-4858-a147-817e8692f10e

* Finalize machine privacy and zero-work cycles

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: d6318e80-5da9-4858-a147-817e8692f10e

* Complete collapsed daemon operation cycles

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: d6318e80-5da9-4858-a147-817e8692f10e

* Preserve iteration callback compatibility

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: d6318e80-5da9-4858-a147-817e8692f10e

* Protect secret logs and callback compatibility

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: d6318e80-5da9-4858-a147-817e8692f10e

* Preserve local-sensitive producer identity

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: d6318e80-5da9-4858-a147-817e8692f10e

* Use resolved iteration for matcher cleanup

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: d6318e80-5da9-4858-a147-817e8692f10e

* feat(rush-daemon): add request-safe opt-in idle shutdown

Part of WS3 (#5898): retain requests through resolution, execution, output drain and cleanup before starting the idle deadline.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* feat(rush-daemon): acknowledge lifecycle shutdown over the wire

Add protocol 0.6 management shutdown, live PID and resident-memory status. Require a negotiated lifecycle-capable hello and drain acknowledgment before host cleanup.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* fix(rush-daemon): retain ownership until engine cleanup completes

Stop admission without releasing endpoint ownership, reject still-live owners during handoff, and make listener release idempotent so a stale close cannot remove successor artifacts.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* fix(rush-daemon-transport): close endpoints on ownership write failure

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* [rush] Close non-persistent runners before dependents execute

Reuse configureIteration and shouldRunnerPersist without changing the default. Close retained runners at operation completion even when execution is skipped or restored from cache, and block dependents if cleanup fails. Keep final cleanup for operations that never reach completion and wait for IPC child streams to close.

Cover changing iteration policies, real IPC child shutdown ordering, idle eviction and restart. Document host-owned eviction coordination and retain the existing public API.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: 4747f826-8c83-495d-80df-3d1168662e10

* Fix reporter DAG integration regressions

Keep terminal width live with bound bootstrap output, cover finalized bootstrap logs, isolate reporter configuration test fixtures, and run the demo against the locally built Rush engine without changing release defaults.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 4747f826-8c83-495d-80df-3d1168662e10

* feat(rushd): add opt-in client and detached startup

Add isolated client/core packages, existing-protocol request pumping and cancellation, conservative first-start coordination, and validated daemon configuration. Preserve native fallback and document missing host integration contracts.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: 4747f826-8c83-495d-80df-3d1168662e10

* feat(rushd): expose handshake-based start and status

Reuse client startup and hello/pong readiness for explicit management. Keep stop/restart blocked pending negotiated instance-safe host controls, and report only attested status fields.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: 4747f826-8c83-495d-80df-3d1168662e10

* feat(rush-daemon): add request-safe opt-in idle shutdown

Part of WS3 (#5898): retain requests through resolution, execution, output drain and cleanup before starting the idle deadline.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
(cherry picked from commit 5a30119b1153fb417e502500120d54ef6a616066)

* fix(rushd): retain request compatibility across additive minors

Keep the ordinary request protocol floor at 0.5 independently of later lifecycle additions. Use the integrated typed idle-timeout option and cover real CLI detached startup through automatic idle shutdown.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: 4747f826-8c83-495d-80df-3d1168662e10

* feat(rush-daemon): acknowledge lifecycle shutdown over the wire

Add protocol 0.6 management shutdown, live PID and resident-memory status. Require a negotiated lifecycle-capable hello and drain acknowledgment before host cleanup.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
(cherry picked from commit 18cab2d8c1f26c84fa8836903ee1e6b2734824f7)

* feat(rushd): add negotiated stop and guarded restart

Gate shutdown on protocol 0.6 and require acknowledgement plus EOF. Restart waits for the attested predecessor PID to exit before using existing safe startup, protecting the workspace cleanup gap without killing processes or reclaiming live ownership. Surface real PID and resident-memory status fields.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: 4747f826-8c83-495d-80df-3d1168662e10

* fix(rush-daemon): retain ownership until engine cleanup completes

Stop admission without releasing endpoint ownership, reject still-live owners during handoff, and make listener release idempotent so a stale close cannot remove successor artifacts.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
(cherry picked from commit f4164b45ed5f8ba3bb6f37f27e42ef90638b95a3)

* fix(rushd): wait for original ownership before restart

Capture and verify the predecessor PID/start timestamp before shutdown. Wait for ownership release, transfer, or a dead owner instead of process exit; preserve live and ambiguous records with bounded failure. Cover embedded restart and failed workspace cleanup against two-phase host close.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: 4747f826-8c83-495d-80df-3d1168662e10

* fix(rush-daemon-transport): close endpoints on ownership write failure

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
(cherry picked from commit bbf37b135c4793fd56ad221e47f1e61661f9426e)

* feat(rushd): add opt-in client and detached startup

Add isolated client/core packages, existing-protocol request pumping and cancellation, conservative first-start coordination, and validated daemon configuration. Preserve native fallback and document missing host integration contracts.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: 4747f826-8c83-495d-80df-3d1168662e10

* feat(rushd): expose handshake-based start and status

Reuse client startup and hello/pong readiness for explicit management. Keep stop/restart blocked pending negotiated instance-safe host controls, and report only attested status fields.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: 4747f826-8c83-495d-80df-3d1168662e10

* fix(rushd): retain request compatibility across additive minors

Keep the ordinary request protocol floor at 0.5 independently of later lifecycle additions. Use the integrated typed idle-timeout option and cover real CLI detached startup through automatic idle shutdown.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: 4747f826-8c83-495d-80df-3d1168662e10

* feat(rushd): add negotiated stop and guarded restart

Gate shutdown on protocol 0.6 and require acknowledgement plus EOF. Restart waits for the attested predecessor PID to exit before using existing safe startup, protecting the workspace cleanup gap without killing processes or reclaiming live ownership. Surface real PID and resident-memory status fields.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: 4747f826-8c83-495d-80df-3d1168662e10

* fix(rushd): wait for original ownership before restart

Capture and verify the predecessor PID/start timestamp before shutdown. Wait for ownership release, transfer, or a dead owner instead of process exit; preserve live and ambiguous records with bounded failure. Cover embedded restart and failed workspace cleanup against two-phase host close.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: 4747f826-8c83-495d-80df-3d1168662e10

* feat(rushd): expose private launcher logs locally

Share one stable workspace log path, preserve private append-only child stdout/stderr capture, and add a bounded backpressured daemon logs snapshot without connecting or auto-starting. Keep follow mode and structured observability out of this slice.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: 4747f826-8c83-495d-80df-3d1168662e10

* feat(rushd): expose private launcher logs locally

Share one stable workspace log path, preserve private append-only child stdout/stderr capture, and add a bounded backpressured daemon logs snapshot without connecting or auto-starting. Keep follow mode and structured observability out of this slice.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: 4747f826-8c83-495d-80df-3d1168662e10

* feat(rushd): admit piped stdin with write credits and ordered EOF

Negotiate protocol0.7 input lifecycle, preserve native fallback input, bound chunk buffering without blocking control frames, and forward EOF to owned child processes.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* feat(rushd): replace mismatched daemons before submitting requests

Serialize explicit-launcher version replacement under the startup lock, attest ownership before shutdown, and reuse the same primitive for manual restart.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* feat(rushd): bind native phased commands to a warm engine

Reuse native Rush parsing and phased graph preparation for a bounded all-project build/rebuild engine. Preserve exact native selections, input freshness, cache and warning behavior, and awaited resource ownership. Reject ambiguous rushx requests and incompatible command environments before scheduling.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 4747f826-8c83-495d-80df-3d1168662e10

* feat(rushd): add experimental graph reference client

Implement gated daemon graph commands over existing request and extension-event contracts. Preserve lazy graph initialization, serialize mutations, and coalesce lease-free watch updates with cancellation cleanup. Include native graph/transport and standalone CLI coverage, protocol DTOs, API reports, and documentation.

Validation: clean protocol/daemon/CLI builds; 101 targeted and regression tests passed across daemon (57), CLI (21), and protocol (23). Final graph-specific suites rerun after metadata refinements.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 4747f826-8c83-495d-80df-3d1168662e10

* fix(rushd): scope native locks to coalesced iterations

Keep the warm engine unlocked while idle, acquire once before batch reconciliation, and release after all participant cleanup before publishing results. Allow explicit retries only for pre-execution lock contention. Load rig and inherited project configuration through isolated native loaders and validate effective graph/cache settings on every iteration, including request-owned Git selector ignore globs.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 4747f826-8c83-495d-80df-3d1168662e10

* feat(rushd): wire CLI no-wait and queue timeout controls

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* feat(rushd): execute native rushx scripts in owned children

Reuse native Rushx parsing, lifecycle environment preparation, diagnostics, and dependency synchronization through request-owned subprocesses. Add an explicit protocol 0.8 invocation kind and an injectable composite resolver without changing default bootstrap routing. Cover native parity, stdin, cancellation, and pre-execution boundaries with real-host tests.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 4747f826-8c83-495d-80df-3d1168662e10

* fix(rushd): prevent fallback replay after terminal control

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* Implement generation-attached daemon warm-set resource policies

Apply idle, project-count, sampled memory and telemetry-ranking policies under exclusive workspace and native execution leases. Await runner and watcher cleanup, release retained records and native plugin scratch state, and preserve truthful diagnostics and build outcomes. Document the generation attachment contract and cover real native graphs, scripts and watchers.

Refs #5898 and #5894.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 4747f826-8c83-495d-80df-3d1168662e10

* feat(rushd): add generation-safe tiered workspace lifecycle

Retain unchanged engines, reload graph configuration and command shape under generation/workspace/native admission, and replace process-bound state through the existing core ownership/startup contract. Fence resolution through execution and never replay scheduled work. Add isolated native install/update workers with exact result drain before old cleanup and successor startup, explicit version selection failures, stable implementation fingerprints, and real lifecycle regression coverage.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 4747f826-8c83-495d-80df-3d1168662e10

* fix(rushd): preserve composite resolvers across generations

Use optional workspace lifecycle capabilities instead of a concrete resolver class check, retain resolver decorators across generation factories, and dispose generation-owned resolvers. Explicit rushx invocation metadata bypasses phased/mutation/graph interception while retaining generation safety and exclusive global admission.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 4747f826-8c83-495d-80df-3d1168662e10

* Support bounded pre-execution restart retry and native mutation clients

Drain typed restart outcomes before closing accepted requests, wait for attested ownership release, preserve input and admission budgets, and prohibit replay after execution side effects.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* Preserve both cancellation sources during restart retry

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* Track applied workspace reload tier for lifecycle status

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* Match parent checkpoint shutdown handler after merge

Remove an automatically retained duplicate so the merged tree matches the supplied parent checkpoint exactly before scoped launcher work.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: 4747f826-8c83-495d-80df-3d1168662e10

* [rush-client-core] Guard detached startup across starter death

Reserve startup before detached spawn and hand the explicit launcher to an independent helper. Release the reservation only after hello/ping readiness or a known spawn failure. Preserve ambiguous reservations rather than trusting process liveness, and keep existing ownership/disposal and protocol 0.10 retry checks intact.

Add deterministic process-isolated pre-bind starter-death regressions, arbitrary launcher forwarding coverage, and fail-closed recovery tests. Document the manual recovery boundary without adding dependencies or wire/public API changes.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: 4747f826-8c83-495d-80df-3d1168662e10

* [rush-client-core] Honor cancellation during daemon readiness

Recheck the startup signal after hello/pong completes inside the existing client cleanup guard, and before classifying handshake errors for retry. Close a late-ready client when cancellation wins and preserve the original abort reason.

Add isolated real-socket regressions for delayed pong, timeout-shaped abort reasons, and disconnect during cancelled readiness. Leave the parent restart helper and its cancellation tests untouched.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: 4747f826-8c83-495d-80df-3d1168662e10

* test(rushd): prove successful native install and update lifecycle

Exercise real offline PNPM workers using an isolated copy of the available package manager and genuine local dependencies. Prove install restores dependencies without changing the committed lockfile, update changes the resolved workspace dependency, and successful standalone mutations drain output/result before old cleanup and actual successor process startup. Rebuild postmutation state without administrative replay.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 4747f826-8c83-495d-80df-3d1168662e10

* test(rushd): validate successful mutations with typed restart retry

Run the real successful install/update fixtures through executeWithDaemonRestartAsync against protocol 0.10, and assert authoritative mutation results never advertise a pre-execution retry. Keep server-selected successor ownership and the existing result-before-cleanup/start ordering assertions.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 4747f826-8c83-495d-80df-3d1168662e10

* Fix reviewed reporter output ownership and idle rendering

Address current review findings on #5989, #5993, and #5997 without changing reporter defaults or wire contracts. Preserve command-owned bootstrap flags, reserve machine/file stdout, observe current-engine direct output through the existing adapter, register frontend-owned environment controls, and stop lifecycle timers on close. Extend the #5998 demo and include the missing release note for existing #5996 operation forwarding.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 4747f826-8c83-495d-80df-3d1168662e10

* Complete automatic warm generation ownership and status accounting

Fence cold and late controller attachment, publish initialization ownership before reentrant quiescence, and await maintenance before generation replacement. Preserve cleanup and native lease-release failures. Expose non-initializing provider generation and truthful warm accounting in optional pong status, and avoid historical success for evicted graph results.

Validate default runtime knobs with real graphs, IPC measurements and watchers; same-PID soft reload, disposal races, failed ownership barriers, protocol compatibility and existing daemon regressions. Leave lifecycle retry/restart and mutation routing unchanged.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 4747f826-8c83-495d-80df-3d1168662e10

* Document bounded restart retry and automatic warm status

Align daemon and CLI guidance with the parent protocol 0.10 contract: pre-execution retryAfterRestart authorization, at most one ownership-checked retry, no I/O/cancellation/connection-loss replay, and opt-in native install/update forwarding. Replace inactive warm-policy and absent-status wording, without promising selected-version launcher availability.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 4747f826-8c83-495d-80df-3d1168662e10

* feat(rushd): select and attest version-matched daemon launchers

Use native Rush installation APIs for daemon releases that pin the exact requested engine. Probe foreign installations in isolation, re-attest at startup, and launch only the selected installation's real default daemon APIs. Keep unsupported releases explicit and provide an async connection-options seam for parent routing.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: 4747f826-8c83-495d-80df-3d1168662e10

* Honor daemon.watch as persistent project observation policy

Keep root/config guards and explicit input reconciliation active when watch is false. Observe requested warm projects when true, and reconcile idle watcher changes under existing workspace/native leases without dropping runners/results or scheduling builds. Preserve protected/prepared/active work and report failed watcher cleanup truthfully.

Document the intentional default-observation change, expose the effective flag in backward-compatible warm status, and cover real source/config rebuilds, idle observation, environment overrides, policy toggles and resource lifetime failures.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 4747f826-8c83-495d-80df-3d1168662e10

* List new daemon client packages in generated repository README

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* Derive live daemon fixture versions from the installed Rush engine

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* Update SDK export snapshot for the new native daemon APIs

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* Fix native daemon workspace path aliases on Windows

Resolve command cwd and workspace root physically before confinement, then align native selectors with the loaded configuration. Cover real alias-based native execution, warm reuse, and symlink escape rejection. Assert the precise Windows COMSPEC shell contract in native parser tests.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 4747f826-8c83-495d-80df-3d1168662e10

* Fix Heft reporter pipe detection on Windows

Follow up #6000 and Reporter CI: Node reports S_IFIFO mode for inherited Windows pipes while Stats.isFIFO() returns false. Keep descriptor validation strict, add a mode-predicate regression, and require negative context tests to reach the acknowledgement handshake.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 4747f826-8c83-495d-80df-3d1168662e10

* Fix startup resource lifetime and hosted Node 26 fixtures

Join actual startup helper closure, allow successful IPC handoff to close naturally, use a stable helper cwd, and drain failed launchers without weakening crash reservations or ownership checks. Preserve failed-send cleanup and verify actual helper close with real processes.

Wait for task-owned fixture processes before deleting temp roots, retain failed cleanup evidence, shorten selected-launcher Unix socket paths, and use native pre-LTS warning configuration for Rushx binary parity tests. Leave engine containment, Heft, and SDK scopes untouched.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: 4747f826-8c83-495d-80df-3d1168662e10

* Align daemon clients and sessions on native filesystem identity

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>

* Fix Windows warm IPC fixtures and watcher expectations

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

* Fix native Windows startup exclusion and sharing races

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

* Canonicalize shared graph and warm fixture roots

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

* test(rushd): isolate native Windows lifecycle fixtures

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

* test(rush-client): isolate native graph scenarios and exercise graceful 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>

* test(rushd): fix native mutation hooks and joined launcher cleanup

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

* test(rushd): budget isolated wrong-version rejection

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

* test(rushd): isolate graph reload setup and join fixture work

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

* fix(rushx): preserve native Windows invocation namespaces

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: 4dc29c26df7c4550af413cca77f27b4a319e58e8. 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

* test(rush-client): bind complete native callbacks to fixture lifetimes

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>

* test(rush-client): separate initial build from native reuse assertions

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>

* Preserve native Rushx lookup and release embedded parser test locks

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>

* test(rushd): preserve LF files in generated Git fixtures

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>

* test(rushd): budget native graph preparation separately

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>

* test(rushd): use a bounded native graph integration budget

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>

* Preserve the active native repository lock during purge

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>

* Await Linux group completion and joined fixture cleanup

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>

* test(rushd): assert retention against measured native telemetry

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>

* Share measured warm expectations and bound integration setup

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>

* test(rush-client): publish pre-bind PID readiness atomically

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>

* Fix aggregate cleanup errors before dependent operations execute

Address PR #6018 review comment 3968212148. Preserve attribution for recognized runner-close errors, but surface unexpected and empty aggregates as cleanup failures instead of allowing dependents to execute and reporting success. Cover both cases with failing-before/fixed-after regressions.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: 4747f826-8c83-495d-80df-3d1168662e10

* Fix negotiated Heft reporter failure and presentation handling

Address #6000 review 5154313652: reject corrupt accepted streams, render privacy-aware compiler context, and validate intentional Windows raw fallback.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: 4747f826-8c83-495d-80df-3d1168662e10

* Retain daemon ownership after request resource cleanup fails

Latch typed request resource failures across admission, generation replacement and host disposal. Drain mutation errors without allowing successor startup, keep the failed listener alive, and retry only pre-request handshake resets during clean handoff. Add composed native-worker and shared-global ownership regressions.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 4747f826-8c83-495d-80df-3d1168662e10

* Preserve reporter diagnostics and grouped output across watch cycles

Address #5997 review 5154313870: display bounded errors immediately, summarize warnings once per cycle, and handle short and zero-progress writes with truthful artifact completeness.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: 4747f826-8c83-495d-80df-3d1168662e10

* Fix reporter bootstrap cleanup and abandoned handoff retention

Join cleanup for every attempted reporter initialization without masking the original startup error. Apply deterministic age and session-count retention only to verifiably owned handoffs from exited producers, protecting live/current and foreign files.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 4747f826-8c83-495d-80df-3d1168662e10

* Enforce truthful AI qualification and invocation output budgets

Measure emitted UTF-8 including NDJSON delimiters, reserve final/log space across progress records, and qualify exact fallback context and remediation. Keep comparison baselines and the 50 percent/64 KiB thresholds unchanged; remove redundant AI metadata instead.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 4747f826-8c83-495d-80df-3d1168662e10

* fix(rushd): close WS4 client acceptance gaps

Preserve terminal-dependent Rushx through pre-execution native fallback and project request-local child color and width. Carry graph admission and cancellation through generation preflight and add bounded cancellable launcher-log following, with native parity and real PTY regressions.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 4747f826-8c83-495d-80df-3d1168662e10

* Fix reporter rollback and reserved stream destinations

Apply emergency legacy selection before strict reporter validation, preserve custom command controls, and honor canonical stdout/stderr destinations without treating them as paths.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 4747f826-8c83-495d-80df-3d1168662e10

* Contain reporter timer failures and cancel disabled background work

Address #6019 review 5154313653 with manager-owned synchronous failure handling, lifecycle cancellation, bounded cleanup and optional/required failure regressions.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: 4747f826-8c83-495d-80df-3d1168662e10

* Preserve reporter lifecycle across initialization and finalization failures

Create the root reporting context before repository setup, share correlated failure emission, and publish final completion only after telemetry hooks settle without changing native error handling.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 4747f826-8c83-495d-80df-3d1168662e10

* Select the built engine in local reporter demo instructions

Address #5998 review 5154326282. Document the shell-wide preview selection and cleanup for individual examples while preserving the already-seeded integration driver.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 4747f826-8c83-495d-80df-3d1168662e10

* Keep R6 cleanup regression independent of later host injection options

Inject the partial-initialization fixture through ReporterManager's existing initializer so the test replays onto the original R6 slice without importing a later host manager option.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 4747f826-8c83-495d-80df-3d1168662e10

* test(rushd): release retained cleanup-failure fixture listener

Capture the listener owned by the injected workspace-cleanup failure test, preserve assertions that live ownership blocks restart, join client and host cleanup, and release the fixture listener last. This prevents the integrated WS3 sticky-ownership behavior from leaking a listening pipe into the Jest worker without weakening production ownership.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 4747f826-8c83-495d-80df-3d1168662e10

* Share reporter close state across shutdown and initialization disposal

Cache one manager-owned close promise per registration, including rejection, and avoid flushing closed entries. Ensure disposal still closes attempted reporters when an earlier lifecycle action rejects. Preserve the host's existing eager FileReporter close and final-artifact sequencing.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 4747f826-8c83-495d-80df-3d1168662e10

* Propagate reserved reporter stdout ownership to integration

Classify additional reserved stdout outputs as machine-readable and explicitly reserved, retaining file-primary behavior and command-JSON passthrough when no reporter owns stdout.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 4747f826-8c83-495d-80df-3d1168662e10

* Serialize initialization disposal on each reporter lifecycle lane

Reserve the existing per-entry lifecycle tail for disposal while retaining raw failures for AggregateError reporting. Concurrent normal shutdown now waits behind a blocked disposal flush before sharing the cached close operation.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 4747f826-8c83-495d-80df-3d1168662e10

* Enable explicit persistent Node IPC daemon operations

Add false-default repository activation and typed per-operation Node descriptors with raw argv, bounded implementation-tree invalidation, native NoOp/shard preservation, and measurable warm ranking. Keep watch-only IPC and native/rebuild defaults unchanged. Preserve streamed Unicode and reject missing IPC readiness without replay.

Verified the unmocked public CLI on Linux and actual Windows, including measured telemetry versus LRU eviction, persistent PIDs, direct/inherited/rig reloads, output, cancellation, and ownership. No Reporter gates or parent-owned OperationGraph/parser files changed.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 4747f826-8c83-495d-80df-3d1168662e10

* Abort attempted reporter initialization before waiting for cleanup

Forward the original startup failure into manager-owned disposal. Publish its memoized promise before abort listeners run, synchronously cancel every attempted entry with an Error reason, then join serialized once-only cleanup while retaining AggregateError reporting. Preserve normal-close null reasons and the eager full-detail-file artifact sequence.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 4747f826-8c83-495d-80df-3d1168662e10

* Preserve secret aliases in combined human diagnostic output

Redact source tool/file labels that duplicate explicitly secret parameter values while preserving unrelated local-sensitive details. Restore the strict combined R8 privacy gate without changing fixtures, thresholds, or comparison baselines.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 4747f826-8c83-495d-80df-3d1168662e10

* Verify minimal combined reporter lifecycle semantics

Cover both sequential close/disposal orders with synchronous rejected-close caching and verify optional runtime failures remain abort-only until normal shutdown. Existing blocked-lifecycle, concurrent cleanup, unstarted-entry and original-error regressions remain intact.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 4747f826-8c83-495d-80df-3d1168662e10

* fix(rushd): keep Windows log following cancellable

Move redirected Windows follow output through a bounded acknowledged output-only process, keeping the CLI event loop and log-file cleanup independent of blocked stdout. Join the writer on cancellation and handle parent loss without orphaning it. Preserve snapshots, file redirection and explicit I/O failures; verify actual Windows 24 and 26 signal-handler delivery and unchanged cancellation deadlines.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 4747f826-8c83-495d-80df-3d1168662e10

* Redact secret aliases from human diagnostic context

Prevent explicitly secret parameter values from reappearing through source labels, source paths or lower-classified template parameters. Preserve the original diagnostic and public context. The unchanged combined R8 corpus now passes all gates without AI, fixture or threshold changes.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 4747f826-8c83-495d-80df-3d1168662e10

* Retain unrelated absolute source context regression

Test-only follow-up on parent-selected 4822a34e. Preserve all seven dbdca alias regressions and add the non-subsumed boundary case for an unrelated private-looking absolute path/tool alongside a secret token. The helper remains byte-identical to published core.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 4747f826-8c83-495d-80df-3d1168662e10

* test(rushd): verify writer resource exit before PID reaping

Capture the Linux writer identity before owner death and use bounded process/resource inspection instead of treating kill(pid, 0) as exit proof. Keep the original three-second deadline and watchdog through verification, recognize resource-free zombies, and avoid following or signalling a reused PID. Add focused helper tests; production cancellation is unchanged.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 4747f826-8c83-495d-80df-3d1168662e10

* Coalesce superseded AI start status for native Windows qualification

Keep actual raw-byte measurements and all quality budgets unchanged. Drop only an unrendered metadata-only start acknowledgement superseded by the completed result; preserve every final field, supplied log reference, active-command status and ordered watch history. Align the three-pass file-backed qualification setup hook with the existing bounded 15-second integration allowance, without changing production deadlines or individual quality gates.

Verified on actual Windows Node 24.11.1 and 26.7.0 plus Linux: the raw Windows legacy ratio falls from 51.4593 percent to 48.1435 percent, with final records and both baselines unchanged; 67 focused output/qualification/performance tests pass per platform.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 4747f826-8c83-495d-80df-3d1168662e10

* Calibrate IPC retention acceptance from real measurements

Select roles from measured scores and calculate a bounded cache-hit plan that establishes strict opposite recency without executing unchanged work. Use real timed pressure work and a one-shot live RSS allocation barrier so delayed sampling and Windows startup variance cannot choose the expected winner.

Keep production scoring, the 512 MiB budget, the 60-second test limit, and exact child/watcher retention assertions unchanged. Verified four retention cases on Linux22 and actual Windows24/26, plus the other twelve public IPC cases.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 4747f826-8c83-495d-80df-3d1168662e10

* Fix shadow lifecycle error correlation and final registration

Keep immutable errors intact, capture original pre-execution parser failures without changing legacy rendering, and observe final configured operation silence.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 4747f826-8c83-495d-80df-3d1168662e10

* Connect watch cancellation to shadow parity observation

Retain selected-action cancellation for subsequent shadow observations while preserving legacy process and telemetry results. Exercise a native watch session and compare raw terminal chunks and per-stream bytes.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 4747f826-8c83-495d-80df-3d1168662e10

* Preserve execution-bound registration in daemon integration

The integrated graph already registers configured records at execution admission or all-silent completion. Keep that iteration-aware boundary rather than adding the earlier owning-slice callback a second time. New final-silence and existing native scheduling regressions pass together.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 4747f826-8c83-495d-80df-3d1168662e10

* fix(rush): preserve discovery after malformed configuration

Address #5997 comment 3981283816 without emitting legacy discovery into explicitly owned reporter output.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 4747f826-8c83-495d-80df-3d1168662e10

* test(reporter): preserve post-close artifact truthfulness

Document and guard the deliberately post-close completeness notification raised by #5997 comment 3981283923. Preserve production ordering and prove fsync/close failures never announce a complete artifact.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 4747f826-8c83-495d-80df-3d1168662e10

* Register caller-owned discovery regression independently

Keep the malformed-configuration writer regression as a top-level test alongside explicit-reporter stdout ownership coverage.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 4747f826-8c83-495d-80df-3d1168662e10

* Cover unscoped output alongside integrated operation reporting

Carry the R5A regression into the later operation-presentation and bootstrap contracts without reviving the removed deferral wrapper. Exercise unrendered adapter chunks while retaining existing already-rendered deduplication coverage.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 4747f826-8c83-495d-80df-3d1168662e10

* Preserve rollback flags and primary file detail defaults

Share separated-value recognition with stripping so valueless controls cannot consume legacy flags, and use debug only as the unrequested primary file log-level default.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 4747f826-8c83-495d-80df-3d1168662e10

* Respect command ownership when consuming reporter controls

Consume --verbose only for known actions that do not define it and parse repository opt-in value controls only when they are not command-owned. Preserve native aliases, declared custom values, unresolved plugin namespaces, and pass-through arguments.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 4747f826-8c83-495d-80df-3d1168662e10

* Clarify the frontend reporter channel identity contract

Document both the typed event sink and the frontend-assigned sessionId in the cross-version handoff without changing its shape.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 4747f826-8c83-495d-80df-3d1168662e10

* fix(rush): strip owned reporter controls from help

Address #5997 comment 3981283879 with selective help ownership, preserving custom values, rollback, and following flags. Exercise the real legacy help parser.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 4747f826-8c83-495d-80df-3d1168662e10

* fix(rush): preserve declared custom controls on help

Reproduce repository-opted-in custom/global and action help through the real frontend/parser. Use command definitions before interpreting reporter-shaped values, preserve mixed and unknown namespaces, and retain malformed configuration discovery guards.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 4747f826-8c83-495d-80df-3d1168662e10

* Unify integrated help and reporter command ownership

Reuse declaration-aware command ownership for help, preserve both consumed value and standalone flag lists, and keep native/custom aliases intact. Preserve command JSON stdout ownership, environment consumption, and the later unfiltered automatic full log. Validate real native/custom help with aligned frontend/parser configuration.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 4747f826-8c83-495d-80df-3d1168662e10

* Clarify canonical invocation log verbosity

Document the existing R5 full-detail requirement separately from configurable primary presentation and additional file destinations. The automatic invocation artifact remains debug-complete in file mode; no runtime behavior changes.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 4747f826-8c83-495d-80df-3d1168662e10

* Retain reporter control ownership through bootstrap fallback

Preserve the standalone flag strip list alongside consumed value controls in both real bootstrap compatibility fallback paths. Keep this combined-boundary fix on the corrected review baseline, outside the scoped 6019 follow-up delta.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 4747f826-8c83-495d-80df-3d1168662e10

* Normalize Rush cwd before analyzing repository inputs

Resolve physical cwd at parser entry so native Windows short names and directory aliases match Git repository paths. Keep real watch cancellation coverage and add symlink/junction regressions without mocking input analysis or watcher behavior.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 4747f826-8c83-495d-80df-3d1168662e10

* Use native realpath to expand Windows short directory names

Native Node 24 and 26 validation showed that generic realpathSync and FileSystem.getRealPath retain 8.3 names. Use the existing native-realpath pattern to resolve the physical directory before configuration discovery.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 4747f826-8c83-495d-80df-3d1168662e10

* Capture successful Git setup diagnostics in watch regression tests

Explicit pipes prevent Git line-ending notices from being mirrored onto the parent test stderr. Real setup failures still throw with the original captured error text. Reproduced the actual Rush production gate with process-local core.autocrlf=true and core.safecrlf=warn: unchanged tests exited with warnings before the fix and passed cleanly after it, without changing CI warning policy or watch assertions.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 4747f826-8c83-495d-80df-3d1168662e10

* Compare physical dependency targets in package manager tests

Resolve both expected and actual link locations using native-backed realpath before comparing them. Add a real directory-alias regression that still rejects wrong and missing targets, and run it alongside the unchanged npm and Yarn integration workflows. Reproduced the previous lexical mismatch before the fix; the regression and complete suite pass under an invocation-owned aliased temporary root. No production code, dependency versions, or CI gates changed.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 4747f826-8c83-495d-80df-3d1168662e10

* Restore integration AI qualification worker isolation

Port the existing R8 owned-worker regression mechanism to the integration tests. Isolate missing-log, unrelated-remediation, and raw-byte mutations; terminate and join workers before cleanup or the following test. Preserve all existing case deadlines, production code, corpus fixtures, raw-byte thresholds, privacy and actionability gates. Cover delayed, rejected, cancelled, and timed-out mutation lifetimes.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 4747f826-8c83-495d-80df-3d1168662e10

* test(rush): join integration watch fixtures before teardown

Replay the accepted 7c4e9f39ccc7d753d099ddef2074fb83a3619e5b shar…
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.

3 participants