aprender 0.7.0

Next-generation machine learning library in pure Rust
Documentation
# Release Process

This document describes the release process for Aprender.

## Prerequisites

1. All CI checks must pass
2. Quality gates must be satisfied:
   - Test coverage ≥ 97%
   - Mutation score ≥ 85%
   - TDG score ≥ 95 (A+)
   - Zero SATD comments
   - Complexity within limits
3. CHANGELOG.md updated with release notes
4. Version bumped in Cargo.toml

## Release Checklist

### 1. Pre-Release Validation

```bash
# Ensure all tests pass
make test

# Run quality gates
pmat quality-gate

# Check documentation builds
cargo doc --no-deps --all-features

# Verify examples work
cargo run --example boston_housing
cargo run --example iris_clustering
cargo run --example dataframe_basics

# Test crates.io package
cargo publish --dry-run
```

### 2. Create Release Tag

```bash
# Update version in Cargo.toml (e.g., 0.1.0 -> 0.1.1)
# Update CHANGELOG.md with release notes

git add Cargo.toml CHANGELOG.md
git commit -m "Release v0.1.1"
git tag -a v0.1.1 -m "Release v0.1.1"
git push origin main
git push origin v0.1.1
```

### 3. GitHub Actions Automation

The release workflow (`.github/workflows/release.yml`) will:

1. **Build artifacts** for Linux, macOS, and Windows
2. **Run tests** on all platforms
3. **Publish to crates.io** (when enabled)
4. **Create GitHub Release** with artifacts and release notes

### 4. Manual crates.io Publishing

If automatic publishing is not configured:

```bash
cargo publish --token $CARGO_REGISTRY_TOKEN
```

## Enabling Automatic crates.io Publishing

1. Get your crates.io API token from https://crates.io/me
2. Add token as GitHub Secret named `CARGO_REGISTRY_TOKEN`
3. Update `.github/workflows/release.yml`:
   ```yaml
   - name: Publish to crates.io
     run: cargo publish --token ${{ secrets.CARGO_REGISTRY_TOKEN }}
   ```

## Version Numbering

Follow Semantic Versioning (SemVer):

- **MAJOR** (0.x.0): Breaking API changes
- **MINOR** (0.x.0): New features, backward compatible
- **PATCH** (0.0.x): Bug fixes, backward compatible

Current: `0.1.0` (initial release)

## Post-Release

1. Verify release on crates.io: https://crates.io/crates/aprender
2. Check documentation: https://docs.rs/aprender
3. Monitor GitHub Actions for completion
4. Announce release (if applicable)

## Rollback Procedure

If a release has critical issues:

1. **Yank the bad version** from crates.io:
   ```bash
   cargo yank --vers 0.1.1
   ```

2. **Fix the issue** and release a patch version

3. **Never delete tags** - use new versions instead

## Quality Metrics Maintained

- TDG Score: 95.6/100 (A+)
- Test Coverage: 97.72%
- Mutation Score: 85.3%
- Repository Score: 95.0/100 (A+)
- Zero SATD comments
- Cyclomatic complexity ≤ 10
- Cognitive complexity ≤ 15