Skip to content

[rush reporter][R5] Ship the feature-flagged operation stream demo #5978

Description

Parent: #5858

Blocked by: #5975, #5976

Goal

Deliver the first end-to-end, demoable Rush reporter path for direct rush build invocations, fully reversible behind opt-in controls.

Approach

Reuse the existing OperationGraph.eventSink/OperationExecutionRecord hooks to adapt scheduler activity into OperationStreamEmitter semantic events. Do not rewrite scheduling. While the opt-in is disabled, retain the exact StreamCollator path. While enabled, keep any collator plumbing needed internally but route its destination to a sink that cannot produce duplicate terminal output; the selected reporters become the sole visible presentation owners. Remove the primary-path collator only after parity is proven.

Scope

  • Emit phase-aware operation registration, status transitions, raw stdout/stderr chunks, stream close, completion, and aggregate command-result events.
  • Wire the built-in default, plaintext, ai, json, file, and legacy reporters for the direct frontend path.
  • Demonstrate the compact default reporter (spinner/activity/result) and always-on full-detail file.
  • Preserve detailed grouping in plaintext/file reporters and keep problem-matcher input uncollated.
  • Cover success, cache hit, warning, failure, blocked operation, cancellation, and watch iteration behavior.

Acceptance criteria

  • Flag off: representative legacy golden output is byte-for-byte unchanged.
  • Flag on: reporters are the only visible writers; no duplicated or lost operation chunks.
  • The default interactive demo stays within the intended compact activity/result presentation and points to the full log.
  • Plaintext/file output reconstructs operation grouping from raw events.
  • AI output is remediation-first and includes the absolute full-log path on failure.
  • A one-command demo fixture documents both legacy and opt-in invocations.
  • The opt-in can be disabled without reverting code.

DAG

This is the demo milestone. Unblocks R7, R8, and R10.

Part of #5858.

Activity

  1. TheLarkInn commented on Aug 28, 2026

    @TheLarkInn
    MemberAuthor

    R5 independent review/integration status (2026-08-28): implementation defects were fixed and pushed to the existing stacked branches.

    • Add feature-flagged operation event adapter #5996: ac92280 fixes sharded project x phase aggregation, lossless pre-normalization chunks, cache output capture, and hook-failure finalization.
    • Add direct Rush reporter demo path #5997: e61332b fixes stdout ownership for command JSON, legacy fallback for older engines, bounded file/plaintext spooling, watch error visibility, artifact completeness, TTY width handling, AI parser-error context, and expands the self-checking demo.
    • Validation: affected builds passed; reporter/rush-lib/apps-rush tests passed 304/773/28; rush check and rush change --verify --no-fetch passed; legacy, plaintext, JSON, AI, file, quiet, failure, help, command-JSON, CI, and real TTY demos passed. The demo proves same-invocation raw chunk reconstruction with one visible writer; RUSH_REPORTER=legacy help output is byte-identical to flag-off, and deterministic operation tests preserve exact flag-off build bytes.

    Blocked from merge: the sequential chain #5985 -> #5986 -> #5987 -> #5989 -> #5988 -> #5991 -> #5992 -> #5996 -> #5997 is still open. #5985 has green CI but requires review; #5986 has green CI and no review; #5987 onward currently have only CLA checks and no approvals. #5996/#5997 remain correctly stacked, mergeable, and auto-merge disabled. R6 #5993 remains excluded.

  2. TheLarkInn commented on Aug 28, 2026

    @TheLarkInn
    MemberAuthor

    Coordination correction: #5997 is no longer DIRTY. It was replayed onto exact #5996 tip ac92280377966dc0da67ec6972ea086219abfebb and force-pushed with an explicit old-SHA lease. Final #5997 tip is e30aa365e5527213bf91ef64b8f8171e3357cc07; GitHub reports MERGEABLE/CLEAN, the 31-file R5B slice is byte-identical to the reviewed pre-restack diff, and auto-merge remains disabled. Combined tests, expanded demo, rush check, and change verification passed after the rewrite. R7A has been instructed to fetch and base only its R7 slice on this exact finalized tip.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementThe issue is asking for a new feature or design change

    Type

    No type

    Projects

    • Status
      Needs triage

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions