becwright is stable. This first 1.0.0 turns a well-tested 0.x into a tool with a committed public contract you can depend on.
No code behavior changed since 0.4.0 — on purpose. This release ships the guarantees, format versioning, and docs that make the contract dependable, so upgrading from 0.4.0 is safe and gives you the same tool with a stable promise.
The public contract
Stable under SemVer as of 1.0.0, changed only on a major bump (with a one-minor deprecation notice in between):
- The
.bec/rules.yamlschema (the nine rule fields and their meaning). - The
.bec.yamlbundle format thatexport/importmove between repos. - Built-in check names and their flags.
- CLI commands and their exit codes (
0pass ·1a blocking rule failed ·2config/usage problem). - The
check --jsonoutput shape. - MCP tool names and signatures.
What landed on the path to 1.0.0
- Both on-disk formats are versioned —
.bec/rules.yamlcarries an optionalschema_version(absent = 1, so existing files keep working); a file stamped newer than the engine understands is refused with a clear "upgrade becwright" error instead of being silently misparsed. The.bec.yamlbundle was already versioned viabecwright_bec. - The
rules.yamlfield set is frozen and test-locked —id,paths,check,exclude,intent,why_it_matters,rejected_alternatives,severity,target. - Exit codes and
check --jsonare documented and test-locked so their shape can't drift silently. - A deprecation policy: from
1.0.0on, anything in the contract is deprecated with a warning for at least one minor and removed only in the next major — no1.xupgrade breaks a rule file, bundle, or check script without notice. - Declared
Development Status :: 5 - Production/Stable.
Fixed
becwright init --from-claude-mdno longer misreads a per-function line count as a per-file cap. A phrase like "~50 lines per function, ~800 per file" used to derivemax_lines --max 50(flagging nearly every file); it now declines to derive a cap from that ambiguous phrasing. Surfaced while field-testing becwright against real repositories.
Install
npm install -g becwright # self-contained binary, no Python
pipx install becwright # or pip install becwrightFull changelog: https://github.com/DataDave-Dev/becwright/blob/main/CHANGELOG.md#100--2026-07-02