6.0 KiB
Release Readiness
Datoviz v0.4 can be an aggressive architecture release with future API breaks still possible. It should not ship as a loose development snapshot. A public release needs a coherent surface, repeatable validation, supportable packaging, honest documentation, and useful examples.
Freeze Policy
Feature freeze and API freeze are separate.
Feature freeze means the declared v0.4 capability set is present or explicitly classified. Required before feature freeze:
- native scene/app path covers the declared visual and interaction subset;
- retained textured mesh has deterministic example or fixture proof;
- WebGPU/WASM has an honest experimental subset with unsupported-feature diagnostics;
- Python binding generation and smoke tests work for the intended public C surface;
- v0.3 visible capability gaps are fixed, explicitly deferred, or external/GSP-owned;
- core examples compile and exercise the release feature set.
API freeze means names, include paths, ownership, lifetimes, callbacks, and common workflows have been reviewed as a coherent v0.4 surface. Required before API freeze:
- public headers are inventoried and classified;
- ownership, destroy order, callback lifetimes, polling, and readback lifetimes are documented;
- lower-level APIs are marked supported, experimental, or advanced/unstable;
- recoverable error/status behavior is distinguished from assertion-only invariants;
- accidental public symbols are removed, renamed, or explicitly documented.
Patch releases may fix defects, but should avoid unnecessary source breakage after v0.4.0.
Release Readiness Audits
Run these as bounded release tasks, not broad refactor branches:
- public API inventory, docstrings, include structure, object ownership, callbacks, and recoverable error/status policy;
- implementation safety audit for allocation, partial cleanup, Vulkan ownership, command-buffer lifetimes, sizes/counts/strides/downcasts, and long live-loop resource churn;
- test-suite inventory separating release regressions, GPU/Vulkan validation, examples, docs, package install, and optional long-running checks;
- public Markdown audit for obsolete v0.3 claims, broken links, mixed page types, and missing status labels;
- package, license, asset, data, generated-media, and third-party-notice review before final artifacts.
Record actionable findings in the owning spec, docs gate, or issue. Do not let broad cleanup delay
v0.4.0 unless it blocks the declared release surface.
Validation Matrix
Each release candidate should record which of these ran and what remains excluded or known-broken:
git diff --check;- clean build from documented commands;
- focused and full
just testruns; just spec-check;- example smoke tests;
- docs build and link checks;
- gallery smoke and selected capture generation;
- static-analysis triage where practical;
- ASan/UBSan or equivalent memory/undefined-behavior checks where practical;
- Vulkan validation-layer smoke for graphics lifetimes, render targets, command buffers, swapchains, or synchronization;
- source archive and wheel build/install smokes on supported platforms.
The strict documentation-site build, including WebGPU/WASM assets, is required once at the exact release commit on the designated documentation host. It is not required on every physical or wheel validation machine. Other source-validation hosts should still run the lightweight documentation checks relevant to their checkout: API documentation, doctests, generated-document drift, public status facts, and example manifests. Release evidence must record the host and exact commit used for the strict site build.
Release-Blocking Checklists
Code:
- public headers reviewed;
- public symbols inventoried;
- ownership and destroy rules reviewed;
- error paths and partial initialization reviewed;
- static-analysis findings triaged;
- memory/UB checks run where practical;
- Vulkan validation smoke passed for graphics paths;
- long-running live-loop smoke passed for selected examples.
Documentation and examples:
- feature/status table published;
- known issues and unsupported variants published;
- C API reference generated or outlined;
- Python binding and WebGPU/WASM scope documented;
- every public visual or feature has a minimal example or explicit status;
- gallery media is generated from current code;
- data licenses, dependencies, and attribution are listed.
- citation metadata is release-ready:
CITATION.cffis current, the public citation page explains version-specific and project-level citation, and the final Zenodo DOI/date placeholders are resolved beforev0.4.0.
Packaging and assets:
- source archive builds;
- wheels build, install, and smoke-test;
- dynamic dependencies are documented;
- optional features fail gracefully when dependencies are unavailable;
- every shipped asset has a known license;
- generated media and public datasets have provenance;
- installed CMake/pkg-config consumers compile against public headers without private include paths, including transitive dependencies exposed by those headers;
- checksums/signing policy is decided.
- the GitHub release is archived with Zenodo for final
v0.4.0, and the release notes record both the version DOI and the concept DOI.
Scholarly citation:
- a JOSS draft exists in
paper/before RC1; - the draft has the required statement of need, state of the field, software design, research impact, AI usage disclosure, acknowledgements, and references sections;
- JOSS submission status is recorded in release notes, but acceptance is not a blocker for
publishing
v0.4.0.
Current macOS arm64 evidence, recorded 2026-06-18: vendored package install, system-auto package install, strict Homebrew-style source install, install-prefix audit, installed CMake consumer, installed pkg-config consumer, host-native wheel build/inspect/check, and wheel CMake consumer passed locally. Remaining packaging proof that cannot be completed on this Mac: hosted macOS 15 wheel repair/tag validation and Windows wheel/runtime consumer validation.