shields.io's dynamic TOML badge reads the version straight out of pyproject.toml on main at view time, so the badge cannot go stale by construction - no third version string to bump. Preflight check 3 flips from comparing a hardcoded number to guarding the mechanism: the dynamic badge must be present and a hardcoded release-X.Y.Z badge fails the check. AGENTS.md's release step 1 goes back to two version strings.