Architecture

wn-dev-std is a small installable Python package and the reference example for Wavenumber standards.

Boundaries

Profiles

Extension profiles include cpp-library, python-native-wasm, csharp-app, javascript-web-app, python-js-app, and zephyr-firmware. The C++ profile captures CMake, Ninja, clang-format, clang-tidy, CTest, and ABI rules. The mixed-mode profile builds on that for Geometer-style packages that combine Python, CMake/C++, platform wheels, and WASM outputs. The JavaScript profiles capture no-build browser runtime, checked JS/JSDoc, deterministic JS tests, CSS tokens, owned Web Components, JS-to-WASM smoke, vendor isolation, browser smoke, and simple command-verb rules. The Zephyr profile captures west-based firmware builds, app-owned source signoff, target toolchain notes, and embedded C/C++ complexity gates.

Quality Model

Wavenumber projects use Rack to make validation structure explicit. Rack names strata, lanes, concerns, and dependencies so a developer, CI system, or agent can tell whether a command is a fast edit-loop check, an integration test, or a release-facing gate. That structure avoids hiding critical checks behind one opaque script while still allowing each project to keep simple local commands.

In the local checkout, the reference Rack suite and signoff strata live at C:\ELI\prj\wavenumber-eng\wn-dev-std\tests.

The signoff process is the release-facing layer of that model. Signoff checks are intentionally boring and repeatable: formatting, static analysis, complexity limits, documentation status, contracts, release metadata, and project-specific ratchets. They should fail when new code violates accepted rules, while baselines can make existing debt visible without blocking unrelated work.

Every project needs a signoff gate. In Rack this is normally an L99_signoff stratum. The contents are profile-specific, but standard signoff should include measurable checks such as complexity, file size, function size, formatting, static analysis, docs, contracts, release metadata, and project-local ratchets.

Rack answers which validation lane is being run and why. Signoff answers whether this change is ready to merge or release. Keeping those ideas separate lets projects grow from a small local workflow into CI without changing the vocabulary reviewers and agents use.