[rush reporter][R3] Emit shadow RushSession lifecycle and diagnostics

Open
#5,976 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Assessment

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

Research direction

Start with the reporter event contract and blocker #5974, then trace RushSession, action and plugin entry points in rush-lib alongside the legacy hooks and AlreadyReportedError path. Review how lifecycle, diagnostics, telemetry, and exit-status events are currently handled. Done means shadow emission and parity tests cover ordering, correlation, telemetry, diagnostics, and all listed result states without changing stdout or stderr.

Written by the indexing model from the issue text.

Description

enhancement

Parent: #5858

Blocked by: #5974

Goal

Connect rush-lib to the reporter event contract in shadow mode, with no visible output change.

Scope

  • Expose a typed reporter event sink and scoped producers through RushSession, actions, and plugins without exposing concrete reporters.
  • Adapt command/session lifecycle, structured diagnostics, telemetry projection, and command-result/exit-status events into the canonical envelope.
  • Keep operation identity phase-aware: an operation is project × phase, not merely a project.
  • Bridge legacy hooks and AlreadyReportedError correlation while the legacy renderer remains authoritative.
  • Add parity tests for event ordering, telemetry fields, diagnostics, and exit status.

Acceptance criteria

  • Shadow emission can be enabled in tests without changing stdout/stderr.
  • First-party lifecycle and diagnostic paths emit stable, correlated envelopes.
  • Actions/plugins receive scoped producer APIs only.
  • Telemetry and derived exit status match legacy behavior for success, warning, failure, cancellation, and internal-error cases.
  • Phase-aware operation identifiers are stable across retries/watch iterations.

DAG

Unblocks R4, R5, and R7.

Part of #5858.

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

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.