Thomas Piacentini
← Workshop

Project

Changelog Writer From Git

Original text · English480 min

Read a real Git revision range, preserve migration footers and revert references, then export reproducible Markdown with a source receipt.

Level 2. Four stages, about eight hours. Implementation: Go, standard library only.

Before you start

Use Go 1.22 or later and Python 3.12 or later for the grader. Be comfortable with functions, structs, slices, maps and returned errors. Complete the environment setup and data management lesson first if these are unfamiliar.

Stages

  1. Read an immutable Git export
  2. Classify conventional subjects
  3. Group commits with stable ordering
  4. Render bounded release notes

Build it

bash
python3 scripts/project_test.py changelog-writer-from-git --init /tmp/changelog-writer-from-git-work
python3 scripts/project_test.py changelog-writer-from-git --stage 1 --path /tmp/changelog-writer-from-git-work
python3 scripts/project_test.py changelog-writer-from-git --all --solution --strict

Run the artifact

bash
cd projects/changelog-writer-from-git/solution
go run .

--repo PATH --from REV --to REV reads an immutable Git range. Alternatively, --input FILE accepts git log --format=%H%x00%s%x00%b%x00 FROM..TO output. Add --output release.md --receipt release.json for reusable artifacts. No argument means an original two-commit fixture. The supported repository profile uses SHA-1 commit IDs; SHA-256 repositories require a hash-format extension.

The CLI and integration adapter are supplied in the learner starter. Implement the four stage functions; the adapter composes those same functions and cannot bypass unfinished work. Read integration.go after the core stages to see file boundaries, receipts and rendering.

The demo exercises the real reference implementation with offline fixtures and terminates. Each stage has at least five distinct tests, including boundaries and rejected inputs. Expected behavior lives in the stage tests; the implementation never reads the held-out test files. The grader preserves your code during initialization and reports incomplete runs honestly when a runtime is missing.

Completion evidence

bash
python3 scripts/project_test.py changelog-writer-from-git --all --path /tmp/changelog-writer-from-git-work --strict --report /tmp/changelog-writer-from-git-result.json

Only a complete learner report can establish local completion. Reference runs do not grant a certificate. Reports are unsigned local evidence, and the project does not certify production readiness.

Sources

Official reference. All implementations and exercises are original. Fixture numbers are examples, not external benchmark claims or live service guarantees.

Code and artifacts 33
What you take away

Saved in your notebook on this device.

Sources and limits

Reading checkpoints are self-reported. Test results are recorded separately and apply to the executed cases.

AI Engineering from Scratch · 3f9715c · MIT

Download this file ↓