Portability and validation status ================================= Workbench uses four evidence levels. **Wheel** means a platform-tagged distribution was produced. **Installed** means that wheel installed and imported in a fresh virtual environment. **Contracts** means the installed public API loaded the bundled Slang runtime and compiled a representative shader using a packaged Workbench module. **Runtime** means the canonical native harness created the named QRhi device and pipeline and recorded a draw. A lower level never implies a higher one. **Supported** describes the intended product/platform contract. **Packaged** records that a wheel exists for the stated interpreter and architecture. **Tested** records fresh-wheel and native contract execution. **Runtime validated** is reserved for a successful draw through ``miskeyed-workbench --rhi --rhi-smoke-test``. The 0.3.0 release gate covers CPython 3.11, 3.12, and 3.13. Native contracts and runtime smoke execute once per platform on 3.11; the other Python lanes validate the wheel and installed-package contract without claiming another render result. Release branches exercise the same build and smoke implementation with a stabilization subset: Python 3.11 and 3.13 on every platform. Main integration adds Python 3.12 and is the exhaustive final gate. This makes ``release/*`` an early cross-platform staging ground without duplicating the full main cost or granting publication permissions. .. list-table:: 0.3.0 release validation :header-rows: 1 * - Platform - Wheels - Default QRhi backend - Runtime validation status * - Windows x64 - CPython 3.11--3.13 - D3D11 - VALIDATED on Python 3.11: D3D11 and Vulkan/SwiftShader * - Linux x64 - CPython 3.11--3.13 - Vulkan - VALIDATED on Python 3.11: Vulkan with the explicitly selected Mesa lavapipe ICD * - macOS arm64 - CPython 3.11--3.13 - Metal - VALIDATED on Python 3.11: Metal * - macOS x86_64 - CPython 3.11--3.13 - Metal - VALIDATED on Python 3.11: Metal The workflow writes a per-lane Actions summary from actual step outcomes. Read ``success`` as evidence only for that column and lane. ``NOT VALIDATED`` means no runtime smoke ran in that lane; it is not a failure and is not a runtime pass. ``UNSUPPORTED`` is reserved for a combination the product does not offer. The latest release-candidate run is the source of truth for whether required evidence actually passed. Support wording in release notes must be updated from those results, not from the intended matrix or from wheel availability alone. The stable support definition is kept in ``ci/support-matrix.json``. Repository tests verify that its Python range agrees with ``pyproject.toml`` and that every documented wheel and runtime backend has a corresponding release-matrix lane. The workflow remains human-authored so runner and driver setup stays visible rather than hiding CI policy in a generator.