min_version = "2026.10.3"
[tools]
"github:crate-ci/committed" = "1.1.11"
lefthook = "2.1.10"
rust = { version = "1.97.1", components = "rustfmt,clippy", mr_boxington = true }
mr-boxington = "1.20.0"
"github:EmbarkStudios/cargo-deny" = "0.20.2"
[tasks.format]
description = "rustfmt check"
run = "cargo fmt --all -- --check"
[tasks.lint]
description = "clippy -D warnings"
run = "cargo clippy --all-targets --all-features -- -D warnings"
[tasks.test]
description = "Test suite"
run = "cargo test --all-features"
timeout = "30m"
[tasks.deny]
description = "License, ban, and source policy (offline)"
run = "cargo deny check licenses bans sources"
[tasks."deny:advisories"]
description = "RustSec advisories and yanked crates (network)"
run = "cargo deny check advisories"
[tasks.commit-msg]
description = "Lint the git commit-msg file with committed"
usage = 'arg "<file>" help="Path to the commit message file"'
run = 'committed --commit-file "${usage_file}"'
[tasks.commits]
description = "Lint commit messages with committed"
usage = 'arg "[commits]..." var=#true default="HEAD" help="Commits or ranges"'
run = 'eval "set -- $usage_commits"; for c; do committed "$c" || exit 1; done'
[tasks.verify]
description = "CI-safe gate: format, clippy, test, deny"
depends = ["format", "lint", "test", "deny"]
[tasks.build]
description = "Build the release binary"
run = "cargo build --release"
[tasks.snapshots]
description = "Read and accept what a verb wrote, one scenario at a time"
tools = { "github:mitsuhiko/insta" = { version = "1.48.0", exe = "cargo-insta" } }
run = "cargo insta review"
[tasks.schema]
description = "Regenerate schema/tasks.schema.json from the ledger types"
run = "cargo run --quiet -- schema"