Fallow is enabled in our codebase to help detect dead code, unused exports and types, unnecessary dependencies, duplication, complexity, and other maintainability issues.
From the repository root, run:
bun run fallow:audit
The audit checks whether your changes introduce new findings. Existing findings may be reported as inherited and do not necessarily block the PR.
For a summary of the current codebase:
bun run fallow:summary
For workspace-specific analysis:
bun run fallow dead-code --workspace cms --format compact
bun run fallow dead-code --workspace @repo/cel-engine --format compact
Your preferred LLM coding agent can run Fallow, investigate the results, and apply safe cleanup. Give it a bounded prompt such as:
Run Fallow for the workspace I am currently working on.
Review each finding and verify it with rg or Fallow traces before changing code.
Do not remove public exports, generated files, dynamic test fixtures,
runtime assets, or cross-workspace APIs without confirming their consumers.
Apply only confirmed-safe cleanup.
Run the relevant typecheck, tests, and lint checks.
Then rerun the scoped Fallow scan and bun run fallow:audit.
Summarize what changed and what remains.
Before removing an export, trace it:
bun run fallow dead-code --trace path/to/file.ts:exportName
Before removing a dependency, trace it:
bun run fallow dead-code --trace-dependency package-name
bun run fallow:audit.Fallow is intended to be part of normal development, not just a one-time cleanup tool. Running it before every PR helps prevent new dead code and unnecessary complexity from accumulating in main.
edited.