The migration that has been postponed for years, as a chain of small, individually checkable steps: a grown Spring project onto Java 25 and Spring Boot 4, commit by commit.
Case study in full
Example scenario
Stack profile: java-spring-boot-4-hexagonalJ · Example scenario with typical orders of magnitude.
A grown Spring project runs on an old Java and framework version. Dependencies have piled up over years, part of the test suite is red or skipped, and the migration kept being postponed because nobody could break it into small steps. That is exactly what the run takes over: target level into the ticket, plan into slices, one commit per slice.
What stays with your team: Your team sets the target level. You keep the review of every slice, the approval of critical dependency changes and the merge.
What you need
A repository with a build configuration (Gradle or Maven) and a runnable test suite.
A stack profile naming the target version and architecture conventions.
Guardrails with the project's binding conventions.
An approved ticket backlog for the first run.
How the run works
The ticket in the tracker describes the target level per module.
The plan breaks the migration into ordered, individually checkable slices.
Each slice changes one bounded portion: a dependency, an API adjustment or a test fix.
Per slice, compilation, the affected tests and static analysis run.
The result arrives as a pull request in your repository; you review and merge.
What you get
Changed files and dependencies per slice, readable in the commit history.
Test results and gate status documented per slice.
One pull request per slice or bundled, referencing the ticket.
Open points become tickets of their own in the backlog instead of quietly disappearing.
Key figures
Scope
Stories/tickets
1
Slices
34
Files/modules
118
Throughput
Validated slices
31
Retries
9
Human interventions
6
Quality
Checks run
Compile, Unit Tests, Static Analysis
Gates passed
5
Gates failed
1
Resources
Prompt tokens
500000
Completion tokens
200000
Cache tokens
750000
Model calls
200
Sandbox runtime
90 minutes
Model/stack context
Java 17 → Java 25, Spring Boot 3 → Spring Boot 4 (target profile java-spring-boot-4-hexagonal).
What stayed open
Two older test classes do not yet cover the new code path; they are a ticket in the backlog.
May we count your visit?
With Google Analytics we see which pages are read. Google loads only if you accept; your browser remembers your choice, no cookie from us, and you can change it any time in the footer. Privacy policy