pub type CircularDependenciesOutput = CheckOutput;Expand description
Concrete circular-dependency output contract returned by typed runs.
Aliased Type§
pub struct CircularDependenciesOutput {Show 16 fields
pub schema_version: SchemaVersion,
pub version: ToolVersion,
pub elapsed_ms: ElapsedMs,
pub total_issues: usize,
pub entry_points: Option<EntryPoints>,
pub summary: CheckSummary,
pub results: AnalysisResults,
pub baseline_deltas: Option<BaselineDeltas>,
pub baseline: Option<BaselineMatch>,
pub baseline_staleness: Option<BaselineStaleness>,
pub regression: Option<RegressionResult>,
pub gate_outcomes: Option<GateOutcomes>,
pub request_outcomes: Option<RequestOutcomes>,
pub meta: Option<Meta>,
pub workspace_diagnostics: Vec<WorkspaceDiagnostic>,
pub next_steps: Vec<NextStep>,
}Fields§
§schema_version: SchemaVersionDead-code output schema version; currently [CHECK_SCHEMA_VERSION].
version: ToolVersionFallow CLI version that produced this output.
elapsed_ms: ElapsedMsWall-clock analysis duration in milliseconds.
total_issues: usizeTotal findings across all issue arrays; excludes next_steps.
entry_points: Option<EntryPoints>Entry-point totals per source, when the analysis recorded them.
summary: CheckSummaryPer-category finding counts.
results: AnalysisResultsFull analysis results, flattened so each issue array sits at the envelope root.
baseline_deltas: Option<BaselineDeltas>Count deltas against the matched baseline, in baseline runs.
baseline: Option<BaselineMatch>Which baseline snapshot was matched, in baseline runs.
baseline_staleness: Option<BaselineStaleness>This run’s view of the loaded baseline, present only in baseline runs.
Carries the staleness counts, the advisory verdict and gate_trips, the
same boolean --fail-on-stale-baseline exits on, so a CI integration
reads one field instead of restating the rule. Read change_scoped
before dividing matched_entries by baseline_entries: a narrowed run
can report matched_entries: 0 on a healthy baseline.
regression: Option<RegressionResult>Regression verdict against the baseline, in --fail-on-regression runs.
gate_outcomes: Option<GateOutcomes>The verdict of every gate this run evaluated, keyed by name. The CLI
always emits it, with the command’s default exit rule in it also when
no flag armed a gate, so a CI integration reads the verdict instead of
guessing from a process status it usually cannot see. A gate fails the
build when status is fail AND enforced is true. The typed
programmatic API runs no CLI gate and leaves it absent. See
[crate::GateOutcomes].
request_outcomes: Option<RequestOutcomes>Every narrowing or shaping request this run RECEIVED, keyed by name,
absent when it was asked for nothing. An entry whose status is not
applied means the run could not do what it was asked and reported
something WIDER instead, so what follows is a valid report of a scope
nobody requested. Honoured requests are published too, with
status: "applied", so an absent object means “nothing was asked for”,
never “nothing failed”. See [crate::RequestOutcomes].
meta: Option<Meta>_meta block with docs and rule definitions, when --explain was
passed.
workspace_diagnostics: Vec<WorkspaceDiagnostic>Non-fatal diagnostics about the project itself, from all three stages that record them (issue #473):
- workspace discovery, at config load:
undeclared-workspace,malformed-package-json,glob-matched-no-package-json,malformed-tsconfig,tsconfig-reference-dir-missing; - source discovery, during the file walk:
skipped-large-file,skipped-minified-file,skipped-source-dotdir,excluded-by-default-ignore,source-read-failure,source-parse-degraded; - dead-code analysis, from the dependency-catalog and override
detectors:
malformed-pnpm-workspace-yaml,bun-lockb-override-resolution-skipped; - framework plugins, while they read their own build configs:
plugin-config-unreadable,plugin-effect-not-modeled.
Analysis-stage and plugin-stage kinds therefore reach only the envelopes
whose run includes a dead-code analyze pass, never a standalone
fallow dupes --format json. path is project-root-relative with
forward slashes; the array is omitted when empty. The same list is
repeated on each top-level command’s envelope so single-command
consumers see it without having to look at a separate top-level field.
A diagnostic here is advisory and never withholds a finding. Where an
entry reports a source file this run never fully analyzed
(source-parse-degraded, source-read-failure, skipped-large-file,
skipped-minified-file, skipped-source-dotdir) it can distort a
verdict, so the affected unused_files[], unused_exports[], and
dependency entries additionally carry the caveat themselves in their own
optional reachability_caveats[] array, and a reader who never scrolls
back up to this list still sees it. fallow fix reads the same array
and withholds the removal while a caveat stands.
excluded-by-default-ignore is the one source-discovery kind that
reports unseen files WITHOUT raising a caveat. It names a built-in
ignore pattern (**/dist/**, **/build/**, **/coverage/**, or one
of the four minified-bundle globs) that removed candidate source files
from the walk, which is designed behavior on generated output rather
than a degraded run, so it is advisory only and no finding inherits it.
One entry per pattern, never per file, so the array stays bounded on a
project of any size. Gitignored trees are pruned before the walk sees
them and count zero, and **/node_modules/** is never reported:
installed dependencies are not the first-party source the kind is
about.
next_steps: Vec<NextStep>Read-only follow-up commands computed from this run’s findings, emitted
at the JSON root so an agent acting on the output is pointed at fallow’s
adjacent verification capabilities (trace, complexity breakdown, audit,
workspace scoping). Each command is runnable as-is and never mutating;
see [NextStep] for both contracts. Omitted when empty or when
FALLOW_SUGGESTIONS=off; does NOT contribute to total_issues.