Posted by Claude (AI assistant) on behalf of the issue author, who did not write this text personally.
Summary
planemo workflow_lint --iwc checks that a workflow repository's CHANGELOG.md has a version and that it matches the .ga release field, but it never looks at the date on the heading. The IWC reviewer checklist asks for both ("Include date and version number"), so only half of that requirement is enforced.
Current behavior
_get_changelog_version (planemo/workflow_lint.py:638 on master) splits the heading on ] and discards everything after it:
for line in f:
if line.startswith("## ["):
version = line.split("]")[0].replace("## [", "")
break
_lint_changelog_version (line 651) then only errors when that string is empty. So ## [1.5] with no date passes cleanly, as does ## [1.5] - not a date.
Proposed behavior
Also lint that the newest changelog heading carries an ISO date, in the canonical form used across galaxyproject/iwc:
Adoption cost is near zero
Surveying the newest heading of every CHANGELOG.md under workflows/ in galaxyproject/iwc at the time of writing: 106 of 108 already match ## [version] - YYYY-MM-DD. The two that don't are missing only the - separator, and both already carry an ISO date:
workflows/bacterial_genomics/bacterial_genome_annotation/CHANGELOG.md → ## [1.2.0] 2025-12-04
workflows/bacterial_genomics/amr_gene_detection/CHANGELOG.md → ## [1.1.8] 2026-03-15
So a hard error would flag two real formatting inconsistencies and nothing else.
Open questions
- Warn or error? Error matches the existing release-mismatch lint, and the survey above suggests the blast radius is two files.
--iwc-gated, or general? The dated-heading convention comes from Keep a Changelog rather than from IWC specifically, so there's a case for linting it wherever a CHANGELOG.md is present.
Context
Came up while expanding IWC's Claude PR-review command. The version/release sync is already fully owned by planemo, so the review prompt defers to it; the heading date is the one mechanical piece of that checklist item that isn't covered.
Posted by Claude (AI assistant) on behalf of the issue author, who did not write this text personally.
Summary
planemo workflow_lint --iwcchecks that a workflow repository'sCHANGELOG.mdhas a version and that it matches the.gareleasefield, but it never looks at the date on the heading. The IWC reviewer checklist asks for both ("Include date and version number"), so only half of that requirement is enforced.Current behavior
_get_changelog_version(planemo/workflow_lint.py:638on master) splits the heading on]and discards everything after it:_lint_changelog_version(line 651) then only errors when that string is empty. So## [1.5]with no date passes cleanly, as does## [1.5] - not a date.Proposed behavior
Also lint that the newest changelog heading carries an ISO date, in the canonical form used across
galaxyproject/iwc:Adoption cost is near zero
Surveying the newest heading of every
CHANGELOG.mdunderworkflows/ingalaxyproject/iwcat the time of writing: 106 of 108 already match## [version] - YYYY-MM-DD. The two that don't are missing only the-separator, and both already carry an ISO date:workflows/bacterial_genomics/bacterial_genome_annotation/CHANGELOG.md→## [1.2.0] 2025-12-04workflows/bacterial_genomics/amr_gene_detection/CHANGELOG.md→## [1.1.8] 2026-03-15So a hard error would flag two real formatting inconsistencies and nothing else.
Open questions
--iwc-gated, or general? The dated-heading convention comes from Keep a Changelog rather than from IWC specifically, so there's a case for linting it wherever aCHANGELOG.mdis present.Context
Came up while expanding IWC's Claude PR-review command. The version/
releasesync is already fully owned by planemo, so the review prompt defers to it; the heading date is the one mechanical piece of that checklist item that isn't covered.