Skip to content

Fix CI/CD Auto Release: handle SemVer pre-release versions#31

Merged
konard merged 3 commits into
mainfrom
issue-30-557c1962e7fa
Apr 13, 2026
Merged

Fix CI/CD Auto Release: handle SemVer pre-release versions#31
konard merged 3 commits into
mainfrom
issue-30-557c1962e7fa

Conversation

@konard

@konard konard commented Apr 13, 2026

Copy link
Copy Markdown
Member

Summary

Fixes #30

  • Root cause: scripts/version-and-commit.mjs used a version regex ((\d+)\.(\d+)\.(\d+)) that only matches simple X.Y.Z versions. The current Cargo.toml version 0.1.0-pre+beta.2 includes SemVer pre-release and build metadata, causing the Auto Release job to fail with "Could not parse version from Cargo.toml"
  • Fix: Updated the regex to (\d+)\.(\d+)\.(\d+)(?:-[^"]*)? to accept optional pre-release/build metadata suffixes while correctly extracting major.minor.patch
  • License audit: Verified all 38 repository files use Unlicense (public domain) — no LGPL references found anywhere

Details

Failed CI run: 24322652581

The failure occurred at the "Collect changelog and bump version" step in the Auto Release job. All test and build jobs passed; only the release process failed.

Files changed

File Change
scripts/version-and-commit.mjs Fix version parsing regex (1 line)
docs/case-studies/issue-30/README.md Case study with timeline, root cause analysis, and findings
changelog.d/20260413_000000_fix_cicd_version_parse.md Changelog fragment for this fix
experiments/test_version_parse.mjs Automated test verifying the regex fix handles all SemVer formats

Test plan

  • Automated regex test (experiments/test_version_parse.mjs) passes — verifies fix handles 0.1.0-pre+beta.2, 0.1.0-alpha, 2.0.0-rc.1+build.123, and simple X.Y.Z
  • cargo test --all-features passes (all 12 tests + 10 doc-tests)
  • CI/CD pipeline passes on this PR

🤖 Generated with Claude Code

Adding .gitkeep for PR creation (default mode).
This file will be removed when the task is complete.

Issue: #30
@konard konard self-assigned this Apr 13, 2026
… parser

The version regex in version-and-commit.mjs only matched simple X.Y.Z
versions, failing on the current 0.1.0-pre+beta.2 with "Could not parse
version from Cargo.toml". Updated regex to accept optional pre-release
and build metadata suffixes.

Verified all repository files use Unlicense — no LGPL references found.

Closes #30

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@konard konard changed the title [WIP] CI/CD and license fix Fix CI/CD Auto Release: handle SemVer pre-release versions Apr 13, 2026
@konard
konard marked this pull request as ready for review April 13, 2026 02:36
@konard

konard commented Apr 13, 2026

Copy link
Copy Markdown
Member Author

🤖 Solution Draft Log

This log file contains the complete execution trace of the AI solution draft process.

💰 Cost: $1.826726

📊 Context and tokens usage:

Claude Opus 4.6:

  • Context window: 64.2K / 1M (6%) input tokens, 10.5K / 128K (8%) output tokens

Total: (52.7K + 2.2M cached) input tokens, 10.5K output tokens, $1.712510 cost

Claude Haiku 4.5:

Total: (21.2K + 653.8K cached) input tokens, 4.5K / 64K (7%) output tokens, $0.114215 cost

🤖 Models used:

  • Tool: Anthropic Claude Code
  • Requested: opus
  • Main model: Claude Opus 4.6 (claude-opus-4-6)
  • Additional models:
    • Claude Haiku 4.5 (claude-haiku-4-5-20251001)

📎 Log file uploaded as Gist (1728KB)


Now working session is ended, feel free to review and add any feedback on the solution draft.

@konard

konard commented Apr 13, 2026

Copy link
Copy Markdown
Member Author

✅ Ready to merge

This pull request is now ready to be merged:

  • All CI checks have passed
  • No merge conflicts
  • No pending changes

Monitored by hive-mind with --auto-restart-until-mergeable flag

@konard
konard merged commit a6e1595 into main Apr 13, 2026
9 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

CI/CD and license fix

1 participant