[rush reporter][R5] Ship the feature-flagged operation stream demo

Open
#5,978 2 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Assessment

Difficulty
5/5
Estimated time
Over a week
Newbie friendliness
35/100
Issue type
Feature
Clarity
Mostly clear
Activity status
Active
Tech stack
nodejs, typescript

Research direction

Start by tracing the named OperationGraph.eventSink and OperationExecutionRecord hooks into OperationStreamEmitter, then compare the existing StreamCollator path and built-in reporters. Use the direct rush build entry point and the one-command demo fixture to verify legacy and opt-in behavior. Done means parity when disabled, complete event coverage without duplicate output, and the documented reporter demonstrations pass.

Written by the indexing model from the issue text.

Description

enhancement

Parent: #5858

Blocked by: #5975, #5976

Goal

Deliver the first end-to-end, demoable Rush reporter path for direct rush build invocations, fully reversible behind opt-in controls.

Approach

Reuse the existing OperationGraph.eventSink/OperationExecutionRecord hooks to adapt scheduler activity into OperationStreamEmitter semantic events. Do not rewrite scheduling. While the opt-in is disabled, retain the exact StreamCollator path. While enabled, keep any collator plumbing needed internally but route its destination to a sink that cannot produce duplicate terminal output; the selected reporters become the sole visible presentation owners. Remove the primary-path collator only after parity is proven.

Scope

  • Emit phase-aware operation registration, status transitions, raw stdout/stderr chunks, stream close, completion, and aggregate command-result events.
  • Wire the built-in default, plaintext, ai, json, file, and legacy reporters for the direct frontend path.
  • Demonstrate the compact default reporter (spinner/activity/result) and always-on full-detail file.
  • Preserve detailed grouping in plaintext/file reporters and keep problem-matcher input uncollated.
  • Cover success, cache hit, warning, failure, blocked operation, cancellation, and watch iteration behavior.

Acceptance criteria

  • Flag off: representative legacy golden output is byte-for-byte unchanged.
  • Flag on: reporters are the only visible writers; no duplicated or lost operation chunks.
  • The default interactive demo stays within the intended compact activity/result presentation and points to the full log.
  • Plaintext/file output reconstructs operation grouping from raw events.
  • AI output is remediation-first and includes the absolute full-log path on failure.
  • A one-command demo fixture documents both legacy and opt-in invocations.
  • The opt-in can be disabled without reverting code.

DAG

This is the demo milestone. Unblocks R7, R8, and R10.

Part of #5858.

Dominant language
TypeScript
Stars
6.5k
Forks
708
Avg merge
5d 19h
Merged PRs (30d)
48

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from microsoft/rushstack

All issues in microsoft/rushstack

Similar issues

More TypeScript issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.