Skip to content

five-whys on crate fan-out: which core crates pull in most of the workspace #5795

Closed as not planned

Description

@noahgift

Five-whys on crate fan-out: which crates pull in most of the workspace, and why.

Evidence (as measured by the test-affected script owner, relayed 2026-10-20 ~13:12Z): mean 49.6 of 85 workspace crates are affected per commit on main; 10 of 30 sampled commits affect ALL crates.

Cross-check, transitive reverse-dependency closure (cargo metadata --no-deps at main d1861e795e, normal+dev+build edges among the 85 workspace packages; regen script lives in the triage scratch, ledger.sh):

crate workspace crates that (transitively) depend on it
aprender-contracts-macros 57
aprender-contracts 55
aprender-build-sha 53
aprender-present-core 53
aprender-present-test-macros 48
aprender-present-test 47
aprender-common 46
aprender-present-terminal 46

Direct fan-in is much smaller (aprender-build-sha 27, aprender-core 15, aprender-contracts 14), so the closure, not the direct edge, is what inflates it.

To answer (the five whys): why does a change to a leaf-ish crate such as aprender-build-sha or aprender-contracts-macros reach ~55 of 85 crates; which edges are dev-dependencies only (and could be cut or made feature-gated); which crates are depended on for one constant or one macro; what does a root Cargo.toml/Cargo.lock change do (affects ALL by definition).

Deliverable: a ranked edge list (which single edge removals cut the most affected crates), no behaviour change. Analysis only; no gate edits.

Activity

  1. added this to the 0.73.0 milestone on Oct 20, 2026
  2. noahgift commented on Oct 22, 2026

    @noahgift
    MemberAuthor

    Tracked in #5510 (triage 2026-10-22).

  3. noahgift commented on Oct 22, 2026

    @noahgift
    MemberAuthor

    tracked in #5963

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions