@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
@@ -12,8 +12,16 @@ Guide the user through creating a new task end-to-end. Don't just dump commands
12
12
  walk them through each decision, especially around the verifier (which is usually the
13
13
  hardest part).
14
14
 
15
- The task format is Harbor's, and Evolve runs it unchanged. The full specification is at
16
- https://docs.harborframework.com/core-concepts/tasks/overview.
15
+ Evolve accepts Harbor-format tasks subject to managed-platform support. Read
16
+ `evolve skills get evals core-concepts/tasks` and
17
+ `evolve skills get evals core-concepts/task-config` for supported behavior. The upstream
18
+ format specification is at https://docs.harborframework.com/core-concepts/tasks/overview.
19
+
20
+ Before the hosted check or publish steps, confirm `evolve --version` and
21
+ `evolve auth status` succeed. If needed, install the CLI with
22
+ `npm install -g @evolvingmachines/evolve` and set `EVOLVE_API_KEY` from the
23
+ dashboard's API keys page. Read `evolve skills get evals getting-started/installation`
24
+ for setup.
17
25
 
18
26
  ## Step 1: Create the task directory
19
27
 
@@ -36,9 +44,6 @@ The files to write, one per step below:
36
44
  The directory name is the task's name on the platform: letters, digits, `.`, `_` and `-`,
