aalekh-gradle
The Gradle plugin itself — the only module that may touch the Gradle API. Applies the settings / project plugins, exposes the aalekh { } DSL, extracts the module graph from the Gradle project model, and wires the aalekh* tasks. Ships to the Gradle Plugin Portal (the other three modules go to Maven Central).
Everything here is written to keep Gradle 9.x's configuration cache intact: no live Project, Configuration, Dependency, or Settings reference survives into a task action. Plugins collect data inside provider { } lambdas as plain strings, and build/tmp/aalekh/graph.json is the serialization boundary between the configuration and execution phases.
Packages
The single place the Gradle project model is read. SubprojectDataCollector gathers every subproject's dependencies and plugins; ConfigurationClassifier, ModuleTypeDetector, and DeclarationLineFinder turn that raw build state into typed, serializable facts. Extraction is fail-silent per module: a broken module is logged and included as ModuleType.UNKNOWN, never crashing the run.