Some Issues w/ Rush Terminal Reporting today:
- We have no reporter system in place.
- AI models struggle to work with rush for a variety of reasons
- Long running processes occupying the foreground
- Terminal output is super verbose by default - eats up lots of the default context window
- Error messages don't provide the best context or assistance (for both users and agents)
Plan:
- Most linting and coverage tools have a
--reporter feature which customizes output based on where and how it is being run (ci, local machine, even OS specific). Leverage COPILOT_CLI env variable to auto trigger an AI reporter system --reporter=ai that will provide agent-optimized terminal feedback. Based on eval's we can tweak the format to be JSON, Plaintext, Markdown, etc. and determine the level of verbosity (or not) that works best for agents.
- Once we have a
--reporter system, drastically reduce the default reporter output for all rush <command name> commands to minimal. P0 would be to get rid of the long diagnostic feedback of rush build and replace with 3 things consuming no more than a few lines:
- Spinner/progress bar to indicate progress
- One line dynamic activity marquee that reassures users that the command is still running. (What project currently getting built, etc)
- One line result with standard exit code and output
- Errors get migrated to have a new hierarchy that both the AI and default reporters can respond/visualize in specific ways
📦 Implementation status (updated 2026-07-15)
The RFC (specs/2026-07-12-rush-reporter-overhaul.md) and the standalone @rushstack/reporter public-beta package (28/28 features) have landed as a 6-PR stack:
| PR |
Phase |
| #5865 |
1 · Contracts & baselines (package scaffold, event envelope, producer API, diagnostics, NDJSON protocol, ReporterManager, goldens) |
| #5866 |
2 · Bootstrap & compatibility adapters |
| #5867 |
3 · Shadow structured emission (session, lifecycle, telemetry, exit codes) |
| #5868 |
4 · Opt-in reporters (default/plaintext/json/ai/file/legacy, selection, StreamCollator replacement, problem matchers) |
| #5869 |
5 · Heft protocol track |
| #5870 |
6 · Performance budgets & daemon-aligned major default flip |
⚠️ Not yet enabled in the live CLI. The package is standalone — nothing in rush-lib/apps/rush imports it yet, so rush build still renders through the legacy StreamCollator. The P0 3-line default (spinner + activity marquee + result) described above ships when the rollout steps below are complete.
✅ Remaining work to enable the new reporting system
Wire the package into the toolchain
Bootstrap prelude — install-run-rush (Phase 2)
Frontend host — apps/rush (Phase 2)
Engine integration — rush-lib (Phases 3–4)
Heft integration (Phase 5)
Compatibility & deprecations (Phase 6 — daemon-aligned major)
Rollout controls & gates (RFC §8.2)
Docs & later cleanup (Phase 7)
Some Issues w/ Rush Terminal Reporting today:
Plan:
--reporterfeature which customizes output based on where and how it is being run (ci, local machine, even OS specific). LeverageCOPILOT_CLIenv variable to auto trigger an AI reporter system--reporter=aithat will provide agent-optimized terminal feedback. Based on eval's we can tweak the format to be JSON, Plaintext, Markdown, etc. and determine the level of verbosity (or not) that works best for agents.--reportersystem, drastically reduce the default reporter output for allrush <command name>commands to minimal. P0 would be to get rid of the long diagnostic feedback ofrush buildand replace with 3 things consuming no more than a few lines:📦 Implementation status (updated 2026-07-15)
The RFC (
specs/2026-07-12-rush-reporter-overhaul.md) and the standalone@rushstack/reporterpublic-beta package (28/28 features) have landed as a 6-PR stack:ReporterManager, goldens)default/plaintext/json/ai/file/legacy, selection, StreamCollator replacement, problem matchers)✅ Remaining work to enable the new reporting system
Wire the package into the toolchain
@rushstack/reporteras a dependency ofrush-libandapps/rush(RFC §5.1)install-run-rushbuild (RFC §5.1)Bootstrap prelude —
install-run-rush(Phase 2)rush-libloads (RFC §5.5)Frontend host —
apps/rush(Phase 2)ReporterManagerbefore version selection; replay then delete the bootstrap handoff (RFC §4.3)Engine integration —
rush-lib(Phases 3–4)RushSessionevent sink + scoped producers to actions and plugins (RFC §5.3)StreamCollatorinOperationExecutionManagerwith raw semantic operation events, gated on the new reporter path (RFC §5.13)ts-command-line:--reporter,--output,--log-level, and the--quiet/--verbose/--debugaliases (RFC §5.6–5.7)agentEnvironmentVariables+ reporter config fromrush.json(RFC §5.8)deriveExitCodeFromEvents(RFC §5.18)Heft integration (Phase 5)
Compatibility & deprecations (Phase 6 — daemon-aligned major)
ILogger.terminalandRushSession.terminalProvider(RFC §5.3)apply()with the structured migration diagnostic (RFC §5.3)AlreadyReportedErrorsentinels and prohibit new usage (RFC §5.15)RUSH_REPORTER=legacyemergency fallback for ≥1 major (RFC §8.2)Rollout controls & gates (RFC §8.2)
experiments.json) for pre-major opt-inDocs & later cleanup (Phase 7)
RUSH_REPORTER, and--reporter/--outputAlreadyReportedErrorbridge once ecosystem criteria are met