galaxyproject / galaxyproject/planemo
workflow_lint --iwc does not check the date on the newest CHANGELOG heading
- Dominant language
- Python
- Stars
- 110
- Forks
- 102
- Avg merge
- 4d 21h
- Merged PRs (30d)
- 13
Description
_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:
```python
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`:
```
## [1.5] - 2026-07-06
```
## 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.
Contributor guide
Research direction
Start in planemo/workflow_lint.py at _get_changelog_version and _lint_changelog_version, then trace how --iwc invokes the changelog checks. Review the proposed heading format and the two listed CHANGELOG.md examples. Done means the newest heading’s version and ISO date are checked, with the warning/error and --iwc scope settled.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- python
- Domain
- cli, tooling
- Issue type
- Bug
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Active
- Clarity
- Mostly clear
- Newbie friendliness
- 58/100