cortenforge 0.6.0

Umbrella crate for the CortenForge stack; re-exports app-agnostic crates with feature wiring.
Documentation
# Release checklist (CortenForge crates)

Target version: `0.6.0`

Note: Keep all workspace crates on a single shared version for simplicity (e.g., 0.6.0 across the board).

Follow these steps to publish the `cortenforge-*` crates and tag a release. Adjust the crate list if new crates are added.

## Version Management

**Automated version synchronization** is now available via `scripts/sync_versions.sh`:

```bash
# Check for version mismatches (dry-run)
./scripts/sync_versions.sh

# Apply version sync if needed
./scripts/sync_versions.sh --apply
```

This script:

- Parses the workspace version from root `Cargo.toml`
- Updates all internal `cortenforge-*` dependency versions
- Shows diffs before applying changes
- Prevents version drift across the 11-crate workspace

**CI validation**: Version consistency is enforced in CI (`.github/workflows/ci.yml`). The CI will fail if:

- Any crate package version doesn't match the workspace version
- Any internal `cortenforge-*` dependency has a mismatched version
- Any publishable manifest contains path dependencies

## Prereqs

- Make sure working tree is clean and on the intended release branch.
- Ensure `cargo` is logged into crates.io and has publish rights.
- Confirm versions: currently `0.6.0` across all crates.
  - Run `./scripts/sync_versions.sh` to verify
- Release notes: update the changelog entry in `docs/cortenforge_book/src/00_workspace/changelog.md`.

## Release notes (v0.6.0)

- **BREAKING**: Extensive terminology standardization (PolypLabel→DetectionLabel, probe→articulated_instrument, FrontCamera→PrimaryCapture, TinyDet/BigDet→LinearDetector/ConvolutionalDetector, polyp_seed→label_seed)
- **BREAKING**: Removed legacy feature aliases (tinydet/bigdet)
- **BREAKING**: Removed Bevy dependency from inference crate
- **BREAKING**: Consolidated Label type hierarchy
- **BREAKING**: Renamed InferencePlugin→InferenceRuntimePlugin
- **BREAKING**: Standardized naming conventions (Config suffix, abbreviations, State suffix, detector naming)
- **BREAKING**: Consolidated recorder types into sim_core::recorder module
- **BREAKING**: Removed backward-compatible prelude re-exports
- Added comprehensive API stability markers (stable vs experimental)
- Added versioning strategy documentation and SemVer policy
- Complete crates.io publishing preparation (metadata, docs.rs config, READMEs)
- Added extensive conventions documentation
- See CHANGELOG.md and MIGRATION_0.6.0.md for detailed upgrade instructions

## Previous release notes (v0.5.1)

- Added automated version synchronization script (`scripts/sync_versions.sh`)
- Added CI validation for version consistency
- Refactored `burn_dataset` into focused modules (capture, warehouse, batch, splits, aug, types, validation, parquet)
- Added comprehensive integration tests for E2E workflows
- All workspace crates synchronized to 0.5.1

## Previous release notes (v0.5.0)

- Removed `gpu_amd_windows` alias and legacy warehouse command fallback/tests in tools.
- Removed legacy crate-name deprecation notices from crate README/Cargo descriptions.
- Docs updated to remove legacy alias guidance and note the breaking changes.

## Crate order (publish)
1. `cortenforge-data-contracts`
2. `cortenforge-models`
3. `cortenforge-burn-dataset`
4. `cortenforge-cli-support`
5. `cortenforge-vision-core`
6. `cortenforge-sim-core`
7. `cortenforge-capture-utils`
8. `cortenforge-inference`
9. `cortenforge-vision-runtime`
10. `cortenforge-training`
11. `cortenforge-tools` (publishable; `publish = true`)
12. `cortenforge` (umbrella)

## Steps

1) **Bump versions** in root `Cargo.toml` to target version (e.g., `0.5.2`)

2) **Sync all internal dependencies**:

   ```bash
   ./scripts/sync_versions.sh --apply
   ```

3) **Update changelog** and release notes in this file and in `docs/cortenforge_book/src/00_workspace/changelog.md`

4) **Format and lint**:

   ```bash
   cargo fmt --all
   cargo clippy --workspace --all-targets --all-features -- -D warnings
   ```

5) **Test**:

   ```bash
   cargo test --workspace --locked
   ```

6) **Dry-run publish** for each crate to verify:

   ```bash
   cargo publish -p cortenforge-data-contracts --dry-run
   cargo publish -p cortenforge-models --dry-run
   cargo publish -p cortenforge-burn-dataset --dry-run
   # ... (repeat for all crates in dependency order)
   ```

7) **Publish crates** in dependency order (see "Crate order" section below):

   ```bash
   # Manual (recommended for first-time or careful releases):
   cargo publish -p cortenforge-data-contracts
   # Wait 2-3 minutes for crates.io indexing
   cargo publish -p cortenforge-models
   # ... continue in order

   # Automated (for experienced releases):
   for c in cortenforge-data-contracts cortenforge-models cortenforge-burn-dataset cortenforge-cli-support cortenforge-vision-core cortenforge-sim-core cortenforge-capture-utils cortenforge-inference cortenforge-vision-runtime cortenforge-training cortenforge-tools cortenforge; do
     cargo publish -p "$c"
     sleep 120  # 2 minutes between crates
   done
   ```

8) **Tag the release**:

   ```bash
   git tag -a v0.5.2 -m "Release v0.5.2"
   git push --tags
   ```

9) **Regenerate lockfile** (optional, keeps root in sync):

   ```bash
   cargo generate-lockfile
   ```

10) **Update docs/README** with release notes and any feature/backend notes

## Verify tags + crates.io

- Tag points at the expected commit: `git show v0.5.1 --no-patch`
- Tag is on origin: `git ls-remote --tags origin v0.5.1`
- Crates.io shows 0.5.1: `https://crates.io/crates/<crate>`
- Version consistency: `./scripts/sync_versions.sh` (should show "✓ All versions synchronized")

## Notes
- Burn patch: upstream has published a fixed `burn-core` release; remove any vendored patch and drop `[patch.crates-io]` overrides before publishing.
- Bincode note: `bincode 3.0.0` is a stub on crates.io (compile_error); use `2.0.1` until 3.x is real.
- Keep path deps out of manifests; use versioned deps only.
- If publishing `cortenforge-tools`, set `publish = true` in `tools/Cargo.toml` and ensure its deps are published first.

## Upgrade cadence
- Target: quarterly dependency upgrades, or immediately when upstream breakage requires it.
- If MSRV changes, update both `README.md` and CI toolchain pins in the same PR.