- Current:
0.1.0-SNAPSHOT(development branchmvp-0.0.1-snapshot) - Next Release:
0.1.0(first official release) - Target:
1.0.0(stable release with 100% compile-time contracts)
Following Semantic Versioning 2.0.0:
MAJOR.MINOR.PATCH[-QUALIFIER]- Pre-release:
-SNAPSHOT,-alpha,-beta,-rc1
# Development continues on mvp-0.0.1-snapshot branch
# Version in build.sbt: "0.1.0-SNAPSHOT"# Manual workflow dispatch
gh workflow run release.yml --field version=0.1.0 --field prerelease=false
# OR push tag
git tag v0.1.0
git push origin v0.1.00.2.0- Additional features, enhancements0.3.0- More contract features, integrations1.0.0- Stable API, production-ready
The .github/workflows/release.yml handles:
-
Version validation
- Checks semantic version format
- Prevents duplicate releases
- Supports both tag and manual triggers
-
Pre-release testing
- Full test suite with coverage
- Compile-fail tests validation
- Code formatting checks
-
Artifact building
- CLI JAR assembly (
validation-cli,contracts-extractor-cli) - Version updates in build.sbt
- Artifact upload to GitHub releases
- CLI JAR assembly (
-
Release creation
- Auto-generated release notes
- Binary artifact attachments
- Codecov integration
mvp-0.0.1-snapshot- Current development (pre-0.1.0)main- Stable releases (post-0.1.0)- Feature branches -
feature/xyz(merge to development branch)
# Option 1: Manual workflow trigger
# Go to GitHub Actions -> Release -> Run workflow
# Enter version: 0.1.0
# Pre-release: false
# Option 2: Git tag
git checkout mvp-0.0.1-snapshot
git tag v0.1.0
git push origin v0.1.0This will:
- ✅ Run full test suite with coverage
- ✅ Build CLI JARs
- ✅ Create GitHub release with artifacts
- ✅ Generate release notes highlighting 100% compile-time contracts
- ✅ Upload coverage reports
After first release:
- Merge
mvp-0.0.1-snapshot→main - Continue development on
mainwith-SNAPSHOTversions - Use proper semantic versioning for all future releases
All releases require:
- ✅ All tests passing
- ✅ Code coverage reporting
- ✅ Compile-fail tests validation
- ✅ Code formatting compliance
- ✅ Artifact generation success
Before cutting the first Release Candidate:
- Lineage auto-emits START/COMPLETE/FAIL events from PipelineBuilder lifecycle
- Marquez integration documented with docker-compose quickstart
- Dual-mode quality validation: native Spark (default) + optional Deequ enhancement
- End-to-end Spark example runs locally in seconds with Delta constraints
- Complete UsersPipeline.scala demonstrating all v1.0 features
- Public API documented in docs/public-api.md with "Proposed 1.0 surface" label
- Neutral comparison documentation in docs/why/compare.md with comprehensive links
- All internal packages properly namespaced (.internal. for non-public APIs)
- Deprecated SparkPipelineBuilder marked for removal at 1.0
- Clean module structure - unused modules removed (quality-deequ-runner, templates/)
- API Diff Analysis: No breaking changes in public surface since last RC
- Scripted Tests Green: All scripted tests pass in CI consistently
- Examples Runnable: All examples execute successfully in clean environment
- Compile-fail tests validate contract enforcement at build time
- Integration tests prove Delta Lake constraint enforcement
- Multi-cloud storage recipes documented (S3A/ABFS/GCS via Spark drivers)
- Memory safety - no driver OOM through sampling strategies
- Resource safety - all operations use Resource[F, _] for cleanup
- Effect system compatibility (Cats Effect + ZIO) validated
- Local execution completes in seconds (not minutes)
- Lineage emission works "out of the box" with Marquez docker-compose
Ship 1.0.0 only after:
- Public API frozen - no further changes to public surface
- Binary compatibility guarantees documented and validated
- All .internal. packages clearly marked as non-public
- Example templates consistent with public API usage
- All smoke tests stable (Spark/Flink/compile-fail) on CI
- Performance benchmarks meet local execution targets (<30 seconds)
- Resource cleanup verified under failure scenarios
- Multi-cloud storage integration proven via examples
- docs/public-api.md reflects final 1.0 surface (remove "Proposed" label)
- Migration guides from 0.x to 1.0 documented
- All examples demonstrate real-world usage patterns
- OpenLineage integration documented with multiple backends
- Delta Lake constraints working across S3A/ABFS/GCS storage
- Quality validation modes (native/Deequ) documented and tested
- Effect system abstraction allows ZIO/Cats Effect interchangeability
- Template generation produces buildable, runnable projects
After 1.0 release, the promise must read cleanly:
- Change the contract → won't compile (build fails fast)
- Fix types → compiles (type safety enforced)
- Run locally in seconds → see DQ + Delta constraints catch regressions
- Open Marquez → see lineage light up automatically
Current: 0.1.0-SNAPSHOT (mvp-0.0.1-snapshot branch)
↓
0.9.0-RC1 (first release candidate)
↓
0.9.0-RC2 (bug fixes, final polish)
↓
1.0.0 (stable release with API guarantees)
↓
1.x.x (feature additions, maintaining binary compatibility)