This repository demonstrates LintPal on a small Go HTTP service. The default branch is a passing baseline. The canonical pull request intentionally introduces authorization and input-validation violations so LintPal can publish inline findings and a deterministic gate result.
export DEMO_API_KEY='local-demo-key'
go run ./cmd/serverCreate an order:
curl -i http://localhost:8080/orders \
-H 'Authorization: Bearer local-demo-key' \
-H 'Content-Type: application/json' \
--data '{"customer":"Ada","item":"keyboard","quantity":2}'The committed .lintpal/rules/ files come from the versioned LintPal rule catalog:
lintpal rule import github:diffpal/lintpal-rules//general@v1.1.0
lintpal rule import github:diffpal/lintpal-rules//go@v1.1.0
lintpal rule validateThe catalog's 0.90 authorization and input-validation thresholds are calibrated against the live Jev demo case. Production repositories should choose thresholds for their own gate policy.
- Open Settings → Secrets and variables → Actions.
- Add a repository secret named
TYPESAFE_API_KEYcontaining the TypeSafe/Jev provider key. - Re-run the LintPal workflow on the canonical pull request.
The workflow uses GitHub's generated GITHUB_TOKEN only to publish the check result and inline comments. Provider credentials are environment variables, never Action inputs. A job-level same-repository guard prevents fork pull requests from reaching TYPESAFE_API_KEY.
LintPal classifies changed lines against fixed rules through Jev. It does not generate a narrative code review. The summary is deterministic: No blocking findings, 1 blocking finding, or N blocking findings.
MIT licensed. See LICENSE.