Skip to content

v1.0.0 — becwright is stable

Latest

Choose a tag to compare

@DataDave-Dev DataDave-Dev released this 02 Jul 17:20
bb03efc

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.yaml schema (the nine rule fields and their meaning).
  • The .bec.yaml bundle format that export / import move between repos.
  • Built-in check names and their flags.
  • CLI commands and their exit codes (0 pass · 1 a blocking rule failed · 2 config/usage problem).
  • The check --json output shape.
  • MCP tool names and signatures.

What landed on the path to 1.0.0

  • Both on-disk formats are versioned.bec/rules.yaml carries an optional schema_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.yaml bundle was already versioned via becwright_bec.
  • The rules.yaml field set is frozen and test-lockedid, paths, check, exclude, intent, why_it_matters, rejected_alternatives, severity, target.
  • Exit codes and check --json are documented and test-locked so their shape can't drift silently.
  • A deprecation policy: from 1.0.0 on, anything in the contract is deprecated with a warning for at least one minor and removed only in the next major — no 1.x upgrade breaks a rule file, bundle, or check script without notice.
  • Declared Development Status :: 5 - Production/Stable.

Fixed

  • becwright init --from-claude-md no longer misreads a per-function line count as a per-file cap. A phrase like "~50 lines per function, ~800 per file" used to derive max_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 becwright

Full changelog: https://github.com/DataDave-Dev/becwright/blob/main/CHANGELOG.md#100--2026-07-02