Skip to main content

fallow_output/
lib.rs

1//! Reusable output contract types for fallow.
2//!
3//! This crate owns stable report DTOs and output-format metadata that are not
4//! tied to CLI rendering. Higher-level output assemblers live above this crate
5//! in `fallow-api` or the CLI, while this crate remains the shared typed
6//! boundary those builders and non-CLI consumers can use.
7#![cfg_attr(
8    test,
9    allow(
10        clippy::expect_used,
11        reason = "tests use expect to keep serialization assertions concise"
12    )
13)]
14
15mod audit_brief;
16mod audit_decision_surface;
17mod audit_focus;
18mod audit_routing;
19mod audit_walkthrough;
20mod audit_weakening;
21mod check;
22mod ci_output;
23mod codeclimate;
24mod coverage_envelopes;
25mod diff;
26mod dupes;
27mod feature_flags;
28mod fix;
29mod format;
30mod health;
31mod health_actions;
32mod health_coverage;
33mod health_coverage_gaps;
34mod health_coverage_intelligence;
35mod health_css;
36mod health_diagnostics;
37mod health_findings;
38mod health_grouped;
39mod health_report;
40mod health_runtime_coverage;
41mod health_scores;
42mod health_targets;
43mod health_trends;
44mod health_vital_signs;
45mod impact;
46mod inspect_envelopes;
47mod issue_contract;
48mod json_paths;
49mod list_envelopes;
50mod next_steps;
51mod report_contract;
52mod review_envelopes;
53mod root_envelopes;
54mod sarif;
55mod security;
56mod trace_envelopes;
57
58pub use audit_brief::{
59    CoordinationGapFact, DiffTriage, GraphFacts, ImpactClosureFacts, PartitionFacts,
60    REVIEW_BRIEF_SCHEMA_VERSION, ReviewBriefOutput, ReviewBriefSchemaVersion,
61    ReviewBriefSubtractSections, ReviewDeltas, ReviewEffort, ReviewUnitFact, RiskClass,
62    StandardReviewBriefOutput, build_review_brief_json_output,
63    serialize_decision_surface_json_output, serialize_review_brief_json_output,
64    serialize_walkthrough_guide_json_output, serialize_walkthrough_validation_json_output,
65};
66pub use audit_decision_surface::{
67    ALL_CATEGORIES, DECISION_SURFACE_SCHEMA_VERSION, Decision, DecisionAction, DecisionActionType,
68    DecisionCategory, DecisionSurface, DecisionSurfaceOutput, DecisionSurfaceSchemaVersion,
69    DecisionWithActions, TruncationNote, build_decision_surface_output, decision_actions,
70    suppress_comment,
71};
72pub use audit_focus::{ConfidenceFlag, FocusLabel, FocusMap, FocusScore, FocusUnit};
73pub use audit_routing::{RoutingFacts, RoutingUnit};
74pub use audit_walkthrough::{
75    AcceptedJudgment, AgentJudgment, AgentSchema, AgentWalkthrough, ChangeAnchor, DirectionUnit,
76    INJECTION_NOTE, RejectedJudgment, ReviewDirection, StandardWalkthroughGuide, WalkthroughGuide,
77    WalkthroughValidation, agent_schema,
78};
79pub use audit_weakening::{WeakeningKind, WeakeningSignal};
80pub use check::{
81    CHECK_SCHEMA_VERSION, CheckGroupedEntry, CheckGroupedOutput, CheckOutput, CheckOutputInput,
82    GroupByMode, apply_config_fixable_to_duplicate_exports, build_check_output,
83    build_check_summary, serialize_check_grouped_json_output, serialize_check_json_output,
84};
85pub use ci_output::{
86    CiIssue, CiProvider, GroupedReviewIssues, MARKER_PREFIX_V2, MARKER_SUFFIX_V2,
87    MAX_COMMENT_BODY_BYTES, PROJECT_LEVEL_RULE_IDS, PrCommentRenderInput, ReviewCommentRenderInput,
88    ReviewEnvelopeRenderInput, ReviewEnvelopeRenderResult, ReviewEnvelopeTruncation,
89    ReviewGitlabDiffRefs, cap_body_with_marker, command_title, composite_fingerprint, escape_md,
90    github_check_conclusion, group_review_issues_by_path_line, is_project_level_rule,
91    issues_from_codeclimate, issues_from_codeclimate_issues, render_pr_comment,
92    render_review_comment_for_group, render_review_envelope, review_label_from_codeclimate,
93    summary_fingerprint, summary_label,
94};
95pub use codeclimate::{
96    CodeClimateAnnotationField, CodeClimateIssue, CodeClimateIssueInput, CodeClimateIssueKind,
97    CodeClimateLines, CodeClimateLocation, CodeClimateOutput, CodeClimateSeverity,
98    annotate_codeclimate_issues, build_codeclimate_issue, codeclimate_fingerprint_hash,
99    codeclimate_issues_to_value,
100};
101pub use coverage_envelopes::{
102    CoverageAnalyzeOutput, CoverageAnalyzeSchemaVersion, CoverageSetupFileToEdit,
103    CoverageSetupFramework, CoverageSetupMember, CoverageSetupOutput, CoverageSetupPackageManager,
104    CoverageSetupRuntimeTarget, CoverageSetupSchemaVersion, CoverageSetupSnippet,
105    build_coverage_analyze_output, serialize_coverage_analyze_json_output,
106    serialize_coverage_setup_json_output,
107};
108pub use diff::{
109    DiffIndex, MAX_ADDED_LINES, MAX_DIFF_BYTES, parse_new_hunk_start, relative_to_diff_path,
110};
111pub use dupes::{
112    CloneFamilyAction, CloneFamilyActionType, CloneGroupAction, CloneGroupActionType,
113    DUPES_SUPPRESS_COMMENT, DUPES_SUPPRESS_DESCRIPTION, DupesOutput, DupesOutputInput,
114    build_dupes_output, clone_family_actions, clone_group_actions, serialize_dupes_json_output,
115};
116pub use fallow_types::envelope;
117pub use fallow_types::output;
118pub use fallow_types::output_dead_code;
119pub use fallow_types::output_health;
120pub use feature_flags::{
121    FeatureFlagAction, FeatureFlagActionType, FeatureFlagConfidence, FeatureFlagDeadCodeOverlap,
122    FeatureFlagFinding, FeatureFlagKind, FeatureFlagsConfidenceMeta, FeatureFlagsKindMeta,
123    FeatureFlagsMeta, FeatureFlagsMetaDetails, FeatureFlagsOutput, FeatureFlagsOutputInput,
124    build_feature_flags_output, feature_flags_meta, serialize_feature_flags_json_output,
125};
126pub use fix::{
127    FixJsonOutput, FixJsonOutputInput, build_fix_json_output, count_applied_fixes,
128    count_reported_fix_skips, serialize_fix_json_output,
129};
130pub use format::OutputFormat;
131pub use health::{
132    HealthJsonOutputInput, HealthOutput, HealthOutputInput, build_health_output,
133    serialize_health_json_output,
134};
135pub use health_actions::HealthActionsMeta;
136pub use health_coverage::CoverageModel;
137pub use health_coverage_gaps::{
138    CoverageGapSummary, CoverageGaps, UntestedExport, UntestedExportFinding, UntestedFile,
139    UntestedFileFinding,
140};
141pub use health_coverage_intelligence::{
142    CoverageIntelligenceAction, CoverageIntelligenceConfidence, CoverageIntelligenceEvidence,
143    CoverageIntelligenceFinding, CoverageIntelligenceMatchConfidence,
144    CoverageIntelligenceRecommendation, CoverageIntelligenceReport,
145    CoverageIntelligenceSchemaVersion, CoverageIntelligenceSignal, CoverageIntelligenceSummary,
146    CoverageIntelligenceVerdict,
147};
148pub use health_css::{
149    CssAnalyticsReport, CssAnalyticsSummary, CssBlockOccurrence, CssCandidateAction,
150    CssCandidateActionType, CssDuplicateBlock, CssFileAnalytics, CssNotationConsistency,
151    CssNotationCount, ScopedUnusedClasses, TailwindArbitraryValue, UndefinedKeyframes,
152    UnreferencedCssClass, UnreferencedKeyframes, UnresolvedClassReference, UnusedAtRule,
153    UnusedAtRuleKind, UnusedFontFace, UnusedThemeToken,
154};
155pub use health_diagnostics::{
156    FrameworkHealthDetector, FrameworkHealthDetectorStatus, FrameworkHealthDiagnostics,
157    HealthTimings,
158};
159pub use health_findings::{
160    HealthActionContext, HealthActionOptions, HealthFinding, HotspotFinding,
161    RefactoringTargetFinding, build_health_finding_actions,
162};
163pub use health_grouped::{HealthGroup, HealthGrouping};
164pub use health_report::HealthReport;
165pub use health_runtime_coverage::{
166    RUNTIME_STALE_AFTER_DAYS, RuntimeCoverageAction, RuntimeCoverageBlastRadiusEntry,
167    RuntimeCoverageCaptureQuality, RuntimeCoverageConfidence, RuntimeCoverageDataSource,
168    RuntimeCoverageDiscriminators, RuntimeCoverageEvidence, RuntimeCoverageFinding,
169    RuntimeCoverageHotPath, RuntimeCoverageImportanceEntry, RuntimeCoverageMessage,
170    RuntimeCoverageProvenance, RuntimeCoverageReport, RuntimeCoverageReportVerdict,
171    RuntimeCoverageRiskBand, RuntimeCoverageSchemaVersion, RuntimeCoverageSignal,
172    RuntimeCoverageSummary, RuntimeCoverageVerdict, RuntimeCoverageWatermark,
173};
174pub use health_scores::{
175    COGNITIVE_EXTRACTION_THRESHOLD, ComplexityViolation, ComponentRollup, ContributorEntry,
176    ContributorIdentifierFormat, CoverageSource, CoverageSourceConsistency, CoverageTier,
177    DEFAULT_COGNITIVE_CRITICAL, DEFAULT_COGNITIVE_HIGH, DEFAULT_CRAP_CRITICAL, DEFAULT_CRAP_HIGH,
178    DEFAULT_CYCLOMATIC_CRITICAL, DEFAULT_CYCLOMATIC_HIGH, ExceededThreshold, FileHealthScore,
179    FindingSeverity, HEALTH_SCORE_FORMULA_VERSION, HOTSPOT_SCORE_THRESHOLD,
180    HealthConfiguredThresholds, HealthEffectiveThresholds, HealthScore, HealthScorePenalties,
181    HealthSummary, HotspotEntry, HotspotSummary, LargeFunctionEntry, MI_DENSITY_MIN_LINES,
182    OwnershipMetrics, OwnershipState, ReactHookProfile, ThresholdOverrideMetrics,
183    ThresholdOverrideState, ThresholdOverrideStatus, ThresholdSource, compute_finding_severity,
184    letter_grade, summarize_coverage_source_consistency,
185};
186pub use health_targets::{
187    CloneSiblingEvidence, Confidence, ContributingFactor, DirectCallerEvidence,
188    DirectCallerSymbolEvidence, EffortEstimate, EvidenceFunction, RecommendationCategory,
189    RefactoringTarget, TargetEvidence, TargetThresholds,
190};
191pub use health_trends::{HealthTrend, TrendCount, TrendDirection, TrendMetric, TrendPoint};
192pub use health_vital_signs::{
193    RenderFanInTopComponent, RiskProfile, SNAPSHOT_SCHEMA_VERSION, VitalSigns, VitalSignsCounts,
194    VitalSignsSnapshot,
195};
196pub use impact::{
197    ContainmentEvent, CrossRepoImpactReport, CrossRepoImpactSchemaVersion, CrossRepoProjectEntry,
198    CrossRepoTotals, EnabledSource, ImpactCounts, ImpactReport, ImpactReportSchemaVersion,
199    ImpactTrendDirection, ResolutionEvent, TrendSummary, serialize_cross_repo_impact_json_output,
200    serialize_impact_json_output,
201};
202pub use inspect_envelopes::{
203    ExplainOutput, InspectEvidence, InspectEvidenceScope, InspectEvidenceSection,
204    InspectFileIdentity, InspectIdentity, InspectOutput, InspectSectionStatus,
205    InspectSymbolIdentity, InspectTargetDescriptor, serialize_explain_json_output,
206    serialize_inspect_json_output,
207};
208pub use issue_contract::{
209    ACTIONS_AUTO_FIXABLE_FIELD_DEFINITION, ACTIONS_FIELD_DEFINITION, CHECK_DOCS,
210    CODECLIMATE_RESULT_CODES, IssueOutputContract, TsAliasMeta, check_meta, dead_code_docs_url,
211    issue_output_contract_by_code, issue_output_contracts, rule_docs_url,
212};
213pub use json_paths::{normalize_uri, strip_root_prefix};
214pub use list_envelopes::{
215    BoundariesListLogicalGroup, BoundariesListRule, BoundariesListZone, BoundariesListing,
216    ListBoundariesOutput, ListEntryPointOutput, ListOutput, ListPluginOutput, WorkspaceInfo,
217    WorkspacesOutput, serialize_list_boundaries_json_output, serialize_list_workspaces_json_output,
218};
219pub use next_steps::{
220    AuditNextStepsInput, CombinedNextStepsInput, DeadCodeNextStepsInput, DupesNextStepsInput,
221    HealthNextStepsInput, ImpactDigestCounts, TraceUnusedExportInput, build_audit_next_steps,
222    build_audit_next_steps_input, build_combined_next_steps, build_dead_code_next_steps,
223    build_dupes_next_steps, build_health_next_steps, build_health_next_steps_input,
224    impact_digest_summary, trace_unused_export_input,
225};
226pub use report_contract::{
227    COVERAGE_ANALYZE_DOCS, COVERAGE_SETUP_DOCS, DUPES_DOCS, HEALTH_DOCS, SECURITY_DOCS,
228    SecurityRuleMeta, coverage_analyze_meta, coverage_setup_meta, dupes_meta, health_meta,
229    security_meta,
230};
231pub use review_envelopes::{
232    GitHubReviewComment, GitHubReviewSide, GitLabReviewComment, GitLabReviewPosition,
233    GitLabReviewPositionType, MARKER_REGEX_FLAGS_V2, MARKER_REGEX_V2, ReviewCheckConclusion,
234    ReviewComment, ReviewEnvelopeEvent, ReviewEnvelopeMeta, ReviewEnvelopeOutput,
235    ReviewEnvelopeSchema, ReviewEnvelopeSummary, ReviewProvider, ReviewReconcileOutput,
236    ReviewReconcileSchema, default_marker_regex, default_marker_regex_flags, is_false,
237    serialize_review_envelope_json_output, serialize_review_reconcile_json_output,
238};
239pub use root_envelopes::{
240    AuditCommand, AuditOutput, CombinedMeta, CombinedOutput, FallowOutput, RootEnvelopeMode,
241    apply_root_kind, attach_telemetry_meta, remove_root_kind, serialize_audit_json_output,
242    serialize_combined_json_output, serialize_json_root_output, serialize_named_json_output,
243};
244pub use sarif::{
245    GHAS_SARIF_FINGERPRINT_KEY, SARIF_FINGERPRINT_KEY, SarifDocumentInput, SarifResultInput,
246    SarifRuleInput, build_sarif_document, build_sarif_result, build_sarif_rule,
247    normalize_sarif_snippet, sarif_finding_fingerprint,
248};
249pub use security::{
250    SecurityBlindSpotFile, SecurityBlindSpotGroup, SecurityBlindSpotsOutput,
251    SecurityBlindSpotsSchemaVersion, SecurityBlindSpotsSummary, SecurityGate, SecurityGateVerdict,
252    SecurityOutput, SecurityOutputConfig, SecurityOutputRulesConfig, SecurityReachabilityCounts,
253    SecurityRuleSeverityConfig, SecurityRuntimeStateCounts, SecuritySchemaVersion,
254    SecuritySeverityCounts, SecuritySummary, SecuritySummaryOutput, SecuritySurvivor,
255    SecuritySurvivorsOutput, SecuritySurvivorsSchemaVersion, SecuritySurvivorsSummary,
256    SecurityUnresolvedCalleeDiagnostics, SecurityUnresolvedCalleeReasonCount,
257    SecurityUnresolvedCalleeSample, SecurityUnresolvedCalleeTopFile, SecurityVerifierVerdict,
258    SecurityVerifierVerdictStatus, build_security_summary,
259    serialize_security_blind_spots_json_output, serialize_security_json_output,
260    serialize_security_summary_json_output, serialize_security_survivors_json_output,
261};
262pub use trace_envelopes::serialize_trace_json_output;