Skip to content

Feature: machine-readable run report (JSON) plus local run history with previous-run deltas #3543

Description

@thomhurst

Category: feature — Breaking: no

PipelineSummary exists only in-process (Engine/Executors/PipelineSummaryFactory.cs); no code serializes it to disk. The estimated-times store keeps only the latest duration per module (single overwritten file in FileSystemModuleEstimatedTimeProvider), so no trend data survives. IModuleResultRepository ships NoOp-only. Precedent: Gradle build scans, Bazel BEP, GitHub check runs.

Proposal: builder.WriteRunReport("artifacts/run-report.json") (auto-enabled in detected CI): schema-versioned JSON with modules, statuses, durations, skip reasons, exception details, command counts — consumable by dashboards and cross-run tooling ("look across multiple runs for job output"). Add IRunHistoryStore with a local default retaining the last N reports, and render an end-of-run delta column ("BuildModule 2m10s, +32s vs previous"). Distributed serialization helpers already cover the tricky types. Perf: one serialize at pipeline end; history pruning bounded at N files.

Part of #3239 (round 2).

Metadata

Metadata

Assignees

No one assigned

    Labels

    P2Medium: improvements and polish - after P1enhancementNew feature or request

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions