Repository navigation
pawl is a language-agnostic anti-regression gate: every number you care about —
files over a length limit, as any count, coverage, passing tests — is recorded
as a baseline, and pawl check exits 1 when one of them moves the wrong way.
Install: npm i -D @pawl-tools/cli@0.7.0 · go install github.com/tiangong-dev/pawl/cmd/pawl@v0.7.0 · or uses: tiangong-dev/pawl@v0 in a workflow. Prebuilt binaries for darwin / linux / win32 on x64 / arm64 are attached below.
Breaking
- Removed
pawl diff. It wascheckwith the exit code forced to zero. Usepawl check || true;exit_codeis a field in--format json, so a step that must not fail CI needs no second command. - Removed
--format codeclimate. A third serialization of what--format jsonalready carries, and a usage error in combination with--only. GitLab Code Quality integration goes with it; GitHub PR comments and annotations are unaffected.
Added
pawl agent-mdprints the operating loop a coding agent needs to use the gate correctly. Install it withpawl agent-md >> AGENTS.md.pawl measureruns every dimension and prints the measurement document — no baseline read, no verdict. The document is the snapshot format byte for byte.check --current <path|->andrecord --current <path|->judge or record a measurement document instead of re-running the dimensions. Onemeasurecan now drive the check and the record that follows it — which matters when a dimension reads a report off disk, where two separate passes could read two different builds.builtin: linesnamed analyzer. One regex with optional named groups (path,line,rule,level) turns any tool's line output into findings, so a tool pawl has no built-in support for still gets one scan feeding several dimensions.valid_exit_codeson anycommanddimension. Declares which exit codes count as a successful run, for tools that report findings through a non-zero exit. Prefer it to|| true, which accepts every exit code and turns a crashed tool into a clean zero.-q/--quietonmeasure,recordandcheck: silences progress and advisory output, releasing a text verdict only when the exit code is non-zero.check --onlyreports what it skipped. The JSON verdict carries anexcludedarray naming every configured dimension the scope left out, so a scoped exit 0 cannot be mistaken for a green full gate.- Rolling
v0tag.uses: tiangong-dev/pawl@v0now tracks the latest release.
Changed
check's text output prints a one-line hint about--format jsonto stderr when stdout is not a terminal.