pub struct ImpactReport {Show 20 fields
pub schema_version: ImpactReportSchemaVersion,
pub enabled: bool,
pub enabled_source: EnabledSource,
pub record_count: usize,
pub meta: Option<Meta>,
pub first_recorded: Option<String>,
pub latest_git_sha: Option<String>,
pub surfacing: Option<ImpactCounts>,
pub trend: Option<TrendSummary>,
pub project_surfacing: Option<ImpactCounts>,
pub project_trend: Option<TrendSummary>,
pub gate_runs: Option<GateRunCounts>,
pub containment_count: usize,
pub recent_containment: Vec<ContainmentEvent>,
pub resolved_total: usize,
pub suppressed_total: usize,
pub recent_resolved: Vec<ResolutionEvent>,
pub attribution_active: bool,
pub onboarding_declined: bool,
pub explicit_decision: bool,
}Expand description
The rendered impact report, derived purely from the store.
Fields§
§schema_version: ImpactReportSchemaVersionOutput-shape version for this report, so JSON consumers have a forward-compat signal independent of the on-disk store version. Always present; bumped only on a breaking change to this report’s wire shape.
enabled: boolWhether impact tracking is active for this project.
enabled_source: EnabledSourceWHY tracking is on or off: project (an explicit per-repo enable/disable
decision), user (the user-global default with no per-repo decision), or
default (off, no per-repo decision and no global default). Combine with
explicit_decision to tell a never-asked off-state (enabled:false,
explicit_decision:false, offer to enable) from a declined-here one
(enabled:false, explicit_decision:true, do not nag).
record_count: usizeNumber of recorded runs in the store.
meta: Option<Meta>_meta block with docs and field definitions, when --explain was
passed.
first_recorded: Option<String>Timestamp of the earliest recorded run; absent with no records.
latest_git_sha: Option<String>Git SHA of the most recent recorded run, so a consumer can tell which
commit the surfacing counts belong to. This is an ABBREVIATED SHA
(git rev-parse --short), so it is for display/correlation only and will
not match a full 40-character SHA from $GITHUB_SHA or the git API
without expansion. None when the latest run had no SHA (not a git repo)
or there are no records yet.
surfacing: Option<ImpactCounts>Counts from the most recent recorded run. These are CHANGED-FILE scoped
(each record comes from a fallow audit run, whose default new-only
gate counts only findings in the changed files of that run), NOT a
whole-project total.
trend: Option<TrendSummary>Trend between the two most recent records. None until two records exist. Trend between the two most recent changed-file records. None until two records exist.
project_surfacing: Option<ImpactCounts>Counts from the most recent whole-project fallow run. WHOLE-PROJECT
scope (not changed-file), so this is the current issue total across the
whole repo, context next to the actionable changed-file surfacing
count. None until a full fallow run has been recorded. v1.6.
project_trend: Option<TrendSummary>Trend between the two most recent whole-project records. Comparable over
time (same whole-project denominator every run), unlike the changed-file
trend. None until two full fallow runs exist. v1.6.
gate_runs: Option<GateRunCounts>Recorded gate runs grouped by source, over the same bounded window of
recorded runs record_count reports. A floor, not a lifetime total, and
absent when no run in that window carries a gate source. Local
provenance, never an adoption metric.
containment_count: usizeLifetime count of commit-gate containment events.
recent_containment: Vec<ContainmentEvent>Most recent containment events (newest last), capped for display.
resolved_total: usizeLifetime count of findings fallow credits as genuinely resolved (code
removed or refactored, never a fallow-ignore). v1.5.
suppressed_total: usizeLifetime count of findings silenced by a newly-added fallow-ignore.
Reported as honest context, never as a win. v1.5.
recent_resolved: Vec<ResolutionEvent>Most recent resolution events (newest last), capped for display. v1.5.
attribution_active: boolWhether per-finding attribution has a baseline yet. False on a freshly upgraded v1 store (no frontier captured), which the renderer uses to show “resolution tracking starts from your next run” instead of a bare zero.
onboarding_declined: boolWhether the local agent onboarding prompt has been explicitly declined. Stored in the user config dir (per project) so agents avoid cross-session nags without writing into the repo.
explicit_decision: boolWhether the user ever made an explicit enable/disable decision for
Impact tracking. enabled: false with explicit_decision: false means
“never asked”; with true it means “asked and declined”. Agents use
this to offer the impact opt-in exactly once per project.