open-standards/arl/arl-rs/crates/arl-cli/Cargo.toml
Transaction Science cca3fa9369 arl-cli: the arl reference checker (validate / lint / verify / explain)
A thin, dependency-light command line over arl-core + arl-sandbox — the
gate logic stays single-sourced in the libraries; this is a faithful
front end so a claim can be checked in CI:

  arl validate <claim.json>    cross-axis gates → exit 0 (pass) / 1 (fail)
  arl lint     <claim.json>    controlled-vocabulary findings (excluded → exit 1)
  arl verify   <session.json> <attestation.json>   attestation check
  arl explain                  the axes and gates, as a cheat sheet

Exit codes make it a pipeline gate: a claim that fails the ARL gates fails
the build. Verified end-to-end through the built binary — a minimal claim
deserializes with omitted fields at the uncharacterized floor and the 8
gates fire (incl. the AGI exclusion); lint flags excluded terms; verify
round-trips a real Supervisor attestation and rejects a tampered session.

Two correctness/ergonomics fixes this enabled:
- Claim is #[serde(default)] — a hand-written claim JSON may omit fields;
  missing ones default to the honest floor (ARL 1 / Class E / S0 /
  energy undisclosed / flags false).
- ValidationDepth is #[serde(try_from = "u8")] — an out-of-range depth
  (e.g. 99) is now rejected at the parse boundary, not silently accepted.
- arl-sandbox re-exports SigningKey/VerifyingKey so consumers build a
  Supervisor without depending on ed25519-dalek directly.

arl-cli 9 tests; arl-rs workspace 51 tests, 0 failures.

Co-Authored-By: Claude Opus 4.7 <[email protected]>
2026-05-28 03:53:55 -04:00

18 lines
552 B
TOML

[package]
name = "arl-cli"
version.workspace = true
edition.workspace = true
rust-version.workspace = true
license.workspace = true
repository.workspace = true
authors.workspace = true
description = "arl — the ARL reference checker. Validate a claim against the four-axis cross-axis gates, lint its vocabulary, and verify a session attestation, from the command line or CI."
[[bin]]
name = "arl"
path = "src/main.rs"
[dependencies]
arl-core = { path = "../arl-core" }
arl-sandbox = { path = "../arl-sandbox" }
serde_json = { workspace = true }