Skip to content

v0.2.0

Choose a tag to compare

@github-actions github-actions released this 17 Jul 00:37
v0.2.0
4ff69f0

Alpha release completing Hearth's first integrated Ascend hardware-validation cycle and hardening
the scale-to-zero control plane based on those results. Atlas 300I Duo is verified through the
multi-replica 0→1→2→0 lifecycle, while Ascend 910B3 is verified through the complete
single-device 0→1→0 lifecycle. Hearth remains v1alpha1 and is not production-ready.

Added

  • A shared Ascend hardware-validation guide covering required images, validation levels, evidence,
    and separate 910B, Atlas 300I Duo, and Atlas 300I Pro result sets.
  • Full physical 910B3 evidence for device-plugin scheduling, single-device 0→1→0, cold and warm
    inference, reject mode, bounded-queue backpressure, metrics, drain, self-heal, Helm upgrade, and
    reboot recovery.
  • Full Atlas 300I Duo hardware evidence for the integrated 0→1→2→0 lifecycle, inference,
    backpressure, reject mode, drain, cache persistence, self-heal, Helm upgrade, and reboot recovery.
  • Validation bounds for accelerator counts, scaling values, runtime ports, and termination grace
    periods.

Changed

  • Prometheus Operator resources and RBAC are decoupled from core reconciliation. Hearth now exposes
    stable metrics discovery labels while optional ServiceMonitor and Grafana assets live under
    examples/observability/.
  • Runtime metric fields are optional metadata for external observability; backend adapters and
    autoscaling no longer carry an unused runtime-metrics dependency.
  • InferenceRuntime family and vendor enums now match the built-in implementations: vLLM on
    NVIDIA or Ascend. Manager RBAC is reduced to the CRD operations used by the passive runtime and
    service reconcilers.
  • Ascend device profiles use equal priority, so clusters with multiple installed profiles must pin
    the intended hardware runtime instead of silently preferring 910B.
  • Runtime and service examples now live in independently deployable, vendor/device-specific
    examples/ directories, with concise filenames that leave the device model to the directory.
  • Prewarm Jobs inherit the runtime's node selector, tolerations, scheduler, and Volcano queue so
    node-local model data is prepared where the backend can run.
  • LLMService resources are reconciled when a matching InferenceRuntime changes.
  • The Ascend 910B runtime now invokes vllm serve explicitly and uses MindCluster's standard
    accelerator=huawei-Ascend910 node label. A dedicated hardware-validation service example uses a
    60-second drain, the shortest tested value that completed a live 910B3 stream without aborting.
  • Ascend 310P examples invoke vllm serve explicitly and pin FP16 for the validated 310P3 path.

Fixed

  • Keep retrying unchanged reconciliation failures, reject ambiguous equal-priority runtime
    selections, and reject Volcano queue names unless the Volcano scheduler is selected.
  • Apply scaleDownStabilization to both KEDA's zero cooldown and HPA scale-down behavior, with
    validation for the HPA's one-hour limit.
  • Build multi-platform images on the build host architecture and fail the docker-buildx target
    when the image build fails.
  • Embed the release tag in operator and gateway images built by the release workflow.
  • Publish the release chart only after both release images build successfully.
  • Align Helm manager pod security and termination settings with the Kustomize deployment.
  • Pin Kind and KEDA in E2E workflows, install Helm explicitly, and fail CI on uncommitted module or
    generated-file changes.
  • Make repeated Podman scale-to-zero E2E runs replace and clean their temporary image archives.
  • Reject unsupported BakedImage cache requests instead of silently rendering them as uncached.
  • Reject invalid PVC claim names and model paths that could escape the mounted model volume.
  • Prevent accelerator-free prewarm Pods from autoloading PyTorch vendor backends and requiring host
    driver libraries.
  • Report the committed SSE 200 for keepalive activation timeouts and avoid classifying canceled
    clients as activation timeouts in gateway metrics.

🙏 Thanks to everyone who contributed to this release — the merged PRs and first-time
contributors are credited under What's Changed and New Contributors below.

What's Changed

🔧 Other Changes

New Contributors

Full Changelog: v0.1.0...v0.2.0