Integrate negotiated Heft child reporting - #6000
Integrate negotiated Heft child reporting#6000Sean Larkin (TheLarkInn) wants to merge 8 commits into
Conversation
|
Independent Findings fixed in 1f910c2
Validation
There are no review threads to resolve. #6000 remains stacked on open #5997 with auto-merge disabled. Merge is blocked until the ancestor chain reaches |
|
Combined deep review of current head
|
e30aa36 to
7159901
Compare
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: d6318e80-5da9-4858-a147-817e8692f10e
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: d6318e80-5da9-4858-a147-817e8692f10e
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: d6318e80-5da9-4858-a147-817e8692f10e
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: d6318e80-5da9-4858-a147-817e8692f10e
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: d6318e80-5da9-4858-a147-817e8692f10e
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: d6318e80-5da9-4858-a147-817e8692f10e
1f910c2 to
3a89633
Compare
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: d6318e80-5da9-4858-a147-817e8692f10e
|
Combined review findings are fixed at
Validation passed for reporter, rush-lib, Rush, focused Heft, cross-version and malformed fixtures, EPIPE and cleanup regressions, the reporter demo, Head is pending review and CI. Auto-merge remains disabled. |
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: d6318e80-5da9-4858-a147-817e8692f10e
|
Round-three restack and final trust-boundary review are complete at
Final validation against
Auto-merge remains disabled while #5997 and its ancestors are open. |
|
Final combined review of Dismissible low follow-on: reconstruct |
Part of #5980
Stack
Parent: #5997 (
copilot/reporter-r5b-demo-reporters)This PR is based directly on the latest R5B demo tip and intentionally excludes the parallel R6 #5993 bootstrap work. Auto-merge remains disabled while stack ancestors are open.
Negotiated Heft reporting
Rush now allocates a pair of private inherited descriptors for operation children: one carries child-to-parent NDJSON events and the other returns the parent hello acknowledgement. The handshake negotiates protocol major, optional capabilities, required features, and parent-owned reporter context (
reporter, log level, color, and terminal width).Compatible Heft versions:
heft-child-events-v1andreporter-context-v1;externalOutputand structured diagnostics without selecting or constructing the parent's reporters;sourceSequence;The Heft-side bootstrap uses a node-only frozen wire client rather than a runtime dependency on
@rushstack/rush-reporter, avoiding a Heft/self-hosting dependency cycle. It activates only when Rush supplies both private descriptors; direct standalone Heft behavior is unchanged.Fallback and problem matchers
Older Heft and opaque external children continue through ordered raw stdout/stderr. Missing or capability-incompatible negotiation falls back without losing output. Unsupported protocol majors or required features produce
RUSH_PROTOCOL_UPDATE_REQUIRED; malformed, oversized, or truncated streams produceRUSH_PROTOCOL_INVALID_CHILD_STREAM.Raw output is published before matcher diagnostics. Matchers consume ANSI-normalized copies keyed independently by operation, child record, and stdout/stderr stream, retain bounded partial lines, cap duplicates, and never mutate, suppress, or reorder the source output. They are disabled only after
heft-child-events-v1is actually accepted, preventing duplicate recovery when structured diagnostics exist.Validation
rush build --only @rushstack/heft --only @rushstack/rush-reporter --only @microsoft/rush-lib --only @microsoft/rush --verbosenode apps/rush/src/test/sandbox/reporter-demo/run.mjsrush checkrush change --verify --no-fetchCoverage includes new Rush + new Heft, old/capability-less child fallback, unsupported major/required features, unknown optional and required events, malformed/truncated/oversized records, descriptor close and child crash, stdout/stderr interleaving, UTF-8 chunk limits,
sourceSequence, request/session/operation correlation, privacy, matcher recovery and duplicate caps, sharded operations, warning status propagation, and parent context.Non-goals
install-run-rushbootstrap handoff or R6 ownership ([rush reporter][R6A] Add bootstrap handoff and compatibility adapters #5993);