Harbor Rewardkit
Rewardkit is a lightweight verifier package for Harbor tasks or standalone use.
Installation
uv tool install harbor-rewardkit
Programmatic verifier
# tests/checks.py
from rewardkit import criteria
criteria.file_exists("output.txt")
criteria.file_contains("output.txt", "hello")
Run it with:
uvx --python '>=3.12,<3.14' --from harbor-rewardkit rewardkit /tests
Rewardkit runs the criteria against /app and writes
/logs/verifier/reward.json. With files directly under tests/, their scores
are combined into one reward automatically.
Configure scoring
Each Python file that registers criteria is one equal-weighted component named
after its filename stem. Use [scoring.<stem>] in reward.toml to change how
the criteria within that file combine:
# tests/reward.toml
[scoring.checks]
aggregation = "all-pass"
Files that only provide imports or shared=True criterion definitions and
register no checks are ignored.
Judge verifier
# tests/quality.toml
[judge]
judge = "anthropic/claude-opus-5-5"
files = ["/app/main.py"]
[[criterion]]
description = "Is the code correct?"
type = "binary"
judge is a LiteLLM model, an agent such as claude-code, or jev for
JEV, a new type of language model from TypeSafe (install harbor-rewardkit[jev]).
Python files and judge TOMLs can coexist. A judge TOML is also a component named
after its stem and has its own optional [scoring] section.
To change how these flat components combine, add a named reward aggregation:
# tests/reward.toml
[[reward]]
name = "reward"
aggregation = "weighted-mean"
weights = { checks = 2.0, quality = 1.0 }
Multi-reward verifier
Put scoring inputs in subdirectories to emit separate dimensions:
tests/
├── correctness/
│ └── checks.py
├── structure/
│ └── files.py
└── quality/
└── judge.toml
This emits correctness, structure, and quality. Add a root
tests/reward.toml to combine them into a main reward:
[[reward]]
name = "reward"
aggregation = "weighted-mean"
weights = { correctness = 2.0, structure = 1.0, quality = 1.0 }
Inside a dimension, one unnamed [[reward]] can set weights across local
Python files, judge TOMLs, and child directories. Reference files by stem and
child groups by directory name.
See the documentation for custom criteria, agent judges, the JEV judge, MCP servers, nested groups, and the complete config reference. A working Harbor task shows the full layout.
Metadata
Release files for harbor-rewardkit 0.2.4
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| harbor_rewardkit-0.2.4.tar.gz | 60.5 kB | Without provenance | Details for harbor_rewardkit-0.2.4.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| harbor_rewardkit-0.2.4-py3-none-any.whl | Python 3 | none | any | Details for harbor_rewardkit-0.2.4-py3-none-any.whl |
Total release size: 139.3 kB
Release files / harbor_rewardkit-0.2.4.tar.gz
| Download URL | harbor_rewardkit-0.2.4.tar.gz |
|---|---|
| Size | 60.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
3e8db9a5cd0dace49a3f0dbad7b52ad4edb4baca3b20446b421af2e34cad87ab
|
|
BLAKE2b-256 checksum How to use checksums |
e7333b1ac1a76336310824e855bc84b2e942a734ae933d600d9a5f0ed3ba7110
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.10.8 {"installer":{"name":"uv","version":"0.10.8","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|
Release files / harbor_rewardkit-0.2.4-py3-none-any.whl
| Download URL | harbor_rewardkit-0.2.4-py3-none-any.whl |
|---|---|
| Size | 78.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
ff715e9f921e448d5b9e607433a87c1ebb7914191c8334330eecfb99f1b15c59
|
|
BLAKE2b-256 checksum How to use checksums |
232fe93d062dabb5137d3979e1f71ff7567e57d8767154af96e0459555899b72
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.10.8 {"installer":{"name":"uv","version":"0.10.8","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|
Security for harbor-rewardkit 0.2.4
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.