Bottom line
Six places carry a version and they disagree. The Windows binary reports 2.0.0.0 whatever
tag it was built from.
Why
pyproject.toml:7 version = "0.1.0"
src/hoi4cm/__init__.py:5 __version__ = "0.1.0"
build/version_info.txt:8-9 filevers=(2, 0, 0, 0), prodvers=(2, 0, 0, 0), and
:25/:30 u'2.0.0.0'
README.md:8 
hoi4_content_maker.py:4 # Version 2.0 | Millennium Dawn Team
CHANGELOG.md:423 ## [2.0] — 2025, the newest versioned heading
Nothing derives any of these from anything else. AGENTS.md:54 says the release version
is the tag name, and the release job uses github.ref_name for the Release title only
(ci.yml:149); build/build.py never rewrites version_info.txt. So a v2.1.0 release
ships an executable whose Properties dialog reads File version 2.0.0.0, while
pip install . reports 0.1.0.
Acceptance
- One source of truth for the version; the rest are generated from it or removed.
- The built executable's embedded version matches the tag it was released from.
BLUF
Bottom line
Six places carry a version and they disagree. The Windows binary reports 2.0.0.0 whatever
tag it was built from.
Why
pyproject.toml:7version = "0.1.0"src/hoi4cm/__init__.py:5__version__ = "0.1.0"build/version_info.txt:8-9filevers=(2, 0, 0, 0), prodvers=(2, 0, 0, 0),and:25/:30u'2.0.0.0'README.md:8hoi4_content_maker.py:4# Version 2.0 | Millennium Dawn TeamCHANGELOG.md:423## [2.0] — 2025, the newest versioned headingNothing derives any of these from anything else.
AGENTS.md:54says the release versionis the tag name, and the release job uses
github.ref_namefor the Release title only(
ci.yml:149);build/build.pynever rewritesversion_info.txt. So av2.1.0releaseships an executable whose Properties dialog reads File version 2.0.0.0, while
pip install .reports 0.1.0.Acceptance
BLUF