@evolvingmachines/evolve 0.0.65 → 0.0.67-train-harness-wave-2026-09-25.20260926.e00a8a6d

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (153) hide show
  1. package/dist/{chunk-DK2MGUPB.js → chunk-DI6LPW2B.js} +2 -2
  2. package/dist/cli/index.cjs +29 -29
  3. package/dist/cli/index.d.cts +3 -3
  4. package/dist/cli/index.d.ts +3 -3
  5. package/dist/cli/index.js +18 -18
  6. package/dist/index.cjs +64 -60
  7. package/dist/index.d.cts +297 -18
  8. package/dist/index.d.ts +297 -18
  9. package/dist/index.js +48 -44
  10. package/dist/{types-B_qmzlMk.d.cts → types-Dj0iMl5V.d.cts} +70 -90
  11. package/dist/{types-B_qmzlMk.d.ts → types-Dj0iMl5V.d.ts} +70 -90
  12. package/harness-capabilities.json +285 -0
  13. package/package.json +9 -6
  14. package/skills/create-adapter/SKILL.md +71 -26
  15. package/skills/create-task/SKILL.md +124 -66
  16. package/skills/evolve/SKILL.md +37 -20
  17. package/skills/evolve-evals/SKILL.md +142 -69
  18. package/skills/evolve-evals/references/cli-reference/agent.md +76 -0
  19. package/skills/evolve-evals/references/cli-reference/analysis.md +78 -0
  20. package/skills/evolve-evals/references/cli-reference/analyze.md +97 -0
  21. package/skills/evolve-evals/references/cli-reference/auth.md +96 -0
  22. package/skills/evolve-evals/references/cli-reference/check.md +157 -0
  23. package/skills/evolve-evals/references/cli-reference/dataset.md +154 -0
  24. package/skills/evolve-evals/references/cli-reference/filesystem.md +168 -0
  25. package/skills/evolve-evals/references/cli-reference/index.md +149 -0
  26. package/skills/evolve-evals/references/cli-reference/job.md +198 -0
  27. package/skills/evolve-evals/references/cli-reference/run.md +188 -0
  28. package/skills/evolve-evals/references/cli-reference/secrets.md +77 -0
  29. package/skills/evolve-evals/references/cli-reference/session.md +56 -0
  30. package/skills/evolve-evals/references/cli-reference/skill.md +52 -0
  31. package/skills/evolve-evals/references/cli-reference/skills.md +85 -0
  32. package/skills/evolve-evals/references/cli-reference/trial.md +115 -0
  33. package/skills/evolve-evals/references/cli-reference/upload.md +72 -0
  34. package/skills/evolve-evals/references/core-concepts/agents.md +101 -0
  35. package/skills/evolve-evals/references/core-concepts/analyze.md +143 -0
  36. package/skills/evolve-evals/references/core-concepts/check.md +116 -0
  37. package/skills/evolve-evals/references/core-concepts/compatibility.md +39 -0
  38. package/skills/evolve-evals/references/core-concepts/compose.md +103 -0
  39. package/skills/evolve-evals/references/core-concepts/datasets.md +234 -0
  40. package/skills/evolve-evals/references/core-concepts/index.md +52 -0
  41. package/skills/evolve-evals/references/core-concepts/jobs.md +223 -0
  42. package/skills/evolve-evals/references/core-concepts/models.md +73 -0
  43. package/skills/evolve-evals/references/core-concepts/multi-step.md +93 -0
  44. package/skills/evolve-evals/references/core-concepts/rewardkit.md +341 -0
  45. package/skills/evolve-evals/references/core-concepts/sandboxes.md +73 -0
  46. package/skills/evolve-evals/references/core-concepts/secrets.md +86 -0
  47. package/skills/evolve-evals/references/core-concepts/sharing.md +81 -0
  48. package/skills/evolve-evals/references/core-concepts/skills.md +100 -0
  49. package/skills/evolve-evals/references/core-concepts/task-config.md +169 -0
  50. package/skills/evolve-evals/references/core-concepts/task-environment.md +127 -0
  51. package/skills/evolve-evals/references/core-concepts/task-reference.md +191 -0
  52. package/skills/evolve-evals/references/core-concepts/task-verifiers.md +209 -0
  53. package/skills/evolve-evals/references/core-concepts/tasks.md +90 -0
  54. package/skills/evolve-evals/references/core-concepts/teams.md +128 -0
  55. package/skills/evolve-evals/references/core-concepts/trial-outputs.md +225 -0
  56. package/skills/evolve-evals/references/core-concepts/trials.md +129 -0
  57. package/skills/evolve-evals/references/core-concepts/upload-sdk-session.md +240 -0
  58. package/skills/evolve-evals/references/core-concepts/upload.md +166 -0
  59. package/skills/evolve-evals/references/dashboard/checks.md +54 -0
  60. package/skills/evolve-evals/references/dashboard/datasets.md +65 -0
  61. package/skills/evolve-evals/references/dashboard/jobs.md +106 -0
  62. package/skills/evolve-evals/references/dashboard/traces.md +54 -0
  63. package/skills/evolve-evals/references/dashboard/trial-viewer.md +77 -0
  64. package/skills/evolve-evals/references/getting-started/first-task.md +228 -0
  65. package/skills/evolve-evals/references/getting-started/installation.md +79 -0
  66. package/skills/evolve-evals/references/getting-started/quick-start.md +100 -0
  67. package/skills/evolve-evals/references/index.md +58 -0
  68. package/skills/evolve-evals/references/sdk/http.md +110 -0
  69. package/skills/evolve-evals/references/sdk/python.md +108 -0
  70. package/skills/evolve-evals/references/sdk/typescript.md +104 -0
  71. package/skills/evolve-evals/references/sdk-reference/agents.md +75 -0
  72. package/skills/evolve-evals/references/sdk-reference/analyses.md +125 -0
  73. package/skills/evolve-evals/references/sdk-reference/auth.md +171 -0
  74. package/skills/evolve-evals/references/sdk-reference/checks.md +146 -0
  75. package/skills/evolve-evals/references/sdk-reference/datasets.md +170 -0
  76. package/skills/evolve-evals/references/sdk-reference/error-codes.md +231 -0
  77. package/skills/evolve-evals/references/sdk-reference/errors.md +98 -0
  78. package/skills/evolve-evals/references/sdk-reference/filesystem.md +166 -0
  79. package/skills/evolve-evals/references/sdk-reference/index.md +161 -0
  80. package/skills/evolve-evals/references/sdk-reference/jobs.md +250 -0
  81. package/skills/evolve-evals/references/sdk-reference/meta.md +54 -0
  82. package/skills/evolve-evals/references/sdk-reference/methods/agents.md +154 -0
  83. package/skills/evolve-evals/references/sdk-reference/methods/analyses.md +211 -0
  84. package/skills/evolve-evals/references/sdk-reference/methods/auth.md +257 -0
  85. package/skills/evolve-evals/references/sdk-reference/methods/checks.md +462 -0
  86. package/skills/evolve-evals/references/sdk-reference/methods/datasets.md +687 -0
  87. package/skills/evolve-evals/references/sdk-reference/methods/filesystem.md +527 -0
  88. package/skills/evolve-evals/references/sdk-reference/methods/jobs.md +1023 -0
  89. package/skills/evolve-evals/references/sdk-reference/methods/meta.md +213 -0
  90. package/skills/evolve-evals/references/sdk-reference/methods/secrets.md +157 -0
  91. package/skills/evolve-evals/references/sdk-reference/methods/skills.md +125 -0
  92. package/skills/evolve-evals/references/sdk-reference/methods/trials.md +371 -0
  93. package/skills/evolve-evals/references/sdk-reference/secrets.md +104 -0
  94. package/skills/evolve-evals/references/sdk-reference/skills.md +66 -0
  95. package/skills/evolve-evals/references/sdk-reference/trials.md +164 -0
  96. package/skills/evolve-evals/references/sdk-reference/types.md +1255 -0
  97. package/skills/publish/SKILL.md +103 -79
  98. package/skills/rewardkit/SKILL.md +78 -23
  99. package/spec/openapi.yaml +164 -160
  100. package/skills/evolve-evals/references/cli-reference/agent.mdx +0 -79
  101. package/skills/evolve-evals/references/cli-reference/analysis.mdx +0 -160
  102. package/skills/evolve-evals/references/cli-reference/analyze.mdx +0 -84
  103. package/skills/evolve-evals/references/cli-reference/auth.mdx +0 -133
  104. package/skills/evolve-evals/references/cli-reference/check.mdx +0 -263
  105. package/skills/evolve-evals/references/cli-reference/dataset.mdx +0 -151
  106. package/skills/evolve-evals/references/cli-reference/index.mdx +0 -108
  107. package/skills/evolve-evals/references/cli-reference/job.mdx +0 -278
  108. package/skills/evolve-evals/references/cli-reference/run.mdx +0 -204
  109. package/skills/evolve-evals/references/cli-reference/secrets.mdx +0 -95
  110. package/skills/evolve-evals/references/cli-reference/skill.mdx +0 -61
  111. package/skills/evolve-evals/references/cli-reference/skills.mdx +0 -81
  112. package/skills/evolve-evals/references/cli-reference/trial.mdx +0 -181
  113. package/skills/evolve-evals/references/cli-reference/upload.mdx +0 -36
  114. package/skills/evolve-evals/references/core-concepts/agents.mdx +0 -106
  115. package/skills/evolve-evals/references/core-concepts/analyze.mdx +0 -86
  116. package/skills/evolve-evals/references/core-concepts/check.mdx +0 -64
  117. package/skills/evolve-evals/references/core-concepts/datasets.mdx +0 -138
  118. package/skills/evolve-evals/references/core-concepts/index.mdx +0 -42
  119. package/skills/evolve-evals/references/core-concepts/jobs.mdx +0 -151
  120. package/skills/evolve-evals/references/core-concepts/models.mdx +0 -68
  121. package/skills/evolve-evals/references/core-concepts/sandboxes.mdx +0 -52
  122. package/skills/evolve-evals/references/core-concepts/secrets.mdx +0 -41
  123. package/skills/evolve-evals/references/core-concepts/sharing.mdx +0 -35
  124. package/skills/evolve-evals/references/core-concepts/skills.mdx +0 -42
  125. package/skills/evolve-evals/references/core-concepts/tasks.mdx +0 -216
  126. package/skills/evolve-evals/references/core-concepts/teams.mdx +0 -36
  127. package/skills/evolve-evals/references/core-concepts/trial-outputs.mdx +0 -117
  128. package/skills/evolve-evals/references/core-concepts/trials.mdx +0 -103
  129. package/skills/evolve-evals/references/core-concepts/upload.mdx +0 -93
  130. package/skills/evolve-evals/references/dashboard/checks.mdx +0 -21
  131. package/skills/evolve-evals/references/dashboard/datasets.mdx +0 -24
  132. package/skills/evolve-evals/references/dashboard/jobs.mdx +0 -65
  133. package/skills/evolve-evals/references/dashboard/traces.mdx +0 -17
  134. package/skills/evolve-evals/references/dashboard/trial-viewer.mdx +0 -30
  135. package/skills/evolve-evals/references/getting-started/installation.mdx +0 -56
  136. package/skills/evolve-evals/references/getting-started/quick-start.mdx +0 -94
  137. package/skills/evolve-evals/references/index.mdx +0 -48
  138. package/skills/evolve-evals/references/sdk/python.mdx +0 -161
  139. package/skills/evolve-evals/references/sdk/typescript.mdx +0 -163
  140. package/skills/evolve-evals/references/sdk-reference/agents.mdx +0 -108
  141. package/skills/evolve-evals/references/sdk-reference/analyses.mdx +0 -222
  142. package/skills/evolve-evals/references/sdk-reference/auth.mdx +0 -116
  143. package/skills/evolve-evals/references/sdk-reference/checks.mdx +0 -300
  144. package/skills/evolve-evals/references/sdk-reference/datasets.mdx +0 -346
  145. package/skills/evolve-evals/references/sdk-reference/errors.mdx +0 -210
  146. package/skills/evolve-evals/references/sdk-reference/index.mdx +0 -60
  147. package/skills/evolve-evals/references/sdk-reference/jobs.mdx +0 -822
  148. package/skills/evolve-evals/references/sdk-reference/meta.mdx +0 -52
  149. package/skills/evolve-evals/references/sdk-reference/skills.mdx +0 -69
  150. package/skills/evolve-evals/references/sdk-reference/trials.mdx +0 -302
  151. package/skills/evolve-evals/references/sdk-reference/types.mdx +0 -274
  152. package/skills/evolve-evals/references/snippets/global-options.mdx +0 -13
  153. package/skills/evolve-evals/references/snippets/list-flags.mdx +0 -23
