Loading...
Loading...
Systematic approach to GitHub release preparation following 2025/2026 best practices for Rust workspace projects
npx skill4agent add d-o-hub/rust-self-learning-memory github-release-best-practices# Draft-first approach for immutable releases
gh release create v0.1.8 --draft
# Review content, attach assets, then publish
gh release edit v0.1.8 --publish.github/release.yml.github/release.ymlchangelog:
exclude:
labels:
- ignore-for-release
- dependencies
authors:
- dependabot
categories:
- title: 🚀 New Features
labels:
- feature
- enhancement
- title: 🐛 Bug Fixes
labels:
- bug
- fix
- title: 📚 Documentation
labels:
- documentation
- docs
- title: 🔧 Other Changes
labels:
- "*"# Get commits since last release
git log v0.1.7..HEAD --oneline --decorate
# Group commits by type using conventional commits
git log --grep="^feat|^fix|^docs|^chore|^refactor" v0.1.7..HEAD
# Generate commit summary with PR references
git log v0.1.7..HEAD --pretty=format:"- %s (%h)" --abbrev-commit# Get PR numbers from commit messages
git log v0.1.7..HEAD --grep="#[0-9]" --pretty=format:"- %s (Closes %h)"
# Extract breaking changes
git log v0.1.7..BREAKING --pretty=format:"- **BREAKING**: %s"# Changelog
All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## [Unreleased]
### Added
- Feature X for use case Y
### Changed
- Improved performance of Z
## [0.1.8] - 2025-12-28
### Fixed
- Resolved clippy warning in premem_integration_test.rs
- Fixed unnecessary_unwrap pattern in test code
### Changed
- Improved error messages in integration tests
- Inlined format arguments in semantic_summary_test.rs
### Added
- GOAP execution plan documentation| Change Type | Version Bump | Example | Rationale |
|---|---|---|---|
| Breaking Changes | MAJOR | 0.1.7 → 1.0.0 | Public API changes |
| New Features | MINOR | 0.1.7 → 0.2.0 | Backward-compatible additions |
| Bug Fixes | PATCH | 0.1.7 → 0.1.8 | Backward-compatible fixes |
| CI/Quality | PATCH | 0.1.7 → 0.1.8 | Infrastructure improvements |
| Documentation | PATCH | 0.1.7 → 0.1.8 | Non-functional changes |
[workspace.package]
version = "0.1.8" # Single source of truth
[workspace.members]
# All members inherit workspace.package version# Check version consistency across workspace
cargo metadata --format-version 1 --no-deps | \
jq '.packages[] | select(.name != "rust-self-learning-memory") | {name, version}'
# Validate all crates have consistent versions
cargo workspaces version --all# Run comprehensive quality checks
./scripts/quality-gates.sh
# Specific validations
./scripts/code-quality.sh fmt
./scripts/code-quality.sh clippy --workspace
cargo test --all
cargo audit
cargo deny check# Create annotated tag with release message
git tag -a v0.1.8 -m "Release v0.1.8 - CI fixes and code quality improvements"
# Verify tag creation
git show v0.1.8
# Push tag to trigger release workflow
git push origin v0.1.8# Create release with auto-generated notes
gh release create v0.1.8 \
--title "v0.1.8 - CI Fixes and Code Quality" \
--notes "See CHANGELOG.md for details"
# Verify release creation
gh release view v0.1.8 --json tagName,createdAt,url## Summary
This patch release resolves critical bugs, improves code quality, and enhances CI/CD reliability. All changes are backward-compatible.
## Fixed
- **Clippy Warnings**: Resolved `unnecessary_unwrap` lint in premem_integration_test.rs by refactoring to use proper match patterns
- **Performance Tests**: Fixed type conversion compilation error in performance.rs
- **Release Workflow**: Corrected asset upload failure by updating action version
## Changed
- Improved error messages in integration tests (replaced `.unwrap()` with `.expect()`)
- Inlined format arguments in semantic_summary tests for improved readability
- Enforced warnings-as-errors consistently across all CI workflows
## Added
- GOAP execution plan documentation for complex workflows
- Response validation test suite for memory-mcp server
## Technical Details
- All GitHub Actions workflows passing (Quick Check, Performance Benchmarks, Security, CodeQL)
- Zero clippy warnings with -D warnings enforcement
- Test coverage maintained at 92.5%
- Performance targets exceeded across all metrics
## Full Changelog
https://github.com/d-o-hub/rust-self-learning-memory/compare/v0.1.7...v0.1.8## Summary
This minor release introduces new features and enhancements while maintaining backward compatibility. Key highlights include multi-provider embeddings, improved security, and performance optimizations.
## Added
- **Multi-Provider Embeddings**: Support for OpenAI, Cohere, Ollama, and local CPU embeddings
- **Configuration Caching**: Reduced API calls through intelligent caching
- **Wasmtime Sandbox**: 6-layer defense-in-depth security architecture
- **Vector Search Optimization**: Improved similarity search performance
## Changed
- **[BREAKING]** Migrated from bincode to postcard for serialization
- Performance improvements: 10-100x faster than baselines
- Enhanced security with zero clippy warnings across all crates
- Improved cache hit rates with new configuration caching
## Breaking Changes
- **Serialization Format**: Existing redb databases must be recreated
- Postcard format is incompatible with previous bincode format
- See migration guide for step-by-step instructions
- Postcard provides better security guarantees
## Performance
- Episode Creation: 19,531x faster (~2.5 µs vs 50ms target)
- Step Logging: 17,699x faster (~1.1 µs vs 20ms target)
- Memory Retrieval: 138x faster (~721 µs vs 100ms target)
## Security
- **Postcard Serialization**: Safer than bincode, preventing deserialization attacks
- **Wasmtime Sandbox**: 6-layer defense-in-depth security
- **Zero Clippy Warnings**: Enforced strict linting across all code
## Migration Guide
1. **Backup existing data**: Export redb databases before upgrading
2. **Update dependencies**: Update to latest versions of dependencies
3. **Recreate databases**: Postcard format requires fresh database creation
4. **Verify functionality**: Run test suite to ensure compatibility
## Statistics
- Test Pass Rate: 99.3% (424/427 tests passing)
- Test Coverage: 92.5% across all modules
- Rust Source Files: 367 files with ~44,250 LOC
- Workspace Members: 8 crates
## Full Changelog
https://github.com/d-o-hub/rust-self-learning-memory/compare/v0.1.7...v0.2.0#!/bin/bash
# release-workflow.sh - Complete release automation
set -e
RELEASE_VERSION=$1
if [ -z "$RELEASE_VERSION" ]; then
echo "Usage: $0 <version>"
echo "Example: $0 0.1.8"
exit 1
fi
echo "🚀 Starting release workflow for v$RELEASE_VERSION"
# 1. Quality Gates
echo "📋 Running quality gates..."
./scripts/quality-gates.sh
# 2. Update changelog
echo "📝 Updating CHANGELOG.md..."
# Implementation depends on changelog tool selection
# 3. Commit changelog
echo "💾 Committing changelog..."
git add CHANGELOG.md
git commit -m "docs(changelog): update for v$RELEASE_VERSION"
# 4. Create and push tag
echo "🏷️ Creating git tag v$RELEASE_VERSION..."
git tag -a "v$RELEASE_VERSION" -m "Release v$RELEASE_VERSION"
git push origin "v$RELEASE_VERSION"
# 5. Create GitHub release
echo "🎉 Creating GitHub release..."
gh release create "v$RELEASE_VERSION" \
--title "v$RELEASE_VERSION - [Auto-generated]" \
--notes "See CHANGELOG.md for detailed changes" \
--draft
echo "✅ Release workflow completed!"
echo "Next: Review release draft at https://github.com/d-o-hub/rust-self-learning-memory/releases".github/workflows/release.ymlname: Release
on:
push:
tags:
- 'v*'
jobs:
release:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Setup Rust
uses: dtolnay/rust-toolchain@stable
with:
components: cargo, clippy, rustfmt
- name: Run quality gates
run: ./scripts/quality-gates.sh
- name: Create release
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
VERSION=${GITHUB_REF#refs/tags/}
gh release create "$VERSION" \
--title "Release $VERSION" \
--notes-file CHANGELOG.md \
--draftcargo install --locked cargo-semver-checks
cargo semver-checks check-release --workspacecargo install --locked cargo-release
# Handles version bump, commit, tag, push in one command
cargo release patch # or minor/majorrelease.toml[workspace]
allow-branch = ["main"]
pre-release-commit-message = "release: v{{version}}"
tag-message = "v{{version}}"
tag-prefix = "v"cargo install --locked cargo-dist
cargo dist initCargo.toml× This workspace doesn't have anything for dist to Release!
help: --tag=v0.1.21 will Announce: memory-mcp, memory-clicargo releasegrep '^version =' Cargo.toml