Etude · The anti-cascader

Author one step

Write the rename rule. Run it against the fixture. See what 14 lines of authored migration feels like.

The codemod inside one step of the migration is not magic. It is a small pattern: match this; replace with that; constrain by where it appears.

You're authoring step 02 of /migrate-spring-boot-3. Edit the rules. Hit run. See it land against a fixture file.

Rules · javax → jakarta

Fixture · OrderEntity.java

Same file, before and after. Diff highlighted in green and red.

Before

 

After

(run rules to see)

Assertions · what should be true

    What just happened

    You wrote a transform. You ran it against a fixture. You saw assertions pass or fail. That's the loop a migration author lives in. Not 700 lines of LLM-generated refactor; a small set of mechanical rules with a fixture corpus that shows when you got too greedy or too conservative.

    Bob's contribution isn't this rule shape — codemod engines have shipped this for years. Bob's contribution is the wrapper: the explanation that prints before this rule runs, the per-step PR cadence, the state file. The rule itself is the boring deterministic core.