Reach 2.x keeps the command surface intentionally small. Older task names are removed and replaced by modes on the canonical commands.

mix reach.map

Project-level inventory and risk map.

mix reach.map
mix reach.map PATH
mix reach.map --modules
mix reach.map --coupling --sort instability
mix reach.map --effects
mix reach.map --boundaries --min 3
mix reach.map --depth --top 20
mix reach.map --data

mix reach.inspect TARGET

Target-local investigation.

mix reach.inspect Module.function/arity --deps
mix reach.inspect Module.function/arity --impact
mix reach.inspect lib/file.ex:42 --context
mix reach.inspect Module.function/arity --data --variable user
mix reach.inspect Module.function/arity --why Other.Module.call/1
mix reach.inspect Module.function/arity --graph

mix reach.trace

Data-flow and slicing workflows.

mix reach.trace --from conn.params --to Repo
mix reach.trace --from conn.params --to System.cmd --all
mix reach.trace --variable token --in MyApp.Auth.login/2
mix reach.trace lib/my_app/auth.ex:42 --forward

mix reach.check

CI and release-safety checks.

mix reach.check --arch
mix reach.check --changed --base main
mix reach.check --dead-code
mix reach.check --smells
mix reach.check --smells --strict
mix reach.check --arch --smells --baseline .reach-baseline.json
mix reach.check --arch --smells --write-baseline .reach-baseline.json
mix reach.check --candidates

--arch is a failing gate by default. It validates layer dependency rules, optional layer coverage, source bans, call bans, boundary policy, effect policy, and layer cycles. Layer cycle output includes concrete call edges so policy failures can be traced back to source locations. --smells is advisory by default; add --strict or set smells: [strict: true] in .reach.exs to fail when non-baseline smell findings are present.

Use --baseline PATH to suppress known reach.check findings while still failing on new findings. Use --write-baseline PATH to write the current findings for the selected check modes. JSON output supports one check mode at a time.

mix reach.otp

OTP/process analysis.

mix reach.otp
mix reach.otp MyApp.Worker
mix reach.otp --concurrency
mix reach.otp --format json

Removed commands

Use the canonical replacements:

RemovedUse instead
mix reach.modulesmix reach.map --modules
mix reach.couplingmix reach.map --coupling
mix reach.hotspotsmix reach.map --hotspots
mix reach.depthmix reach.map --depth
mix reach.effectsmix reach.map --effects
mix reach.boundariesmix reach.map --boundaries
mix reach.xrefmix reach.map --data
mix reach.deps TARGETmix reach.inspect TARGET --deps
mix reach.impact TARGETmix reach.inspect TARGET --impact
mix reach.slice TARGETmix reach.trace TARGET
mix reach.flow ...mix reach.trace ...
mix reach.dead_codemix reach.check --dead-code
mix reach.smellmix reach.check --smells
mix reach.graph TARGETmix reach.inspect TARGET --graph
mix reach.concurrencymix reach.otp --concurrency