[rush reporter][R3] Emit shadow RushSession lifecycle and diagnostics
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
- Domain
- build-system, tooling
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
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
AlreadyReportedErrorcorrelation 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
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from microsoft/rushstack
-
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
-
Difficulty 2/5 1-3 hours Newbie friendliness 65/100
-
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
-
Difficulty 2/5 1-3 hours Newbie friendliness 70/100
-
Difficulty 4/5 3-5 days Newbie friendliness 48/100
All issues in microsoft/rushstack
Similar issues
-
Difficulty 2/5 1-3 hours Newbie friendliness 74/100
ontola/atomic-server#1625 ·
-
bug
Difficulty 2/5 1-3 hours Newbie friendliness 70/100
melgarafael/DeskcommCRM#1451 ·
-
Difficulty 1/5 Under an hour Newbie friendliness 82/100
-
bug via-triage
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
-
bot:ai-assisted component:compact-js status:untriaged
Difficulty 2/5 1-3 hours Newbie friendliness 84/100
midnightntwrk/midnight-sdk#403 ·