@@ -1,146 +1,170 @@
1
1
  ---
2
2
  name: publish
3
- description: Publish a dataset of Harbor-format tasks to Evolve, or upload a finished job folder — a Harbor job, or Evolve SDK runs packed as one. Use when the user wants to publish, upload, or share tasks, datasets/benchmarks, or job results on Evolve.
3
+ description: Publish Harbor-format task datasets or upload existing results to Evolve, including recorded Evolve SDK runs packaged as jobs. Use when the user wants to publish a benchmark, upload tasks, or turn an SDK session into an evaluation job.
4
4
  metadata:
5
5
  internal: true
6
6
  ---
7
7
 
8
- Help the user publish a dataset of tasks to Evolve, or upload a job they ran elsewhere.
9
- Walk them through each step, checking prerequisites and confirming before running
10
- commands that upload.
8
+ # Publish to Evolve
11
9
 
12
- ## Prerequisites
10
+ Publish tasks for future evaluations, or import results from a run that already happened. Both workflows use Evolve.
13
11
 
14
- 1. **The CLI**: `npm install -g @evolvingmachines/evolve`; `evolve --version` succeeds.
12
+ | What the user has | Start here |
13
+ | --- | --- |
14
+ | A folder or repository of tasks | Publish a dataset below. For the task layout, read `evolve skills get create-task`. |
15
+ | A completed job folder or archive | Import results below. |
16
+ | A recorded Evolve SDK session | Read `evolve skills get evals core-concepts/upload-sdk-session` before packaging it. |
15
17
 
