pub struct Report {
pub analysis: Analysis,
pub findings: Vec<Finding>,
pub green_summary: GreenSummary,
pub quality_gate: QualityGate,
pub per_endpoint_io_ops: Vec<PerEndpointIoOps>,
pub correlations: Vec<CrossTraceCorrelation>,
pub warnings: Vec<String>,
pub warning_details: Vec<Warning>,
pub acknowledged_findings: Vec<AcknowledgedFinding>,
pub binary_version: String,
pub disclosure_waste: Option<DisclosureWaste>,
}Expand description
A complete analysis report.
Fields§
§analysis: Analysis§findings: Vec<Finding>§green_summary: GreenSummary§quality_gate: QualityGate§per_endpoint_io_ops: Vec<PerEndpointIoOps>Raw I/O operation count per (service, endpoint). Populated by
the pipeline regardless of [green] enabled, so the diff
subcommand works even with green scoring off. Sorted by service
then endpoint for deterministic JSON output. Empty when no
traces were analyzed.
Lives on Report rather than on GreenSummary because it is a
raw telemetry counter, not a green metric, and is filled in
regardless of the green configuration.
correlations: Vec<CrossTraceCorrelation>Cross-trace temporal correlations produced by the daemon’s
correlator. Always empty in the batch pipeline (the correlator
runs over a rolling window that batch mode does not maintain).
The HTML dashboard’s Correlations tab lights up when this field
is non-empty, i.e. when a daemon-produced Report is fed into
perf-sentinel report --input <daemon.json>.
warnings: Vec<String>Snapshot- or analysis-level warnings surfaced to consumers. The
daemon’s /api/export/report cold-start path populates this with
"daemon has not yet processed any events" so consumers can
distinguish “daemon is empty” from “daemon emitted zero findings”
without resorting to a 5xx HTTP status. Empty in CLI batch
output. Additive on pre-0.5.16 baselines via skip_serializing_if.
warning_details: Vec<Warning>Structured snapshot warnings (0.5.19+). Coexists with the legacy
warnings: Vec<String> field. Each entry carries a stable
kind (suitable for alerting / aggregation) and a
human-readable message. Renderers prefer this field when
non-empty, fall back to warnings otherwise. Additive on
pre-0.5.19 baselines via skip_serializing_if.
acknowledged_findings: Vec<AcknowledgedFinding>Findings filtered out by the user’s acknowledgments file
(.perf-sentinel-acknowledgments.toml), paired with the matching
ack metadata. Cleared from the wire payload by default; the CLI
only retains it when --show-acknowledged is set so audit output
stays opt-in. Additive on pre-0.5.17 baselines via serde(default).
binary_version: StringCARGO_PKG_VERSION of the binary that wrote this report. Empty
on reports written by binaries that predate this field.
disclosure_waste: Option<DisclosureWaste>Avoidable energy/carbon tiers (operator + canonical threshold), set
only by the daemon archive path (the periodic aggregator reads them).
None in batch and live outputs. Additive via serde(default).
Trait Implementations§
Source§impl<'de> Deserialize<'de> for Report
impl<'de> Deserialize<'de> for Report
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Auto Trait Implementations§
impl Freeze for Report
impl RefUnwindSafe for Report
impl Send for Report
impl Sync for Report
impl Unpin for Report
impl UnsafeUnpin for Report
impl UnwindSafe for Report
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
Source§impl<T> FutureExt for T
impl<T> FutureExt for T
Source§fn with_context(self, otel_cx: Context) -> WithContext<Self>
fn with_context(self, otel_cx: Context) -> WithContext<Self>
Source§fn with_current_context(self) -> WithContext<Self>
fn with_current_context(self) -> WithContext<Self>
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
Source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T in a tonic::Request