Integrate negotiated Heft child reporting - #6000
Integrate negotiated Heft child reporting#6000Sean Larkin (TheLarkInn) wants to merge 9 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
1f910c2 to
3a89633
Compare
|
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. |
|
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 |
97f807e to
925171c
Compare
928b60e to
3cc663e
Compare
925171c to
0aa7975
Compare
3cc663e to
8314222
Compare
0aa7975 to
a96364c
Compare
8314222 to
56c14f1
Compare
a96364c to
ca7fd4f
Compare
56c14f1 to
3125def
Compare
ca7fd4f to
1c20265
Compare
3125def to
7f71629
Compare
9b83623 to
ce1df30
Compare
7f71629 to
b8b5b0b
Compare
ce1df30 to
c9242d5
Compare
b8b5b0b to
6c295f4
Compare
c9242d5 to
37307c7
Compare
6c295f4 to
21f8ba7
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
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
21f8ba7 to
b3ae871
Compare
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);