pub struct SummaryConfig {
pub columns: Vec<String>,
pub row_filters: Vec<String>,
pub aggregates: Vec<AggregateExpr>,
pub show_details: bool,
pub raw: String,
pub metricsql_columns: Vec<(String, String)>,
pub group_by: Vec<String>,
pub state_query: Option<String>,
pub header_notes: Vec<(String, String)>,
}Expand description
Parsed summary report configuration.
Controls which columns, rows, and aggregates appear in the post-run summary table. Parsed from a semicolon-delimited DSL:
"recall; mean(recall) over profile~label; details=hide"Directives:
- Bare words (no
=or(): gauge column filter patterns, comma-separated."all"shows every discovered gauge. filter=<regex>: row filter on activity labels.<func>(<col>) over <key>~<pat>: aggregate expression.details=hide: suppress individual data rows.
Fields§
§columns: Vec<String>Gauge column filter patterns (e.g., ["recall", "precision"]).
Empty means show all discovered gauges.
row_filters: Vec<String>Row filter regex patterns on activity labels.
aggregates: Vec<AggregateExpr>Aggregate expressions to compute after the data rows.
show_details: boolWhether to show individual data rows (default true).
raw: StringRaw source string for diagnostics and future Polydat template detection.
metricsql_columns: Vec<(String, String)>SRD-46 v2: native MetricsQL columns. When non-empty,
summary_command routes through the metricsql renderer
instead of the legacy SQL builder. Each entry is
(column_name, metricsql_expression). Anonymous
single-column form (query: <expr>) lands as
("value", expr).
group_by: Vec<String>Label key the metricsql results are grouped on (becomes
the leftmost column of the rendered table). When empty
AND metricsql_columns is non-empty, the renderer falls
back to a single un-grouped row showing the average value
across all returned series.
Multi-key form: group_by: k, r, optimize_for produces
one table row per distinct tuple — the same series
breakdown the matching plot draws.
state_query: Option<String>SRD-46 — state: <expr>: a per-row COMPLETION test rendered as a word
rather than a number. A row whose expression yields a value is complete;
a row with none is active.
The expression to use is whatever the workload records only at completion, so “has this finished” is answered by the presence of that datum rather than inferred from a progress percentage — a progress gauge can sit below 100 on a row that finished, because the last poll before completion is the value that persists.
header_notes: Vec<(String, String)>Per-column header annotations (header <col>: <text>) —
rendered into the column’s header stack under its name, so a
table can carry each column’s DEFINITION (e.g. the SRD-113
designation last(result_success)) where the reader is
already looking.