Mixed Mode Standard

The python-native-wasm profile covers packages that combine a Python distribution, native C or C++ build outputs, and optional WASM runtime artifacts. Geometer is the reference shape for this profile. This profile inherits the native tooling expectations from the C++ Standard.

default_mixed_mode_standard

Returns the current mixed-mode profile for Python packages with native and WASM runtime artifacts.

render_mixed_mode_standard

Renders the mixed-mode profile as text or JSON.

Repository Shape

Build Backend

Pure Python packages use Hatchling. Mixed-mode packages may use a custom setuptools.build_meta path when the wheel must bundle platform executables or libraries. The custom hook must be documented and covered by installed-wheel validation. Native configure presets use Ninja by default and enable CMAKE_EXPORT_COMPILE_COMMANDS=ON.

Artifact Policy

Mixed-mode packages may commit distributable runtime artifacts only under grouped paths such as dist/native/windows-x64/, dist/native/linux-x64/, dist/native/macos-arm64/, and dist/wasm/browser/. Root-level files in dist/ are limited to documentation or manifests.

Local build state remains ignored. Examples include build/, build-*/, build-wasm/, .deps/, out/, .venv/, and test result folders.

Release Signoff

Release signoff must prove that the native CLI, Python source wrapper, installed wheel, and WASM targets still work. The release gate should run Ruff, Pyright, clang-format, Lizard complexity checks for owned C/C++, CTest, native validation, package validation, and a stale artifact policy check.

Version Contract

Version identity must be synchronized across Python package metadata, CMake project metadata, CLI --version, native runtime version APIs, and ABI generation fields. Date-based public versions remain the default; ABI dates change only when the native ABI generation changes.

CI Shape

CI should keep separate lanes for Python signoff, native build and CTest, platform wheel build and installed-wheel smoke tests, WASM build and smoke tests, and final release validation from a GitHub Release published event.