Java Guild course · The Rebuild
Reference · the whole submission, commit by commit
Thirty-one commits from the starter project to the finished submission. Each one is a single idea, each one builds and passes, and each decision is recorded in an ADR at the moment it was taken.
Not a diff to interpret — a numbered list to work through:
diff command to read before you accept it.mvn clean test, and the exact test
count you should see.This is not a plan. The sequence was built end to end against the real
starter project, and all 31 commits were checked out one at a time and
built clean — mvn clean test, 31 for 31, no failures.
The test counts in the tables below are the real ones.
Every step on these pages is generated from that repository, so the instructions and the code cannot drift apart.
Five phases. The order is the whole argument: you cannot safely change code whose behaviour you have not written down, so the first eleven commits add no production code at all.
Nothing here changes a line of behaviour. It makes the project honest about what it is, and reproducible for whoever opens it next.
Six commits, no production code touched. By the end, every defect in the supplied program is written down in a file that fails if it silently changes — including four crashes and one case of silent data loss.
The headline requirement of the Intermediate tier. Three supplied exception classes that nothing referenced get wired in one case at a time, and the two signatures that stop making sense once they are get changed deliberately.
Three defects in the file format, each fixed where it lives before anything is moved. Then the two structural moves that the golden master proves changed nothing.
The ninety-line static method gets a seam, the menu stops being two lists kept in step by hand, the last crash goes, and the README gets written last — so it describes what the code does rather than what was planned.
docs/adr/ in the same commit as the change
they justify.cd ~/Desktop/java-guild-candidate-test-intermediate-main
git init -b main
git config user.name "Tom Spencer"
git config user.email "tomspencerlondon@gmail.com"
export JAVA_HOME=$(/usr/libexec/java_home -v 25)
alias mvn=~/.local/maven/bin/mvn
Eight ADRs, each committed with the change it justifies. Read them in full →