[rushd][WS0] Upstream engine prerequisites (in rush-lib)

Abierto
#5,895 1 comentario 0 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
5/5
Tiempo estimado
Más de una semana
Aptitud para principiantes
25/100
Tipo de issue
Nueva funcionalidad
Claridad
Bastante claro
Estado de actividad
Tranquilo
Stack tecnológico
typescript

Línea de trabajo

Start with dependency #5378 and the committed rush-lib.api.md to understand the stateful IOperationGraph and OperationGraphHooks APIs, then review the listed in-repo plugins and the unchecked acceptance criteria. Done means per-iteration runner lifetime behavior is implemented and validated without regressions; the operation-graph library convergence and migration documentation are follow-up items.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

area:rushd

Land the watch-mode overhaul and adapt in-repo plugins so the engine exposes a stateful, warm-able operation graph the daemon can own.

Depends on: #5378 (provides the stateful IOperationGraph)

Scope

  • Merge the watch-mode overhaul (#5378). Land the stateful IOperationGraph (setEnabledStates, scheduleIterationAsync, executeScheduledIterationAsync, invalidateOperations, abortCurrentIterationAsync, closeRunnersAsync), OperationGraphHooks (onIdle, onExecutionStatesUpdated), IPCOperationRunner, and the reworked ProjectWatcher — replacing the disposable OperationExecutionManager with a graph that persists across iterations.
  • Migrate in-repo plugins. Move CacheableOperationPlugin, ShardedPhaseOperationPlugin, OperationResultSummarizerPlugin, ConsoleTimelinePlugin, PhasedOperationPlugin, IPCOperationRunnerPlugin, rush-serve-plugin, rush-bridge-cache-plugin, and rush-buildxl-graph-plugin onto the new hooks.
  • One warm full-workspace graph. Build the graph over all workspace projects with a client's selection applied as an enabled subset (includeAllProjectsInWatchGraph) so the daemon keeps a single warm graph and scopes it per request.
  • Per-iteration runner lifetime. Lift the persistent-vs-one-shot choice out of static IPCOperationRunnerPlugin construction into a per-iteration host decision — keep hot runners resident for warm projects; tear cold ones down immediately at operation completion.
  • Follow-up (non-blocking). Converge rush-lib's OperationGraph onto the standalone @rushstack/operation-graph library.

Acceptance criteria

  • The stateful IOperationGraph and OperationGraphHooks are merged and exported, with the public API captured in the committed rush-lib.api.md.
  • All existing phased-command and watch-mode behavior is preserved; updated snapshots are intentional and reviewed.
  • Every in-repo plugin compiles and passes its tests against OperationGraphHooks (no plugin depends on a removed/renamed hook except through the optional compat shim in WS5); cache, sharding, summary, and timeline outputs are unchanged.
  • A full-workspace graph can be built once and an arbitrary selection enabled via setEnabledStates without rebuilding; disabled projects stay resident (watchable/invalidatable) but unscheduled.
  • The host can choose persist vs one-shot per operation per iteration (default unchanged when unspecified); a non-persistent runner is torn down immediately at its operation's completion, before downstream operations run.
  • (Follow-up, not on the critical path) rush-lib consumes @rushstack/operation-graph with no behavioral change.
  • Breaking hook renames/relocations are recorded in the WS5 migration guide + API changelog; new engine behavior ships opt-in / dead-code until cutover; unit/integration tests green in CI.

Part of #5894.

Lenguaje dominante
TypeScript
Estrellas
6.5k
Forks
708
Merge medio
5 d 7 h
PR fusionados (30 d)
44

Guía de contribución

No hay ninguna guía de contribución indexada para este repositorio

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.