16
- 2. **API key**: create a key on the dashboard's API keys page
17
- (https://dashboard.evolvingmachines.ai/api-keys) and export it. Every command reads
18
- `EVOLVE_API_KEY`.
19
- ```bash
20
- export EVOLVE_API_KEY="<your key>"
21
- evolve auth status
22
- ```
23
- `auth status` prints who the platform thinks you are and which key is in use.
18
+ ## Setup, when needed
24
19
 
25
- 3. **Task layout**: a dataset is a folder of task directories, each with `task.toml`,
26
- `instruction.md`, `tests/test.sh`, and an `environment/` folder unless `task.toml`
27
- names a prebuilt `docker_image` (`evolve skills get create-task` has the format). The
28
- directory name is the task's name: letters, digits, `.`, `_` and `-`, at most 128
29
- characters, starting with a letter or digit; use lowercase (Harbor's convention). A
30
- `dataset.toml` manifest at the root is optional.
20
+ Use the installed CLI; install only if missing: `npm install -g @evolvingmachines/evolve`. Confirm authentication with `evolve auth status`. If needed, set `EVOLVE_API_KEY` using a key from https://dashboard.evolvingmachines.ai/api-keys.
31
21
 
32
- ## Publishing a dataset
22
+ Publishing or importing is a remote mutation. Proceed when the user's request authorizes it; otherwise prepare the exact command and explain what it uploads. An upload request does not authorize emailing or sharing results. For explicit sharing requests, read `evolve skills get evals core-concepts/sharing`.
33
23
 
34
- What you publish is private to your organization. There are no tags and no visibility
35
- flag.
24
+ ## Publish a dataset
36
25
 
37
- ### 1. Check the folder first
26
+ ### 1. Check the tasks
27
+
28
+ Inspect the task directories and any `dataset.toml`, then validate their metadata:
38
29
 
39
30
  ```bash
40
- evolve dataset check "<path/to/tasks>"
31
+ evolve dataset check ./tasks
41
32
  ```
42
33
 
43
- A dry run: the pre-flight sends each task's `task.toml`, and the `dataset.toml` if there
44
- is one, to the server, which answers with a verdict per task and writes nothing. A refused
45
- task names the field to fix. `evolve check "<path/to/tasks>" --watch` goes further: it
46
- reads each task and, when it can, runs its environment, reference solution and verifier,
47
- then rules on a rubric.
34
+ This sends each `task.toml` and the optional manifest to Evolve. It does not publish the corpus or run the tasks. Fix refused fields before continuing.
35
+
36
+ For an agent-based quality review, use `evolve check ./tasks --watch`. This uploads tasks and incurs agent usage. Read the findings and trace: Evolve derives no verdict from the result, and `unknown` on the default rubric's execution criteria is not proof that the reference solution and verifier were executed successfully. See `evolve skills get evals core-concepts/check`.
48
37
 
49
- ### 2. Publish
38
+ ### 2. Choose one source and publish
50
39
 
51
- From a local directory:
40
+ **Local directory**
52
41
 
53
42
  ```bash
54
43
  evolve dataset publish \
55
- --dir "<path/to/tasks>" \
56
- --name "<dataset>" \
44
+ --dir ./tasks \
45
+ --name my-benchmark \
57
46
  --version 1.0 \
58
47
  --watch
59
48
  ```
60
49
 
61
- When the folder carries a `dataset.toml` manifest, `--name` and `--version` come from it
62
- and may be omitted. The pre-flight runs automatically before the upload;
63
- `--skip-preflight` uploads without it, and a task the check would have refused then fails
64
- at import instead.
50
+ A `dataset.toml` can supply the name and version. Local publishing runs metadata preflight automatically; `--skip-preflight` skips that early check, not import validation.
65
51
 
66
- From a git repository:
52
+ **Git repository**
67
53
 
68
54
  ```bash
69
55
  evolve dataset publish \
70
- --git https://github.com/acme/my-swe.git \
56
+ --git https://github.com/acme/tasks.git \
71
57
  --ref v1.0.0 \
72
- --name "<dataset>" \
58
+ --path benchmark \
59
+ --name my-benchmark \
73
60
  --version 1.0 \
74
61
  --watch
75
62
  ```
76
63
 
77
- `--ref` must be pinned: a tag, or a full 40-character commit sha. A branch name is
78
- refused. `--path <subfolder>` imports one folder of a larger repository.
64
+ Pin a tag or a full 40-character commit SHA. Branch names are refused. Omit `--path` to use the repository root.
79
65
 
80
- From a source the server fetches itself:
66
+ **Public HTTPS archive**
81
67
 
82
68
  ```bash
83
- evolve dataset publish --from hub:cookbook/hello-world --watch
69
+ evolve dataset publish \
70
+ --from https://example.com/tasks.tar.gz \
71
+ --name my-benchmark \
72
+ --version 1.0 \
73
+ --watch
84
74
  ```
85
75
 
86
- `--from` takes a public https tarball URL, or `hub:org/name[@ref]` for a public package on
87
- the Harbor hub. For a hub package the name and version default to the package's own.
88
-
89
- ### 3. Follow the publish
76
+ Evolve fetches the archive. Both Git and HTTPS sources require an explicit name and version.
90
77
 
91
- `--watch` follows the publish until the version is `READY` or `FAILED`. Each task builds
92
- on its own, so one broken task does not block the others; `--watch` ends with how many
93
- built. If the terminal is gone, re-attach from any machine:
78
+ **Optional: import a public Harbor Hub package into Evolve**
94
79
 
95
80
  ```bash
96
- evolve dataset watch "<dataset>"
81
+ evolve dataset publish \
82
+ --from hub:cookbook/hello-world \
83
+ --watch
97
84
  ```
98
85
 
99
- The version lands `READY` when at least one task built, and `FAILED` only when none did.
100
- On your own dataset, `READY` also makes the version active, so the bare name runs it.
86
+ `hub:org/name[@ref]` is an accepted source; the destination is Evolve. Name and version may come from the package. Keep this syntax when importing an actual Harbor package.
101
87
 
102
- ## After publishing
88
+ For a new dataset, add `--org <organization>` to select an organization. Otherwise, Evolve uses the saved `evolve auth org use` default, then your personal organization. An existing dataset keeps its organization; an explicit or saved default that conflicts is refused. See `evolve skills get evals cli-reference/dataset` for all options.
89
+
90
+ ### 3. Follow the import and inspect the result
91
+
92
+ `--watch` follows the import and build. To reconnect, use the complete import ID printed by publishing:
103
93
 
104
94
  ```bash
105
- evolve dataset show "<dataset>@1.0" # versions, tasks, timeouts, providers per task
106
- evolve run -d "<dataset>@1.0" -a codex -m gpt-5.5 --watch # run a job on it
95
+ evolve dataset watch "$IMPORT_ID"
96
+ evolve dataset show my-benchmark@1.0
107
97
  ```
108
98
 
109
- Each publish creates a version, named `<dataset>@<version>`; a bare name means the active
110
- version. To point the bare name at a different `READY` version:
99
+ `evolve dataset watch my-benchmark` also finds a live import. Use the import ID after it has settled.
100
+
101
+ A `READY` version needs at least one built task, but can contain failed tasks. Report the final state, name, version, built and failed counts, and failure reasons. A new ready version on your own dataset becomes active; a bare dataset name selects that active version.
102
+
103
+ ### 4. Run or manage the version
104
+
105
+ When the user wants an evaluation, select the harness and model, then run the pinned version:
111
106
 
112
107
  ```bash
113
- evolve dataset activate "<dataset>" 1.0
108
+ evolve run \
109
+ --dataset my-benchmark@1.0 \
110
+ --agent codex \
111
+ --model "<model>" \
112
+ --watch
114
113
  ```
115
114
 
116
- The owner of a dataset can download the original package back:
115
+ Replace `<model>` with the selected model. Read `evolve skills get evals cli-reference/run` for job settings.
116
+
117
+ | Need | Command |
118
+ | --- | --- |
119
+ | Point the bare name at another `READY` version | `evolve dataset activate my-benchmark 1.0` |
120
+ | Download the original corpus package as its owner | `evolve dataset download my-benchmark@1.0 -o corpora/` |
121
+ | Fix tasks after a partial build | Publish the corrected corpus under a new version. |
122
+
123
+ ## Import results
124
+
125
+ ### 1. Prepare the job folder
126
+
127
+ An existing Harbor-format job folder can be uploaded directly. Before packaging another runner's files, read `evolve skills get evals core-concepts/upload` for the required layout and fields. The root needs `config.json` and `result.json`; each trial has its own `result.json`.
128
+
129
+ For an SDK session, read `evolve skills get evals core-concepts/upload-sdk-session` first. It shows the local log location, field mapping, and packaging script. A session can contain several runs or commands; do not assume one file is one trial. The example script supports one successful Codex or Claude run; the guide covers other cases.
130
+
131
+ Preserve recorded rewards in each trial's `verifier_result.rewards`. Without recorded rewards, the import has no score. Do not infer a score from agent completion.
132
+
133
+ ### 2. Upload and follow
117
134
 
118
135
  ```bash
119
- evolve dataset download "<dataset>@1.0" -o corpora/
136
+ evolve upload ./completed-job -d my-benchmark@1.0
120
137
  ```
121
138
 
122
- ## Uploading a job you ran elsewhere
139
+ Use the job directory or its `.tar.gz`. Alternatively, use `evolve upload --from <public-https-archive-url>`. Omit `-d` if no published dataset should be linked; when supplied, it links trial tasks by name.
123
140
 
124
- A job run elsewhere, in the Harbor job layout, uploads as a finished job. Its trials,
125
- traces and rewards become a job you read like any other. Before packing a folder by
126
- hand — runs made with the Evolve SDK, or any other runner — read what a trial folder
127
- and its `result.json` must hold: `evolve skills get evals core-concepts/upload`. The
128
- score lives in `result.json` as `verifier_result.rewards`; without it a trial arrives
129
- with no score.
141
+ The CLI waits for the import by default. `--no-wait` returns the import record instead. Reconnect with:
130
142
 
131
143
  ```bash
132
- evolve upload "<path/to/job-dir>" -d "<dataset>@1.0"
144
+ evolve job imports --status RUNNING
145
+ evolve job import "$IMPORT_ID" --watch
133
146
  ```
134
147
 
135
- `upload` takes the job directory, or its `.tar.gz`. With `--from <url>` it takes instead
136
- a public https URL of the archive, which the server fetches itself. `-d name[@version]`
137
- links the uploaded trials to a published dataset version by task name. The command
138
- follows the import until the job exists; `--no-wait` returns at once with the import id.
148
+ ### 3. Inspect the imported job
149
+
150
+ Use the job ID from the completed import:
139
151
 
140
152
  ```bash
141
- evolve job imports --status RUNNING
142
- evolve job import <import-id> --watch
153
+ evolve job show "$JOB_ID"
154
+ evolve job trials "$JOB_ID"
143
155
  ```
144
156
 
145
- `job imports` lists your uploads, newest first. `job import --watch` re-attaches to one and
146
- follows it to the job, or to its typed failure.
157
+ Choose a trial ID from the listing, then read its transcript with `evolve trial trace "$TRIAL_ID"`. Check the task, harness, model, prompt, agent activity, and recorded scores. Report skipped trial folders and missing task links.
158
+
159
+ Imported jobs support analysis, but cannot be resumed, retried, or regraded. Read `evolve skills get evals cli-reference/upload` for all upload options.
160
+
161
+ ## Use Python or TypeScript instead
162
+
163
+ Read `evolve skills get evals sdk-reference/index` for client setup, then the matching method reference:
164
+
165
+ | Operation | Read |
166
+ | --- | --- |
167
+ | Validate, publish, follow, activate, or download datasets | `evolve skills get evals sdk-reference/methods/datasets` |
168
+ | Upload a job and follow its import | `evolve skills get evals sdk-reference/methods/jobs` |
169
+
170
+ Both SDKs expose `datasets().preflight()` and `datasets().publish()`, plus `jobs().upload()`. Call preflight separately when publishing through an SDK. Publishing and uploading return import records; follow with `watchImport` in TypeScript or `watch_import` in Python. These calls do not convert SDK session logs into job folders; package the session first.
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: rewardkit
3
- description: Write Harbor-format task verifiers using Reward Kit. Use when creating or editing a
3
+ description: Write verifiers for Evolve's Harbor-format tasks using Reward Kit. Use when creating or editing a
4
4
  task's tests/ directory, adding grading criteria, setting up LLM/agent judges, or designing
5
5
  verifiers that produce a reward score.
6
6
  metadata:
@@ -11,6 +11,10 @@ Help the user write task verifiers with Reward Kit. Reward Kit is a lightweight
11
11
  package that turns a directory of criteria files into a reward score. Each criterion is a
12
12
  Python function call or a TOML judge file; folders become separate rewards.
13
13
 
14
+ The package keeps its upstream name, `harbor-rewardkit`. For Evolve's supported
15
+ setup and a complete example, read
16
+ `evolve skills get evals core-concepts/rewardkit`.
17
+
14
18
  ## Setup in a task
15
19
 
16
20
  Put criteria alongside `test.sh` in the task's `tests/` directory:
@@ -22,17 +26,33 @@ tests/
22
26
  └── judge.toml # optional LLM/agent judge
23
27
  ```
24
28
 
25
- `tests/test.sh`:
29
+ Install the package when the image builds, using Python 3.12 or newer. In shared
30
+ mode, add this to `environment/Dockerfile`; in separate mode, install it in the
31
+ verifier image:
32
+
33
+ ```dockerfile
34
+ RUN pip install --no-cache-dir \
35
+ 'harbor-rewardkit==0.2.1'
36
+ ```
37
+
38
+ Then write `tests/test.sh`:
26
39
  ```bash
27
40
  #!/bin/bash
28
- uvx --from 'harbor-rewardkit==0.2.*' rewardkit /tests
41
+ set -euo pipefail
42
+ python3 -m rewardkit /tests \
43
+ --workspace /app \
44
+ --output /logs/verifier/reward.json
29
45
  ```
30
46
 
31
47
  This runs all criteria in `/tests/` against the workspace at `/app` and writes
32
- `/logs/verifier/reward.json`. Defaults match Harbor's conventions — no extra config needed.
48
+ `/logs/verifier/reward.json`. Adjust `--workspace` if the task uses another directory.
33
49
 
34
- Run `evolve check "<task-path>" --watch` to run the verifier against the task's reference
35
- solution before publishing the task.
50
+ Run `evolve check "<task-path>" --watch` for task quality review. The checker
51
+ may run the reference solution and verifier when its environment supports
52
+ them; inspect its findings and evidence. The default rubric's execution
53
+ criteria say whether it ran the task; `unknown` on them is not proof that the
54
+ solution or verifier ran. Read `evolve skills get evals core-concepts/check`
55
+ for the result semantics.
36
56
 
37
57
  If judge criteria need API keys, request them through `task.toml`:
38
58
  ```toml
@@ -40,11 +60,16 @@ If judge criteria need API keys, request them through `task.toml`:
40
60
  ANTHROPIC_API_KEY = "${ANTHROPIC_API_KEY}"
41
61
  ```
42
62
 
43
- On Evolve you never put a real key in the task: write the template exactly as above, as
44
- the whole value, and the judge's credential is supplied at run time. The rubric names the
45
- judge model, or Reward Kit's own default applies. A job can override the judge for every
46
- verifier with `evolve run --ve REWARDKIT_JUDGE=<judge> --ve REWARDKIT_MODEL=<model>`; no
47
- other verifier env key is accepted on a job.
63
+ Write the template literally as the whole value. Evolve supplies a scoped gateway
64
+ credential and base URL during verification. Set the judge model explicitly in
65
+ the TOML. Use `OPENAI_API_KEY` instead for an OpenAI-family judge.
66
+
67
+ On a job, `--ve REWARDKIT_JUDGE=<judge>` overrides the judge and
68
+ `--ve REWARDKIT_MODEL=<model>` selects an agent judge's model. These are the only
69
+ two job-level verifier environment overrides. Read
70
+ `evolve skills get evals cli-reference/run` for CLI options or
71
+ `evolve skills get evals sdk-reference/methods/jobs` for the Python and TypeScript
72
+ `start` inputs.
48
73
 
49
74
  Ask whether Reward Kit should run in the agent's shared environment or in a
50
75
  separate verifier environment. Prefer a separate verifier environment when judge
@@ -53,14 +78,14 @@ available to the agent:
53
78
 
54
79
  ```toml
55
80
  [environment]
56
- network_mode = "no-network" # Agent env baseline — offline during agent.run()
81
+ network_mode = "no-network" # Agent can reach the Evolve model gateway
57
82
 
58
83
  [verifier]
59
84
  environment_mode = "separate"
60
85
 
61
86
  [verifier.environment]
62
- network_mode = "public" # Verifier env baseline — LLM judge API calls
63
- docker_image = "python:3.12-slim"
87
+ network_mode = "no-network" # Native judge calls use Evolve's gateway
88
+ # With no docker_image, build the verifier from tests/Dockerfile.
64
89
  ```
65
90
 
66
91
  In shared mode, the verifier runs in the agent container and inherits
@@ -69,9 +94,9 @@ baseline is refused at import on Evolve, because a shared verify cannot switch
69
94
  egress. If agent and verifier need different network access, use
70
95
  `environment_mode = "separate"` and set `[verifier.environment].network_mode`.
71
96
 
72
- Judge criteria that call external APIs need a `public` baseline or allowlist on
73
- the verifier environment. Programmatic checks that only read local files can use
74
- `no-network`.
97
+ Evolve's native judge gateway is reachable with `no-network`. Other external
98
+ APIs need a `public` baseline or the required hosts in the verifier allowlist.
99
+ Programmatic checks that only read local files can also use `no-network`.
75
100
 
76
101
  In separate mode with no `[verifier.environment].docker_image`, `tests/` is the
77
102
  verifier image's build context and its `tests/Dockerfile` must provide
@@ -79,6 +104,12 @@ verifier image's build context and its `tests/Dockerfile` must provide
79
104
  uploads `tests/` to `/tests` instead. When it pins a distinct image, that image
80
105
  boots as it is with nothing uploaded, so it must carry `/tests/test.sh` itself.
81
106
 
107
+ For separate verification, declare the files to grade in the task's `artifacts`
108
+ list. The verifier does not receive the agent's whole workspace. Read
109
+ `evolve skills get evals core-concepts/task-verifiers` and
110
+ `evolve skills get evals core-concepts/task-config` for Evolve's file-transfer and
111
+ network rules.
112
+
82
113
  ## Programmatic criteria
83
114
 
84
115
  Call built-ins from any `.py` file in `tests/`:
@@ -95,6 +126,10 @@ rk.json_key_equals("result.json", "status", "ok")
95
126
  All criteria accept `weight` (default `1.0`) and `isolated` (default `False`, runs in
96
127
  overlayfs so side effects don't leak).
97
128
 
129
+ Isolation needs working overlayfs support. If the image needs `fuse-overlayfs`,
130
+ install it at build time; do not rely on its runtime installer with restricted
131
+ network access. Confirm the sandbox permits the required mounts.
132
+
98
133
  ### Available built-ins
99
134
 
100
135
  - **Files**: `file_exists`, `file_not_exists`, `file_contains`, `file_contains_regex`,
@@ -102,12 +137,17 @@ overlayfs so side effects don't leak).
102
137
  - **Commands**: `command_succeeds`, `command_output_contains`, `command_output_matches`,
103
138
  `command_output_matches_regex` (30s default timeout, optional `cwd`)
104
139
  - **Data**: `json_key_equals`, `json_path_equals`, `csv_cell_equals`, `xlsx_cell_equals`
105
- (needs `[office]` extra), `sqlite_query_equals`
140
+ (needs `[documents]` extra), `sqlite_query_equals`
106
141
  - **HTTP**: `http_status_equals`, `http_response_contains`
107
142
  - **Images**: `image_similarity`, `image_size_equals` (needs `[image]` extra)
108
143
  - **Trajectory**: `trajectory_tool_used`, `trajectory_tool_not_used`, `trajectory_turn_count`
109
144
 
110
- For extras, install with `uv tool install harbor-rewardkit[all]`.
145
+ Install needed extras in that same image: `harbor-rewardkit[documents]==0.2.1`
146
+ or `harbor-rewardkit[image]==0.2.1`. Use `[all]` only if both are needed.
147
+
148
+ Do not depend on downloading packages during verification. Evolve's offline
149
+ Reward Kit bundle is for judge-enabled runs and does not include optional
150
+ extras. Its `uvx` path cannot fetch versions or extras absent from the bundle.
111
151
 
112
152
  ## Custom criteria
113
153
 
@@ -143,7 +183,7 @@ For subjective checks (quality, readability, edge cases), create a TOML file:
143
183
 
144
184
  ```toml
145
185
  [judge]
146
- judge = "anthropic/claude-sonnet-5" # LiteLLM model string
186
+ judge = "anthropic/claude-sonnet-4-6"
147
187
  files = ["/app/main.py"]
148
188
 
149
189
  [[criterion]]
@@ -169,7 +209,7 @@ Agent judges shell out to a CLI and can explore the filesystem:
169
209
  ```toml
170
210
  [judge]
171
211
  judge = "claude-code"
172
- model = "anthropic/claude-sonnet-5"
212
+ model = "anthropic/claude-sonnet-4-6"
173
213
  isolated = true
174
214
 
175
215
  [[criterion]]
@@ -179,6 +219,10 @@ type = "binary"
179
219
 
180
220
  Slower and more expensive than LLM judges, but they can run commands and inspect files.
181
221
 
222
+ Evolve supports `claude-code` and `codex` agent judges. Install the selected CLI
223
+ in the verifier image and request its matching provider credential. The managed
224
+ judge path does not supply verifier MCP tools or arbitrary provider credentials.
225
+
182
226
  ### Useful `[judge]` options
183
227
 
184
228
  `timeout` (default 300), `reasoning_effort` (`low`|`medium`|`high`), `reference` (path to
@@ -289,8 +333,15 @@ weight unless that aggregation's inline map overrides them;
289
333
  - `/logs/verifier/reward.json` — per-reward scores
290
334
  - `/logs/verifier/reward-details.json` — per-criterion results, judge reasoning, errors
291
335
 
336
+ Evolve uses `reward` as the primary score, or the only value when there is one
337
+ key. Multiple dimensions without `reward` remain metrics but have no primary
338
+ score. Keep the primary score in `[0, 1]`.
339
+
292
340
  ## Multi-step tasks
293
341
 
342
+ Evolve currently requires shared verification for multi-step tasks; separate
343
+ verifier environments are rejected.
344
+
294
345
  In a multi-step task, each step has its own `tests/` under
295
346
  `steps/{name}/tests/`, and the verifier runs once per step. Reward Kit behaves
296
347
  the same as in a single-step task: for each step it reads `/tests`, runs the
@@ -311,6 +362,9 @@ separate reward key for that step, and `multi_step_reward_strategy = "mean"`
311
362
  averages each key across steps. Use `"final"` when the last step is an
312
363
  end-to-end check whose rewards already represent the full task.
313
364
 
365
+ Read `evolve skills get evals core-concepts/multi-step` for Evolve's supported
366
+ step configuration and result layout.
367
+
314
368
  ## When to reach for what
315
369
 
316
370
  - **Use built-ins** for file existence, string matches, command output, JSON/CSV checks,
@@ -326,5 +380,6 @@ end-to-end check whose rewards already represent the full task.
326
380
 
327
381
  ## Working example
328
382
 
329
- See https://github.com/laude-institute/harbor/tree/main/examples/tasks/reward-kit-example.
330
- Reward Kit's own documentation: https://docs.harborframework.com/core-concepts/rewardkit/quick-start.
383
+ Read `evolve skills get evals core-concepts/rewardkit` for a complete verifier,
384
+ or `evolve skills get evals getting-started/first-task` for the task's build,
385
+ publish, check, and evaluation workflow.