37
45
  at most 128 characters, starting with a letter or digit; use lowercase (Harbor's convention).
38
46
 
39
- Where Harbor is installed, `harbor task init "<org>/<task-name>"` produces the same layout
40
- (optional).
41
-
42
47
  If the user wants a **multi-step task** (ordered steps with per-step
43
48
  instructions, tests, and early stopping against a shared container), write
44
49
  the single-step layout first, then convert to the `steps/` layout described in
@@ -68,7 +73,7 @@ Edit `environment/Dockerfile` to install dependencies the task needs. The agent
68
73
  inside this container.
69
74
 
70
75
  ```dockerfile
71
- FROM ubuntu:24.04
76
+ FROM python:3.12-slim
72
77
  WORKDIR /app
73
78
 
74
79
  # Install what the task requires — NOT the solution
@@ -77,7 +82,8 @@ RUN apt-get update && apt-get install -y openssh-client && rm -rf /var/lib/apt/l
77
82
 
78
83
  For multi-container setups, use `environment/docker-compose.yaml` instead. After
79
84
  publishing, `evolve dataset show "<dataset>@<version>"` prints which sandbox providers can
80
- run each task.
85
+ run each task. Read `evolve skills get evals core-concepts/compose` for Evolve's
86
+ supported Compose layout and limits.
81
87
 
82
88
  **Test the environment interactively** before writing the solution or tests:
83
89
  ```bash
@@ -105,18 +111,23 @@ For a separate verifier container with no pinned `[verifier.environment] docker_
105
111
  `tests/` is the verifier image's build context and its `tests/Dockerfile` must provide
106
112
  `/tests/test.sh`. A verifier that pins the task's own image gets `tests/` uploaded to
107
113
  `/tests`; one that pins a distinct image boots as it is with nothing uploaded, so that
108
- image must carry `/tests/test.sh` itself. A separate verifier judges only what the task
109
- lists under a top-level `artifacts = ["/app/out.json"]` in `task.toml`, never the agent's
110
- whole workspace.
114
+ image must carry `/tests/test.sh` itself. Declare the files the verifier needs under
115
+ top-level `artifacts`; Evolve also transfers `/logs/artifacts/` and the collection
116
+ script's patch file, but not the agent's whole workspace.
111
117
 
112
118
  ```toml
119
+ artifacts = ["/app/out.json"]
120
+
113
121
  [verifier]
114
122
  environment_mode = "separate"
115
123
 
116
124
  [verifier.environment]
117
- docker_image = "ubuntu:24.04"
125
+ workdir = "/app"
118
126
  ```
119
127
 
128
+ This configuration builds `tests/Dockerfile`. Read
129
+ `evolve skills get evals core-concepts/task-verifiers` for the complete setup.
130
+
120
131
  ### Option A: Reward Kit (recommended for most cases)
121
132
 
122
133
  Use when the verifier has multiple criteria, needs partial credit, uses an LLM/agent
@@ -128,15 +139,25 @@ Good fit signals:
128
139
  - Want partial credit rather than pass/fail
129
140
  - Want to compose built-ins like `file_contains`, `command_succeeds`, `json_key_equals`
130
141
 
131
- `tests/test.sh`:
142
+ Install Reward Kit in the image that runs verification: the task image for shared
143
+ mode, or the verifier image for separate mode. It requires Python 3.12 or newer.
144
+
145
+ ```dockerfile
146
+ RUN pip install --no-cache-dir 'harbor-rewardkit==0.2.1'
147
+ ```
148
+
149
+ `tests/test.sh` (for a workspace at `/app`):
132
150
  ```bash
133
151
  #!/bin/bash
134
- uvx --from 'harbor-rewardkit==0.2.*' rewardkit /tests
152
+ set -euo pipefail
153
+ python3 -m rewardkit /tests \
154
+ --workspace /app \
155
+ --output /logs/verifier/reward.json
135
156
  ```
136
157
 
137
- Note: the package is named `harbor-rewardkit` but the executable is `rewardkit`,
138
- hence `--from 'harbor-rewardkit==0.2.*' rewardkit`. Running
139
- `uvx harbor-rewardkit` directly will fail.
158
+ The package name remains `harbor-rewardkit`; the Python module is `rewardkit`.
159
+ Install any required extras in that image too. Read
160
+ `evolve skills get evals core-concepts/rewardkit` for dependencies and managed judges.
140
161
 
141
162
  Then add `tests/checks.py` and/or `tests/judge.toml`. Read `evolve skills get rewardkit` to
142
163
  design the criteria.
@@ -145,16 +166,20 @@ design the criteria.
145
166
 
146
167
  Use when the verification is straightforward assertion-style Python.
147
168
 
169
+ Install pytest in the image that runs verification, rather than downloading it
170
+ in `test.sh`. For a Python image:
171
+
172
+ ```dockerfile
173
+ RUN pip install --no-cache-dir 'pytest==8.4.1'
174
+ ```
175
+
148
176
  `tests/test.sh`:
149
177
  ```bash
150
178
  #!/bin/bash
151
- apt-get update && apt-get install -y curl
152
- curl -LsSf https://astral.sh/uv/0.9.7/install.sh | sh
153
- source $HOME/.local/bin/env
154
-
155
- uvx --with pytest==8.4.1 pytest /tests/test_outputs.py
179
+ set -uo pipefail
180
+ mkdir -p /logs/verifier
156
181
 
157
- if [ $? -eq 0 ]; then
182
+ if python3 -m pytest /tests/test_outputs.py; then
158
183
  echo 1 > /logs/verifier/reward.txt
159
184
  else
160
185
  echo 0 > /logs/verifier/reward.txt
@@ -183,21 +208,25 @@ fi
183
208
 
184
209
  ### Reward file format (all options)
185
210
 
186
- - `/logs/verifier/reward.txt` — single number (usually `0` or `1`)
187
- - `/logs/verifier/reward.json` — `{"accuracy": 0.95, "runtime_sec": 1.2}` for multiple metrics
211
+ - `/logs/verifier/reward.txt` — one finite number from `0` to `1`
212
+ - `/logs/verifier/reward.json` — `{"reward": 0.95, "runtime_sec": 1.2}` for multiple metrics
188
213
 
189
- When both exist, `reward.json` wins. Everything the script prints is kept as the verifier log.
214
+ A nonempty `reward.json` wins when both exist. Its primary score is the `reward`
215
+ key, or the only key in a one-key object, and must be in `[0, 1]`. Multiple keys
216
+ without `reward` produce metrics but no primary score. Everything the script
217
+ prints is kept as the verifier log.
190
218
 
191
219
  **Always use absolute paths in `test.sh`.**
192
220
 
193
221
  ## Step 5: Write the solution
194
222
 
195
- Write `solution/solve.sh` — a script that actually solves the task. `evolve check` runs
196
- it to confirm the task is solvable and the tests pass on a correct solution. The agent is
197
- never given it.
223
+ Write `solution/solve.sh` — a script that actually solves the task. The checker
224
+ reviews it and can run it when its sandbox supports the task's environment.
225
+ Evolve does not give it to the evaluated agent.
198
226
 
199
227
  ```bash
200
228
  #!/bin/bash
229
+ mkdir -p ~/.ssh
201
230
  ssh-keygen -t rsa -f ~/.ssh/id_rsa -N ""
202
231
  ```
203
232
 
@@ -215,8 +244,8 @@ description = "One-line description"
215
244
  keywords = ["jax", "mnist", "rewardkit"] # 3–8 lowercase tokens: domain, verifier style, hardware
216
245
 
217
246
  [metadata]
218
- difficulty = "easy" | "medium" | "hard"
219
- category = "programming" | "machine-learning" | "gpu" | ...
247
+ difficulty = "easy"
248
+ category = "programming"
220
249
  tags = ["..."]
221
250
 
222
251
  [agent]
@@ -247,8 +276,8 @@ Network access has two layers:
247
276
  | --- | --- | --- |
248
277
  | `[environment].network_mode` | Baseline | Agent env start; shared verifier uses this too |
249
278
  | `[verifier.environment].network_mode` | Baseline | Separate verifier env start |
250
- | `[agent].network_mode`, `[steps.agent].network_mode` | Override | During matching `agent.run()` |
251
- | `[verifier].network_mode`, `[steps.verifier].network_mode` | Override | During matching `verify()` |
279
+ | `[agent].network_mode` | Override | During the agent phase |
280
+ | `[verifier].network_mode` | Override | Separate verifier policy; shared mode must match the baseline |
252
281
 
253
282
  Modes: `public`, `no-network`, or `allowlist` with `allowed_hosts = ["pypi.org"]`
254
283
  (exact hostnames, IPv4/IPv6 address literals or CIDR ranges, or leading wildcard hostnames, when supported by the selected environment; not URLs,
@@ -288,7 +317,9 @@ environment_mode = "separate"
288
317
  network_mode = "public" # Verifier baseline — not a phase override
289
318
  ```
290
319
 
291
- Full reference: https://docs.harborframework.com/core-concepts/tasks/network-policies.
320
+ Evolve rejects per-step network overrides. Read
321
+ `evolve skills get evals core-concepts/task-config` for network access and
322
+ `evolve skills get evals core-concepts/compatibility` for supported task features.
292
323
 
293
324
  For Reward Kit judges needing API keys:
294
325
  ```toml
@@ -301,19 +332,37 @@ the whole value, and the judge's credential is supplied at run time.
301
332
 
302
333
  ## Step 7: Check the task
303
334
 
335
+ First validate the task metadata, then request the hosted rubric review:
336
+
304
337
  ```bash
338
+ evolve dataset check "<task-path>"
305
339
  evolve check "<task-path>" --watch
306
340
  ```
307
341
 
308
- The check reads the task and, when it can, runs the environment, `solution/solve.sh` and
309
- the verifier, then rules on every criterion of a rubric (eleven by default); `executed` in
310
- the result says whether it ran the task. `evolve check show <check-id>` prints one entry
311
- per criterion, with an `outcome`, an `explanation` and `evidence`, and one label per task:
312
- `has_a_problem`, `unclear` or `no_problem_found`.
342
+ Set `CHECK_ID` to the parent check ID returned by `evolve check`, then read it:
313
343
 
314
- Where Harbor is installed, `harbor run -p "<task-path>" -a oracle` runs the solution and
315
- the verifier locally (optional). Its reward should be `1.0`. If it's not, debug in this order:
316
- 1. Does `solve.sh` actually solve it? (run it by hand inside `docker run --rm -it "<task-name>" bash`)
344
+ ```bash
345
+ evolve check show "$CHECK_ID"
346
+ ```
347
+
348
+ `evolve dataset check` sends `task.toml` and any `dataset.toml` to the API for
349
+ validation. It does not upload the full task package or execute the task.
350
+ `evolve check` runs a paid checker agent. It reviews the files against the
351
+ default criteria (`evolve check --show-defaults`) and can run the environment,
352
+ solution, and verifier when its sandbox supports them. It is not a dedicated
353
+ reference-solution runner; the Evolve CLI has no standalone oracle command.
354
+
355
+ Read each criterion's `outcome`, `explanation`, and `evidence`. The result is
356
+ that per-criterion JSON; Evolve derives no verdict from it. The default rubric's execution
357
+ criteria say whether the checker ran the task: `unknown` on them is not proof
358
+ that the solution or verifier ran. Inspect the evidence and checker trace;
359
+ unresolved execution needs a test in an environment that can run the task.
360
+
361
+ Read `evolve skills get evals core-concepts/check` and
362
+ `evolve skills get evals cli-reference/check` for results, traces, and custom rubrics.
363
+
364
+ When a solution or verifier fails, debug in this order:
365
+ 1. Does `solve.sh` actually solve it in the task's intended environment?
317
366
  2. Does the verifier correctly detect success? (check `/logs/verifier/` output)
318
367
  3. Are paths correct? (absolute vs relative)
319
368
  4. Are dependencies installed in the Dockerfile?
@@ -329,7 +378,12 @@ evolve run -d "<dataset>@1.0" -a codex -m gpt-5.5 --watch
329
378
  ```
330
379
 
331
380
  If the task is too easy (every model 1.0) or impossible (every model 0.0), consider
332
- adjusting difficulty. `evolve skills get publish` covers every publish option.
381
+ adjusting difficulty. `evolve skills get publish` explains the workflow;
382
+ `evolve skills get evals cli-reference/dataset` covers every dataset publish option.
383
+ For TypeScript or Python automation, load
384
+ `evolve skills get evals sdk-reference/methods/datasets`,
385
+ `evolve skills get evals sdk-reference/methods/checks`, and
386
+ `evolve skills get evals sdk-reference/methods/jobs`.
333
387
 
334
388
  ## Step 9: Write README.md (always the final step)
335
389
 
@@ -362,12 +416,10 @@ persist across steps.
362
416
  Replace the task-root `instruction.md`, `tests/`, and `solution/` with a
363
417
  `steps/` directory containing one sub-directory per step:
364
418
 
365
- Each `[[steps]].name` must match one directory name of at most 255 UTF-8 bytes,
366
- unique after case folding and Unicode normalization. Avoid path separators,
367
- control characters, Windows-reserved characters/device names, and trailing dots
368
- or spaces. Keep all task inputs and linked contents within the task directory;
369
- validation permits shared links inside the task. Use regular files and directories
370
- for shared inputs when publishing tasks.
419
+ Each `[[steps]].name` must match a directory under `steps/`. Names must be unique
420
+ and use 1–128 ASCII letters, digits, `.`, `_`, or `-`, starting with a letter or
421
+ digit. Keep task inputs inside the task directory as regular files and
422
+ directories. Copy shared inputs into it; Evolve's importer rejects symbolic links.
371
423
 
372
424
  ```
373
425
  <task-name>/
@@ -401,15 +453,15 @@ with cwd = WORKDIR. Non-zero exit aborts the step and the trial. Have it
401
453
  ```toml
402
454
  schema_version = "1.4"
403
455
 
404
- [task]
405
- name = "<org>/<task-name>"
406
- version = "1.0.0"
407
-
408
456
  # How per-step rewards roll up into the trial-level verifier_result.
409
457
  # "mean" (default): per-key mean across steps that produced a result.
410
458
  # "final": the last step's verifier_result verbatim.
411
459
  multi_step_reward_strategy = "mean"
412
460
 
461
+ [task]
462
+ name = "<org>/<task-name>"
463
+ version = "1.0.0"
464
+
413
465
  [[steps]]
414
466
  name = "scaffold" # Must match the directory under steps/
415
467
  min_reward = 1.0 # Abort trial if this step's reward < 1.0
@@ -435,11 +487,12 @@ timeout_sec = 60.0
435
487
  timeout_sec = 30.0
436
488
  ```
437
489
 
438
- Per-step overrides available: `agent.timeout_sec`, `agent.user`,
439
- `agent.network_mode`, `verifier.timeout_sec`, `verifier.env`, `verifier.user`,
440
- `verifier.network_mode`, `verifier.environment_mode`, `verifier.environment`,
441
- `steps.verifier.environment.network_mode`, `healthcheck.*`, `artifacts`. Unset
442
- fields fall back to the task-level values.
490
+ Evolve supports per-step agent and verifier timeouts, `verifier.env`, and
491
+ healthchecks. Timeouts and verifier variables fall back to task-level values.
492
+ Set the environment, agent user, and network policies once for the task.
493
+ Multi-step tasks require shared verification. Compose, per-step agent users,
494
+ network policies, verifier environments, and collection hooks are rejected.
495
+ Step verifiers run as root; a different verifier user is rejected.
443
496
 
444
497
  ### Choosing a reward strategy
445
498
 
@@ -452,20 +505,25 @@ fields fall back to the task-level values.
452
505
 
453
506
  ### Artifacts
454
507
 
455
- Step-level `artifacts` are collected into `steps/{name}/artifacts/` after that
456
- step's verification. Task-level and trial-level artifacts are collected at
457
- every step in addition to the step-level ones.
508
+ Evolve accepts step-level `artifacts` in the task configuration, but does not
509
+ currently collect per-step artifact snapshots. Do not rely on
510
+ `steps/{name}/artifacts/` being present. Step results and verifier logs are
511
+ recorded separately; see `evolve skills get evals core-concepts/multi-step`.
458
512
 
459
513
  ### Checking a multi-step task
460
514
 
461
- Where Harbor is installed, `harbor run -p "<task-path>" -a oracle` runs each step's
462
- `solution/solve.sh`, then each step's verifier, in order (optional). Trial reward
463
- should be `1.0` across the aggregation strategy. Then publish and run it (Step 8).
515
+ Use the metadata check and hosted review in Step 7. Inspect evidence for each
516
+ step's solution and verifier; the review does not guarantee their execution.
517
+ Then publish and run with an evaluated agent (Step 8). Inspect `step_results`
518
+ and per-step verifier logs, including any threshold that stopped later steps.
464
519
 
465
520
  ### Full reference + worked example
466
521
 
467
- - Docs: https://docs.harborframework.com/core-concepts/tasks/multi-step
468
- - Example task: https://github.com/laude-institute/harbor/tree/main/examples/tasks/hello-multi-step-advanced
522
+ - Evolve behavior: `evolve skills get evals core-concepts/multi-step`
523
+ - Optional upstream example: https://github.com/laude-institute/harbor/tree/main/examples/tasks/hello-multi-step-advanced
524
+
525
+ The upstream example illustrates the format. Apply Evolve's supported options
526
+ above; upstream execution commands do not define the managed workflow.
469
527
 
470
528
  ## Special features (mention if relevant)
471
529
 
@@ -479,7 +537,7 @@ should be `1.0` across the aggregation strategy. Then publish and run it (Step 8
479
537
 
480
538
  ## Common pitfalls
481
539
 
482
- - Forgetting to write the reward file → task "passes" silently with reward 0
540
+ - Forgetting to write the reward file → trial is `INDETERMINATE`, with no score
483
541
  - Using relative paths in `test.sh` → breaks when the verifier runs it from a different cwd
484
542
  - Installing the solution into the Dockerfile → agent already gets the answer
485
543
  - Test script leaks into `instruction.md` → agent sees the rubric and gaming becomes trivial
@@ -4,37 +4,54 @@ description: "Evolve runs agent evaluations in the cloud: any model on any codin
4
4
  allowed-tools: Bash(evolve:*), Bash(npx evolve:*)
5
5
  ---
6
6
 
7
- # evolve
7
+ # Evolve
8
8
 
9
- Hosted evals and the SDK, from the `evolve` command.
9
+ Run evaluations in the cloud and inspect the results. This is the entry point; the versioned manual ships inside the CLI.
10
10
 
11
- Install: `npm i -g @evolvingmachines/evolve`, then `export EVOLVE_API_KEY=<your key>` (create a key at https://dashboard.evolvingmachines.ai/api-keys).
11
+ ## Read the relevant page first
12
12
 
13
- Python SDK: `pip install evolvingmachines-evolve` (`import evolve`). The manual still comes from the `evolve` command.
13
+ ```bash
14
+ evolve skills get evals # documentation index
15
+ evolve skills get evals cli-reference/run # one focused page
16
+ evolve run --help # installed command options
17
+ ```
18
+
19
+ Choose pages from the index. Load `--full` only when the entire reference is needed.
20
+
21
+ | Task | Starting page |
22
+ | --- | --- |
23
+ | First evaluation | `getting-started/quick-start` |
24
+ | Run or configure a job | `cli-reference/run` |
25
+ | Inspect, compare, stop, or retry | `cli-reference/job` |
26
+ | Read files, logs, or processes | `cli-reference/filesystem` |
27
+ | Check task quality | `cli-reference/check` |
28
+ | Analyze completed traces | `cli-reference/analyze` |
29
+ | Publish a dataset | `cli-reference/dataset` |
30
+ | Import completed results | `cli-reference/upload` |
31
+ | Upload a recorded SDK run | `core-concepts/upload-sdk-session` |
32
+ | Python or TypeScript client | `sdk-reference/index` |
14
33
 
15
- ## Start here
34
+ For example: `evolve skills get evals cli-reference/job`.
16
35
 
17
- This file is a pointer, not the manual. The manual ships inside the CLI and always matches the installed version. Keep it current: `npm i -g @evolvingmachines/evolve@latest`, then `evolve skills install --force` refreshes this file. Before running any `evolve` command, load it:
36
+ ## Task-authoring skills
18
37
 
19
38
  ```bash
20
- evolve skills get evals # the index of the documentation: every page, one line each
21
- evolve skills get evals core-concepts/tasks # one page, by its site path
22
- evolve skills get evals --full # every page at once; only when everything is needed
39
+ evolve skills get create-task # write a Harbor-format task
40
+ evolve skills get rewardkit # write its verifier
41
+ evolve skills get create-adapter # convert a benchmark
42
+ evolve skills get publish # publish tasks or import results
23
43
  ```
24
44
 
25
- Read the index first, then the page for your topic, then write the command. Every verb also answers `evolve <verb> --help`.
45
+ `evolve skills list` shows the installed bundle. Plural `skills` reads this manual; singular `skill` uploads content for evaluated agents.
26
46
 
27
- ## The other skills
47
+ ## Setup, when needed
28
48
 
29
- ```bash
30
- evolve skills get create-task # write a new task in the Harbor format, verifier included
31
- evolve skills get rewardkit # write a task's verifier with Reward Kit
32
- evolve skills get create-adapter # convert an existing benchmark into a folder of Harbor-format tasks
33
- evolve skills get publish # publish a dataset of tasks, or upload a job you ran elsewhere (a Harbor job, or SDK runs packed as one)
34
- ```
49
+ CLI: `npm install -g @evolvingmachines/evolve`. Set `EVOLVE_API_KEY` using a key from https://dashboard.evolvingmachines.ai/api-keys; confirm with `evolve auth status`.
50
+
51
+ Python: `pip install evolvingmachines-evolve` (`import evolve`). Managed evals references still come from `evolve skills get evals`.
35
52
 
36
- `evolve skills list` names everything the installed version serves; `--full` on any skill adds its pages. The SDK skill (run agents in sandboxes from TypeScript or Python) is not served by the command; install it from the repository: `npx skills add evolving-machines-lab/evolve --skill evolve-agents`.
53
+ To install this pointer into an agent's skills directory, use `evolve skills install --target <agent>`. Do not reinstall or update the CLI merely to read its manual.
37
54
 
38
- ## Inside the evolve repository
55
+ The separate managed-agents SDK skill installs from the repository: `npx skills add evolving-machines-lab/evolve --skill evolve-agents`. It is not served by `evolve skills`.
39
56
 
40
- An agent working in a checkout of https://github.com/evolving-machines-lab/evolve reads the same content directly from `skills/<name>/SKILL.md` (`evolve-evals` is the evals index, its pages under `references/`); nothing needs to be installed.
57
+ Inside an Evolve checkout, read `skills/evolve-evals/SKILL.md` and its `references/` directly; no installation is needed.