galaxyproject / galaxyproject/planemo

workflow_lint --iwc does not check the date on the newest CHANGELOG heading

Open
#1,694 0 comments 0 reactions 0 assignees View on GitHub
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

Open the contributing 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.