narrative
fun narrative(teamOwners: Map<String, List<String>> = emptyMap(), hiddenCoupling: List<CoChange> = emptyList(), churn: List<ModuleChurn> = emptyList(), layers: List<LayerSpec> = emptyList()): NarrativeReport(source)
Builds the plain-language narrative for this graph.
Everything it reads is already available here, so the narrative is never a separate analysis pass - it is the same numbers the rest of the report shows, phrased as sentences. Findings that need a task the consumer has not run (churn, hidden coupling) simply do not appear.