Hevy Periodizer is the open-source successor to a private tracker I ran on my own program for a year. The rewrite keeps the idea and removes the person. Everything opinionated moved into athlete.yaml and program.yaml, so the same engine serves a powerlifter with four tested maxes and a rehab athlete who owns one pair of adjustable dumbbells and will never test a max. Two shipped examples encode exactly those athletes. An integration test builds both and fails if they stop diverging, which keeps the generality honest.
The part with the most tests is the load layer, because it is the computation most likely to hurt someone. A program says 85% of 140 kg. That is 119, and nobody can load 119 on a barbell with 1.25 kg plates. The engine knows a barbell steps by twice the smallest plate, a dip belt steps by one, fixed dumbbells have gaps in their run, and bodyweight percentages apply to the athlete plus the belt. Property-based suites generate inventories and check the invariants: every answer is loadable, resolving twice changes nothing, and rounding down never overshoots, which is the guarantee rehab work relies on. Claude sits on top through the hevy-coach plugin. Running ./start opens a coaching conversation that writes the config, reviews the week against what Hevy logged, and explains why a number changed. The engine computes. The coach decides.