keelrun-cli 0.4.1

The `keel` binary: run | init | doctor | status | explain. The product's face — every command has a byte-deterministic `--json` twin and stable exit codes (dx-spec §1–2, §5–6).
Documentation
# Build config for a pip-installable `keel` CLI distribution — maturin's `bin`
# bindings (auto-detected: this crate has a [[bin]] target and neither a pyo3
# dependency nor a cdylib target — see crates/keel-cli/Cargo.toml) compile the
# `keel` binary and place it under the wheel's `<pkg>.data/scripts/` directory,
# where pip/uv/uvx put it on PATH. No Python glue, no libpython link: one
# prebuilt binary per platform — NFR5's "static Rust binary" promise, shipped
# through pip as well as `cargo install`.
#
# This is a SEPARATE distribution from crates/keel-py (which ships the
# `keel_core` native extension module via pyo3): the CLI needs no pyo3
# bindings, and maturin does not support mixing `bin` and cdylib/pyo3 targets
# in one project. Published as `keelrun-cli` (docs/naming-decision.md): the
# plain `keel-cli` name is taken on PyPI (and on crates.io) by an unrelated
# project; `cargo install keelrun-cli` / `pip install keelrun-cli` both give
# the `keel` binary on PATH.
#
# Local verification (one distribution short of the literal
# docs/sprint-plan.md release-gate command `uvx keel run` — that spelling
# needs the PyPI name `keel` itself, i.e. the `keelrun` front end wheel, not
# this CLI wheel):
#
#   python3 -m venv /tmp/keel-cli-build && . /tmp/keel-cli-build/bin/activate
#   pip install 'maturin>=1.7,<2'
#   maturin build --release -m crates/keel-cli/Cargo.toml -o dist
#   uvx --from ./dist/keelrun_cli-*.whl keel --help
#   uvx --from ./dist/keelrun_cli-*.whl keel explain KEEL-E011 --json
[build-system]
requires = ["maturin>=1.7,<2"]
build-backend = "maturin"

[project]
# Distribution name; the installed EXECUTABLE name is `keel` (the [[bin]] name
# in Cargo.toml). Version is read from the crate (workspace version) —
# scripts/check-versions.py asserts this file stays `dynamic`, same rule as
# crates/keel-py/pyproject.toml.
name = "keelrun-cli"
license = "Apache-2.0"
dynamic = ["version"]
description = "The keel CLI (run | init | doctor | status | explain | flows | trace) as a prebuilt binary — no Rust toolchain required to install it."
requires-python = ">=3.8"
classifiers = [
    "Programming Language :: Rust",
    "Environment :: Console",
]

[tool.maturin]
bindings = "bin"
strip = true