Skip to main content

fallow_output/
lib.rs

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