Hacktoberfest 2026: los issues que los mantenedores marcaron para octubre, abiertos y aptos para principiantes. Explorar issues de Hacktoberfest

[rush] Rush Reporter Overhaul

Abierto
#5,858 8 comentarios 0 reacciones 1 asignado Ver en GitHub

Los mantenedores suelen responder en 1 día

@TheLarkInn ya está trabajando en esto.

Desde el 2/7/2026.

Evaluación

Este issue todavía no se ha evaluado.

Descripción

needs design

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/rush-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
  • Add @rushstack/rush-reporter as a dependency of rush-lib and apps/rush (RFC §5.1)
  • Generate the frozen bootstrap-envelope encoder + protocol-major constant into the zero-dependency install-run-rush build (RFC §5.1)
Bootstrap prelude — install-run-rush (Phase 2)
  • Add the two-stage prelude: parse early controls and buffer Rush-owned startup events to the handoff file before rush-lib loads (RFC §5.5)
  • Publish the handoff-file path via env var for the frontend to replay
Frontend host — apps/rush (Phase 2)
  • Create the authoritative ReporterManager before version selection; replay then delete the bootstrap handoff (RFC §4.3)
  • Install cross-version compatibility adapters (new-frontend/old-engine, old-frontend/new-engine) keeping legacy rendering visible
Engine integration — rush-lib (Phases 3–4)
  • Expose the RushSession event sink + scoped producers to actions and plugins (RFC §5.3)
  • Emit shadow structured lifecycle + diagnostic events with no output change; validate telemetry + exit-code parity (Phase 3)
  • Replace StreamCollator in OperationExecutionManager with raw semantic operation events, gated on the new reporter path (RFC §5.13)
  • Register CLI controls in ts-command-line: --reporter, --output, --log-level, and the --quiet/--verbose/--debug aliases (RFC §5.6–5.7)
  • Read agentEnvironmentVariables + reporter config from rush.json (RFC §5.8)
  • Wire the telemetry projection subscriber into Rush's telemetry path (RFC §5.17)
  • Derive command exit codes via deriveExitCodeFromEvents (RFC §5.18)
Heft integration (Phase 5)
  • Teach Heft to negotiate the child descriptor and emit NDJSON; retain raw-stream fallback for older Heft (RFC §5.19)
  • Register problem matchers for external/child output recovery (RFC §5.16)
Compatibility & deprecations (Phase 6 — daemon-aligned major)
  • Deprecate, then remove, ILogger.terminal and RushSession.terminalProvider (RFC §5.3)
  • Gate incompatible plugins before apply() with the structured migration diagnostic (RFC §5.3)
  • Bridge legacy AlreadyReportedError sentinels and prohibit new usage (RFC §5.15)
  • Preserve the RUSH_REPORTER=legacy emergency fallback for ≥1 major (RFC §8.2)
Rollout controls & gates (RFC §8.2)
  • Add the experimental repository setting (experiments.json) for pre-major opt-in
  • Pass the deterministic AI-corpus gates before enabling agent auto-selection
  • Flip defaults in the daemon-aligned major: automatic selection on, terminal APIs removed (Phase 6)
Docs & later cleanup (Phase 7)
  • Document migration, verbosity aliases, RUSH_REPORTER, and --reporter/--output
  • (Later major) Remove the legacy renderer after ≥1 major of default use with no blocking canary regressions
  • (Later major) Remove the AlreadyReportedError bridge once ecosystem criteria are met
Lenguaje dominante
TypeScript
Estrellas
6.5k
Forks
708
Merge medio
4 d 7 h
PR fusionados (30 d)
61

Preparar el entorno

Aún no hemos revisado los archivos de configuración de este proyecto. Empieza por su README y consulta nuestra guía para la primera contribución para los pasos generales.

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de microsoft/rushstack

Todos los issues de microsoft/rushstack

Issues similares

Más issues de TypeScript

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.