# Chapter 1 Solution Guide: Setup Checkpoint

This solution guide defines what a complete Chapter 1 setup checkpoint should demonstrate. Version numbers may differ across machines, so reviewers should focus on **coherence, evidence, and reproducibility**, not identical output.

## Reference Completion Criteria

| Area | Complete Evidence | Reviewer Notes |
|---|---|---|
| Git | Git version is present, repository is cloned, current branch is visible, and status is understood. | A dirty status is acceptable only if the learner can explain the changed files. |
| Python | A virtual environment is created and activated, and `python -m pip --version` points to that environment. | Global installs should be discouraged for book labs. |
| Docker | `docker version` and `docker compose version` succeed. | If Docker Desktop is required, it must be running before the check. |
| Compose service | `docker compose up -d`, `docker compose ps`, logs, and `docker compose down` all work. | The Chapter 1 service is intentionally lightweight. |
| Setup report | The report includes commands, outputs, and troubleshooting notes. | The report should be specific enough for another person to reproduce the diagnosis. |

## Example Interpretation

A strong submission does not simply say “Docker works.” It includes the command used, the relevant output, and a short explanation. For example, if `docker compose ps` shows `ch01-data-engineering-checkpoint` running, the learner should explain that Docker can pull an image, mount the lab directory, execute the Python script, and keep the service alive long enough for inspection.

## Common Acceptable Variations

| Variation | Acceptable? | Explanation |
|---|---:|---|
| Python 3.10 instead of Python 3.11 | Yes, if later lab requirements are satisfied. | Some systems provide different supported Python versions. |
| Docker Compose invoked as `docker-compose` | Usually yes. | Older installations may use the legacy command. Prefer `docker compose` when available. |
| Repository cloned under a different folder name | Yes. | The path may differ as long as commands are run from the correct project root. |
| Git user name/email not configured | Partially. | The learner can complete read-only work, but should configure identity before committing. |

## Suggested Feedback Pattern

When giving feedback, identify the first missing checkpoint rather than overwhelming the learner. For example: “Your Python environment is documented well. The next step is to rerun `docker compose ps` after starting the checkpoint service and paste that output into the report.”
