Quarto-Needs 0.2.0: a declared public contract and deployment views

Quarto-Needs 0.2.0 is out. It is the second production release of my requirements-as-code engine for Quarto, where requirements, decisions, components, risks, tests and evidence are written as .need blocks in .qmd files and resolved into a typed graph that validation, coverage and the rendered documentation all read from. The Python engine is published on PyPI, and the Quarto extension installs the matching version for each project.
The main change is a declared public contract. Every command, export format and integration is now classified as stable, preview or experimental in a single registry, and the command-line help, the manual’s stability chapter, the README and the changelog are generated from it or checked against it. Scanning, checking, coverage, tracing, queries, quality gates, baselines, diff, impact and the JSON, CSV and Markdown exports are stable; evidence, Git-range reports, the language server and the SARIF, JUnit, ReqIF and JSON-LD exports are in preview; migration, OSLC and the C4 projections remain experimental.
The architecture model also grew. Relations can carry attributes such as a label and a technology, and the C4 projections gain deployment views and numbered dynamic views. A new reproducibility workflow checks that analysis outputs are byte-identical across Python 3.10 to 3.14, Ubuntu, macOS and Windows, locales and time zones. One behaviour changed on purpose: the risk-mitigation gate now fails when a project has no high or critical risks to measure, instead of passing an empty population.