This repository implements a nonnormative tool for the Judgment Pack Specification. The tagged specification artifacts remain authoritative when implementation behavior disagrees with them.
Go 1.24 or newer. go.mod carries a go 1.24.0 directive, and the requirement is real
rather than conservative: the runtime reads through os.Root, a standard-library type
introduced in Go 1.24 — see Build and try it locally for
why every read goes through a directory handle.
Build it and check it runs:
mkdir -p bin
env GO111MODULE=on CGO_ENABLED=0 go build -trimpath -o ./bin/jpack ./cmd/jpack
./bin/jpack versionversion prints the runtime's own version, the specification versions it can serve, and the
provenance of its bundled artifacts — which is the fastest way to confirm a build is wired up.
While iterating, run one package or one test rather than the whole suite:
env GO111MODULE=on go test ./internal/carrier
env GO111MODULE=on go test ./internal/carrier -run '^TestDuplicateMemberReportsNestedPointer$'The ^...$ anchors matter: -run takes a regular expression, so an unanchored name also
matches every test whose name contains it.
Run the full checks below before opening a pull request.
You're welcome to comment that you'd like to take an issue, and a maintainer may assign it to you. Only that assignment reserves it. Without one, the first pull request that meets the issue's acceptance criteria is the one that gets merged, and until then the issue stays open to anyone.
Work on one issue at a time. Finish the pull request you have open, or say you're withdrawing it, before you take another. We assign at most one issue to each contributor at once.
If an assigned issue goes quiet for a couple of weeks with no pull request, a maintainer will check in. If there's no reply within a week after that, the issue is unassigned so someone else can pick it up. You're welcome to take it back while it's still open.
scripts/dev/check.sh runs every check CI runs, from the list in dev.json (--setup installs
the Python dependency of one check first); run it once and paste its summary block in the pull
request body. The commands below are its Go steps:
env GO111MODULE=on go fmt ./...
env GO111MODULE=on go vet ./...
env GO111MODULE=on go test ./...
env GO111MODULE=on CGO_ENABLED=0 go build -trimpath ./cmd/jpackChanges should include focused tests for human and JSON output, exit status, input limits, and adversarial behavior. Never add a runtime fetch of mutable specification branches.
Every pull request carries a one-line Material-decision impact: declaration, and material
decisions require the recorded cross-vendor review described in
docs/adr/README.md.
Material command or output changes should first describe compatibility, migration, automation, security, privacy, and authority consequences in an issue. Release version increments and prereleases follow VERSIONING.md.
The public core may contain generally useful developer commands, offline JPS validation, public plugin contracts, and open integrations. Proprietary services, billing, enterprise administration, customer-specific behavior, and private dependencies belong in separate repositories.
Contributions must be signed off with git commit --signoff, certifying the Developer Certificate
of Origin 1.1: https://developercertificate.org/. Contributions are licensed under Apache-2.0.
Participation is governed by CODE_OF_CONDUCT.md.