Every change to the calibration engine, interface, and data layer is logged here by semver. Algorithm entries include root cause and fix description.
Cause: raw-sum comparison ignored set count. Fix: prevSets.slice(0, currentSets.length) normalises baseline by set count.
Fix: applyPreFatigueCanaryCap() caps E2+ at mild when E1 shows none, moderate when E1 shows mild. Isolation guard skips cap when E1 fatigueTag=low.
Deload prescriptions now correctly floor at half of peak estimated 1RM.
Three-tier label (deload / recovery / reduced) now renders correctly.
Both W7 and W8 now hold at RIR 0 for mesocycles >= 9 weeks.