Skip to content

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

Description

@jmchilton

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:

## [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.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions