- `pom.xml` and/or `build.gradle` — Maven/Gradle build (Java 21, Spring Boot 4.0.2)
- `src/` — Java source code (group `de.juplo.kafka`)
+Some branches contain **only** a `docker/docker-compose.yml` with no build files or source. These are infrastructure-only setups for exercises where students experiment further with Kafka clients they have already written in a previous exercise.
+
Run an exercise:
```bash
git checkout <branch>
./README.sh cleanup # tear down Docker, clean build artifacts
```
+### Docker Image Naming in `docker-compose.yml`
+
+The `producer`, `consumer`, or application service in `docker-compose.yml` always references the **exact image that the exercise builds**, using this naming schema:
+
+```
+juplo/<artifactId>:<version>
+```
+
+where `<artifactId>` matches `pom.xml`'s `<artifactId>` (Maven) or `settings.gradle`'s `rootProject.name` (Gradle), and `<version>` matches `<version>` / `version`. The current standard version is `1.0-SNAPSHOT`.
+
+**When reviewing or rebasing a branch, always verify** that the image name and version in `docker-compose.yml` match what the build files actually produce. Mismatches are implementation errors and must be flagged and corrected.
+
## Scripting Branch Scripts
All scripts source `BRANCHES.sh` first, which defines the full branch list and parent relationships.