1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
[]
= "llmlint"
= "0.2.21"
= "2021"
= "1.85"
= "LLM-as-judge linter: enforce code-quality checks deterministic linters can't express, by driving real coding harnesses through oneharness."
= "MIT"
= "https://github.com/nickderobertis/llmlint"
= "https://github.com/nickderobertis/llmlint"
= "README.md"
= ["cli", "linter", "llm", "code-review", "oneharness"]
= ["command-line-utilities", "development-tools"]
# Package only what a crates.io consumer needs: the sources, manifest, readme,
# license, and the `assets/` embedded via `include_str!`. This keeps the
# published crate small and excludes the CLAUDE.md/AGENTS.md symlink (crates.io
# rejects symlinks), CI config, scripts, and the e2e tests + mock-oneharness
# fixture — a feature-gated, test-only bin that never builds in a default
# `cargo install`/`cargo publish`.
= [
"src/**/*.rs",
"Cargo.toml",
"README.md",
"LICENSE",
"assets/*",
]
[[]]
= "llmlint"
= "src/main.rs"
[]
= "llmlint"
= "src/lib.rs"
# Test-only fixture: a fake `oneharness` the e2e tests drive via the
# `--oneharness-bin` override, so the spawn/parse/vote path is proven
# hermetically and cross-platform. Gated behind a feature so it never ships in
# `cargo install`.
[[]]
= "llmlint-mock-oneharness"
= "tests/support/mock_oneharness.rs"
= ["mock-oneharness"]
[]
# Builds the mock-oneharness fixture. Enabled by `just test`/`just check` and CI.
= []
[]
= { = "4.6", = ["derive"] }
# ANSI styling for the human report (red FAIL / green PASS). Tiny and dependency-
# free — already in the tree via clap — so it adds color without growing the
# `cargo deny` surface. Pure style definitions; the TTY/`NO_COLOR`/`--color`
# decision lives in the command layer, not here.
= "1"
# The platform-correct sink for the colored report. `AutoStream` passes ANSI
# straight through on a VT-capable terminal but, on a *legacy* Windows console
# (no virtual-terminal processing), enables VT or translates the SGR codes into
# Win32 console attribute calls (`anstyle-wincon`) — so the colors render instead
# of printing as raw `←[31m` escapes. Already in the tree via clap (with its
# `wincon` default feature), so it adds no new `cargo deny` surface; the command
# layer still owns the `--color`/`NO_COLOR`/TTY decision and hands this a concrete
# on/off choice.
= "1"
= { = "1", = ["derive"] }
# `preserve_order` keeps JSON object keys in insertion order, so the structured-
# output schema can present each rule's fields in the exact order the judge
# should emit them (name -> rationale -> result). Used everywhere we hand-build
# JSON (schema, report) and round-trip configs.
= { = "1", = ["preserve_order"] }
= "0.10"
= "2"
= "0.4"
= "0.4"
= "2"
= "0.2"
= "3"
# HTTPS client for fetching remote `plugins` URLs. Pure Rust (rustls) so the
# binary stays self-contained and cross-platform with no external tools (no
# `curl`) and no system TLS/OpenSSL link. Minimal features: the rustls backend
# with bundled Mozilla roots — no gzip/json/cookies/charset.
= { = "3", = false, = ["rustls", "rustls-webpki-roots"] }
# Derives the public config JSON Schema (`assets/llmlint.schema.json`) straight
# from the `Config` model, so the schema referenced by `llmlint init` can never
# drift from the Rust types. Default features only (derive + std); emits 2020-12.
= "1"
[]
= "2"
= "3"
# Statistical micro-benchmarks of the pure engine (see `benches/`). Default
# features (plotters HTML reports, rayon) are dropped to keep the dependency
# tree — and the `cargo deny` surface — small; `cargo_bench_support` is the only
# feature `cargo bench` needs, and it still emits the per-bench `estimates.json`
# that `critcmp` diffs.
= { = "0.5", = false, = ["cargo_bench_support"] }
[[]]
= "e2e"
= "tests/e2e/main.rs"
# Statistical micro-benchmarks of the pure engine hot paths (config parse, plan,
# template render, schema, vote, report). `harness = false` hands `main` to
# Criterion instead of libtest, so `cargo nextest`/coverage never pick it up —
# it is measured, not gated. `cargo clippy --all-targets` still type-checks it,
# so it cannot rot.
[[]]
= "engine"
= false
# Deterministic allocation tallies for the same hot paths: a plain `main` with a
# counting global allocator, no Criterion. Exact counts compare across runs and
# commits without statistics; informational like every bench target.
[[]]
= "engine_allocs"
= false
# A CLI binary: optimize for a small, fast-starting artifact.
[]
= true
= "thin"
= 1
# Profiling builds: the shipped release artifact exactly, but with symbols kept
# so `samply` (see `scripts/profile.sh`) can attribute time to functions, and
# `cachegrind`/`callgrind` (see `scripts/bench-instructions.sh`) can be annotated
# afterwards. Never affects the published binary — `just profile` builds
# `--profile profiling` into `target/profiling/` while `[profile.release]` stays
# stripped.
[]
= "release"
= true
= false