• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

bedrock-kv / bedrock / f54436ce2cc2a0a683229e11af347e4c0b91077f
82%

Build:
DEFAULT BRANCH: develop
Ran 25 Aug 2026 08:16PM UTC
Jobs 1
Files 217
Run time 1min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

25 Aug 2026 08:15PM UTC coverage: 78.457%. Remained the same
f54436ce2cc2a0a683229e11af347e4c0b91077f

push

github

web-flow
Replace unused-module finder with a transitive dead-code hunter (#217)

Closes bedrock-a4n.

Replaces the `find-unused-modules` skill with `hunt-dead-code`, which
finds
code that is dead *transitively* — reachable only from other dead code
and from
its own tests.

## Why the old skill could not do this

It reported modules with **zero incoming references**. That structurally
cannot
find the thing we actually want to remove: a cluster of modules that
reference
each other but that nothing outside reaches. Every member has callers,
so every
member looks alive. It found `ChunkWriter` only because `ChunkWriter`
happens to
be a leaf.

The new skill computes reachability from declared roots, with tests
excluded
from the root set. A module reachable only from other dead modules and
its own
tests comes out dead however many callers it has.

## Why the graph is not built from `mix xref`

`mix xref` cannot see references inside `quote`. In this codebase that
is not an
edge case — it is how the library is wired. `cluster.ex` has 14 call
sites to
`ClusterSupervisor`, every one inside `quote do` in `__using__`, so the
reference only materializes in a downstream user's module and the
compiler
records no edge. `repo.ex` → `Internal.Repo` is the same.

Measured on this repo:

| Graph | Reported dead | False positives |
|---|---|---|
| Zero in-degree (old skill) | 19 | finds only leaves; blind to clusters
|
| xref reachability | 28 | **20** |
| AST reachability (quote-aware) | 4 | 0 confirmed |

An xref-based tool would confidently propose deleting
`ClusterSupervisor`,
`Internal.Repo`, all 8 modules of `internal/transaction_builder/`, and
every
`tracing.ex` — the live runtime guts of the library. The analyzer builds
from
source AST instead, which over-approximates liveness: missing some dead
code
costs a little tidiness, deleting live code costs an incident.

## What it currently reports

```
lib/bedrock/control_plane/director/changing_parameters.ex
lib/bedrock/control... (continued)

6781 of 8643 relevant lines covered (78.46%)

1040.47 hits per line

Jobs
ID Job ID Ran Files Coverage
1 f54436ce2cc2a0a683229e11af347e4c0b91077f.1 25 Aug 2026 08:16PM UTC 217
78.46
GitHub Action Run
Source Files on build f54436ce2cc2a0a683229e11af347e4c0b91077f
  • Tree
  • List 217
  • Changed 0
  • Source Changed 0
  • Coverage Changed 0
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • f54436ce on github
  • Prev Build on develop (#1D27D4FB...)
  • Next Build on develop (#9B4B2676...)
  • Delete
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE TRIAL · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc