Layer (node fill) — the role you designed. Folder-based: core/ is Domain, adapters/ is Adapter, __tests__/ is Test, etc. Answers "where does this code live in my intended architecture?"
Community (node border) — the modules the dependency graph actually shows. Louvain clustering finds tightly-connected groups of symbols. Answers "how does the code really hang together?"
Red edges are boundary violations — dependencies that cross communities and are rare (or unprecedented) in snapshot history. That's where architectural drift shows up first.
Use it: skim in Dual for mismatches, switch to Layer to orient, switch to Community to find the de-facto modules when refactoring.