verirl-env / RELEASES.md
Supreeth's picture
Upload folder using huggingface_hub
7034224 verified

Release Management

This project uses towncrier for automated changelog management and releases.

Release Workflow

1. During Development

As you make changes, create changelog fragments:

# Create a feature fragment
echo "Added new task type to environment" > .changelog.d/123.feature.md

# Create a bug fix fragment
echo "Fixed STDOUT format parsing error" > .changelog.d/124.bugfix.md

# Create a documentation fragment
echo "Updated README with new API documentation" > .changelog.d/125.doc.md

# Create a miscellaneous fragment (no details in changelog)
echo "Code cleanup and refactoring" > .changelog.d/126.misc.md

Fragment format:

  • File name: .changelog.d/<ID>.<TYPE>.md
  • <ID>: PR number, commit hash, or any unique identifier
  • <TYPE>: feature, bugfix, doc, or misc
  • Content: One-line description of the change

2. Before Release

When ready to release, use the GitHub Actions workflow:

  1. Go to: https://github.com/SupreethRao99/veriRL/actions
  2. Click "Release" workflow
  3. Click "Run workflow"
  4. Enter version (e.g., 0.2.1)
  5. Workflow will:
    • Run towncrier build --version 0.2.1
    • Update CHANGELOG.md
    • Update pyproject.toml version
    • Commit changes
    • Create git tag v0.2.1
    • Push to GitHub
    • Create GitHub Release with changelog

3. Manual Release (if workflow fails)

# Install towncrier
uv pip install towncrier

# Generate changelog and update version
towncrier build --version 0.2.1

# Review changes
git status

# Commit
git add CHANGELOG.md pyproject.toml .changelog.d/
git commit -m "Release v0.2.1"

# Create tag
git tag -a v0.2.1 -m "Release v0.2.1"

# Push
git push origin main v0.2.1

# Create release on GitHub (via web UI or gh CLI)
gh release create v0.2.1 --title "v0.2.1" --notes-file CHANGELOG.md

Version Numbering

Uses Semantic Versioning:

  • MAJOR (0.X.0): Breaking changes, major architecture updates
  • MINOR (0.1.X): New features, new tasks, significant enhancements
  • PATCH (0.1.1): Bug fixes, documentation updates, minor improvements

Examples:

  • Initial release: 0.1.0
  • Add new task: 0.2.0 (minor bump)
  • Fix bug: 0.2.1 (patch bump)
  • Breaking change: 1.0.0 (major bump)

Viewing Releases

Fragment Types Reference

feature

New functionality, new tasks, new endpoints, new capabilities.

Example: 0001.feature.md

Added AXI-Stream FIFO task with 34 test assertions

bugfix

Bug fixes, corrections, error handling improvements.

Example: 0002.bugfix.md

Fixed STDOUT format to remove extraneous validation output

doc

Documentation updates, README changes, new guides.

Example: 0003.doc.md

Updated deployment guide with GitHub Actions instructions

misc

Internal changes, refactoring, code cleanup (not shown in changelog).

Example: 0004.misc.md

Refactor environment initialization for clarity

Changelog Format

Generated CHANGELOG.md follows this structure:

## [0.2.0] - 2026-04-04

### Features
- Feature 1 (PR #123)
- Feature 2 (PR #124)

### Bug Fixes
- Fix 1 (PR #125)
- Fix 2 (PR #126)

### Documentation
- Doc update 1 (PR #127)
- Doc update 2 (PR #128)

Tips

  1. Create fragments frequently — one per PR or significant change
  2. Use clear descriptions — fragments become the changelog, so be descriptive
  3. Keep it user-facing — describe what users/judges care about
  4. Test release locally — run towncrier build --draft to preview
  5. One release per version — don't release twice for the same version

Troubleshooting

Fragment not appearing in changelog

  • Check file name format: .changelog.d/<ID>.<TYPE>.md
  • Verify <TYPE> is one of: feature, bugfix, doc, misc
  • Ensure file is in .changelog.d/ directory

Changelog build fails

  • Check pyproject.toml [tool.towncrier] configuration
  • Verify all fragments have valid type
  • Run with --draft flag to preview without modifying files

Version not updating

  • Check pyproject.toml has version = "0.1.0" field
  • Towncrier auto-updates this during build command

References