@evolvingmachines/evolve 0.0.65 → 0.0.66

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 (152) hide show
  1. package/dist/{chunk-DK2MGUPB.js → chunk-RFLMRPGK.js} +5 -5
  2. package/dist/cli/index.cjs +39 -39
  3. package/dist/cli/index.d.cts +3 -3
  4. package/dist/cli/index.d.ts +3 -3
  5. package/dist/cli/index.js +30 -30
  6. package/dist/index.cjs +1 -1
  7. package/dist/index.d.cts +4 -4
  8. package/dist/index.d.ts +4 -4
  9. package/dist/index.js +1 -1
  10. package/dist/{types-B_qmzlMk.d.cts → types-84M4J_Vm.d.cts} +11 -44
  11. package/dist/{types-B_qmzlMk.d.ts → types-84M4J_Vm.d.ts} +11 -44
  12. package/package.json +4 -4
  13. package/skills/create-adapter/SKILL.md +71 -26
  14. package/skills/create-task/SKILL.md +124 -66
  15. package/skills/evolve/SKILL.md +37 -20
  16. package/skills/evolve-evals/SKILL.md +142 -69
  17. package/skills/evolve-evals/references/cli-reference/agent.md +76 -0
  18. package/skills/evolve-evals/references/cli-reference/analysis.md +78 -0
  19. package/skills/evolve-evals/references/cli-reference/analyze.md +95 -0
  20. package/skills/evolve-evals/references/cli-reference/auth.md +96 -0
  21. package/skills/evolve-evals/references/cli-reference/check.md +156 -0
  22. package/skills/evolve-evals/references/cli-reference/dataset.md +154 -0
  23. package/skills/evolve-evals/references/cli-reference/filesystem.md +168 -0
  24. package/skills/evolve-evals/references/cli-reference/index.md +149 -0
  25. package/skills/evolve-evals/references/cli-reference/job.md +198 -0
  26. package/skills/evolve-evals/references/cli-reference/run.md +187 -0
  27. package/skills/evolve-evals/references/cli-reference/secrets.md +77 -0
  28. package/skills/evolve-evals/references/cli-reference/session.md +56 -0
  29. package/skills/evolve-evals/references/cli-reference/skill.md +52 -0
  30. package/skills/evolve-evals/references/cli-reference/skills.md +85 -0
  31. package/skills/evolve-evals/references/cli-reference/trial.md +115 -0
  32. package/skills/evolve-evals/references/cli-reference/upload.md +72 -0
  33. package/skills/evolve-evals/references/core-concepts/agents.md +96 -0
  34. package/skills/evolve-evals/references/core-concepts/analyze.md +143 -0
  35. package/skills/evolve-evals/references/core-concepts/check.md +116 -0
  36. package/skills/evolve-evals/references/core-concepts/compatibility.md +39 -0
  37. package/skills/evolve-evals/references/core-concepts/compose.md +103 -0
  38. package/skills/evolve-evals/references/core-concepts/datasets.md +234 -0
  39. package/skills/evolve-evals/references/core-concepts/index.md +52 -0
  40. package/skills/evolve-evals/references/core-concepts/jobs.md +223 -0
  41. package/skills/evolve-evals/references/core-concepts/models.md +73 -0
  42. package/skills/evolve-evals/references/core-concepts/multi-step.md +93 -0
  43. package/skills/evolve-evals/references/core-concepts/rewardkit.md +341 -0
  44. package/skills/evolve-evals/references/core-concepts/sandboxes.md +73 -0
  45. package/skills/evolve-evals/references/core-concepts/secrets.md +86 -0
  46. package/skills/evolve-evals/references/core-concepts/sharing.md +81 -0
  47. package/skills/evolve-evals/references/core-concepts/skills.md +100 -0
  48. package/skills/evolve-evals/references/core-concepts/task-config.md +169 -0
  49. package/skills/evolve-evals/references/core-concepts/task-environment.md +127 -0
  50. package/skills/evolve-evals/references/core-concepts/task-reference.md +191 -0
  51. package/skills/evolve-evals/references/core-concepts/task-verifiers.md +209 -0
  52. package/skills/evolve-evals/references/core-concepts/tasks.md +90 -0
  53. package/skills/evolve-evals/references/core-concepts/teams.md +128 -0
  54. package/skills/evolve-evals/references/core-concepts/trial-outputs.md +225 -0
  55. package/skills/evolve-evals/references/core-concepts/trials.md +129 -0
  56. package/skills/evolve-evals/references/core-concepts/upload-sdk-session.md +240 -0
  57. package/skills/evolve-evals/references/core-concepts/upload.md +166 -0
  58. package/skills/evolve-evals/references/dashboard/checks.md +54 -0
  59. package/skills/evolve-evals/references/dashboard/datasets.md +65 -0
  60. package/skills/evolve-evals/references/dashboard/jobs.md +106 -0
  61. package/skills/evolve-evals/references/dashboard/traces.md +54 -0
  62. package/skills/evolve-evals/references/dashboard/trial-viewer.md +77 -0
  63. package/skills/evolve-evals/references/getting-started/first-task.md +228 -0
  64. package/skills/evolve-evals/references/getting-started/installation.md +79 -0
  65. package/skills/evolve-evals/references/getting-started/quick-start.md +100 -0
  66. package/skills/evolve-evals/references/index.md +58 -0
  67. package/skills/evolve-evals/references/sdk/http.md +110 -0
  68. package/skills/evolve-evals/references/sdk/python.md +108 -0
  69. package/skills/evolve-evals/references/sdk/typescript.md +104 -0
  70. package/skills/evolve-evals/references/sdk-reference/agents.md +75 -0
  71. package/skills/evolve-evals/references/sdk-reference/analyses.md +124 -0
  72. package/skills/evolve-evals/references/sdk-reference/auth.md +171 -0
  73. package/skills/evolve-evals/references/sdk-reference/checks.md +145 -0
  74. package/skills/evolve-evals/references/sdk-reference/datasets.md +170 -0
  75. package/skills/evolve-evals/references/sdk-reference/error-codes.md +231 -0
  76. package/skills/evolve-evals/references/sdk-reference/errors.md +98 -0
  77. package/skills/evolve-evals/references/sdk-reference/filesystem.md +166 -0
  78. package/skills/evolve-evals/references/sdk-reference/index.md +161 -0
  79. package/skills/evolve-evals/references/sdk-reference/jobs.md +250 -0
  80. package/skills/evolve-evals/references/sdk-reference/meta.md +54 -0
  81. package/skills/evolve-evals/references/sdk-reference/methods/agents.md +154 -0
  82. package/skills/evolve-evals/references/sdk-reference/methods/analyses.md +211 -0
  83. package/skills/evolve-evals/references/sdk-reference/methods/auth.md +257 -0
  84. package/skills/evolve-evals/references/sdk-reference/methods/checks.md +460 -0
  85. package/skills/evolve-evals/references/sdk-reference/methods/datasets.md +687 -0
  86. package/skills/evolve-evals/references/sdk-reference/methods/filesystem.md +527 -0
  87. package/skills/evolve-evals/references/sdk-reference/methods/jobs.md +1021 -0
  88. package/skills/evolve-evals/references/sdk-reference/methods/meta.md +209 -0
  89. package/skills/evolve-evals/references/sdk-reference/methods/secrets.md +157 -0
  90. package/skills/evolve-evals/references/sdk-reference/methods/skills.md +125 -0
  91. package/skills/evolve-evals/references/sdk-reference/methods/trials.md +371 -0
  92. package/skills/evolve-evals/references/sdk-reference/secrets.md +104 -0
  93. package/skills/evolve-evals/references/sdk-reference/skills.md +66 -0
  94. package/skills/evolve-evals/references/sdk-reference/trials.md +164 -0
  95. package/skills/evolve-evals/references/sdk-reference/types.md +1249 -0
  96. package/skills/publish/SKILL.md +103 -79
  97. package/skills/rewardkit/SKILL.md +78 -23
  98. package/spec/openapi.yaml +19 -74
  99. package/skills/evolve-evals/references/cli-reference/agent.mdx +0 -79
  100. package/skills/evolve-evals/references/cli-reference/analysis.mdx +0 -160
  101. package/skills/evolve-evals/references/cli-reference/analyze.mdx +0 -84
  102. package/skills/evolve-evals/references/cli-reference/auth.mdx +0 -133
  103. package/skills/evolve-evals/references/cli-reference/check.mdx +0 -263
  104. package/skills/evolve-evals/references/cli-reference/dataset.mdx +0 -151
  105. package/skills/evolve-evals/references/cli-reference/index.mdx +0 -108
  106. package/skills/evolve-evals/references/cli-reference/job.mdx +0 -278
  107. package/skills/evolve-evals/references/cli-reference/run.mdx +0 -204
  108. package/skills/evolve-evals/references/cli-reference/secrets.mdx +0 -95
  109. package/skills/evolve-evals/references/cli-reference/skill.mdx +0 -61
  110. package/skills/evolve-evals/references/cli-reference/skills.mdx +0 -81
  111. package/skills/evolve-evals/references/cli-reference/trial.mdx +0 -181
  112. package/skills/evolve-evals/references/cli-reference/upload.mdx +0 -36
  113. package/skills/evolve-evals/references/core-concepts/agents.mdx +0 -106
  114. package/skills/evolve-evals/references/core-concepts/analyze.mdx +0 -86
  115. package/skills/evolve-evals/references/core-concepts/check.mdx +0 -64
  116. package/skills/evolve-evals/references/core-concepts/datasets.mdx +0 -138
  117. package/skills/evolve-evals/references/core-concepts/index.mdx +0 -42
  118. package/skills/evolve-evals/references/core-concepts/jobs.mdx +0 -151
  119. package/skills/evolve-evals/references/core-concepts/models.mdx +0 -68
  120. package/skills/evolve-evals/references/core-concepts/sandboxes.mdx +0 -52
  121. package/skills/evolve-evals/references/core-concepts/secrets.mdx +0 -41
  122. package/skills/evolve-evals/references/core-concepts/sharing.mdx +0 -35
  123. package/skills/evolve-evals/references/core-concepts/skills.mdx +0 -42
  124. package/skills/evolve-evals/references/core-concepts/tasks.mdx +0 -216
  125. package/skills/evolve-evals/references/core-concepts/teams.mdx +0 -36
  126. package/skills/evolve-evals/references/core-concepts/trial-outputs.mdx +0 -117
  127. package/skills/evolve-evals/references/core-concepts/trials.mdx +0 -103
  128. package/skills/evolve-evals/references/core-concepts/upload.mdx +0 -93
  129. package/skills/evolve-evals/references/dashboard/checks.mdx +0 -21
  130. package/skills/evolve-evals/references/dashboard/datasets.mdx +0 -24
  131. package/skills/evolve-evals/references/dashboard/jobs.mdx +0 -65
  132. package/skills/evolve-evals/references/dashboard/traces.mdx +0 -17
  133. package/skills/evolve-evals/references/dashboard/trial-viewer.mdx +0 -30
  134. package/skills/evolve-evals/references/getting-started/installation.mdx +0 -56
  135. package/skills/evolve-evals/references/getting-started/quick-start.mdx +0 -94
  136. package/skills/evolve-evals/references/index.mdx +0 -48
  137. package/skills/evolve-evals/references/sdk/python.mdx +0 -161
  138. package/skills/evolve-evals/references/sdk/typescript.mdx +0 -163
  139. package/skills/evolve-evals/references/sdk-reference/agents.mdx +0 -108
  140. package/skills/evolve-evals/references/sdk-reference/analyses.mdx +0 -222
  141. package/skills/evolve-evals/references/sdk-reference/auth.mdx +0 -116
  142. package/skills/evolve-evals/references/sdk-reference/checks.mdx +0 -300
  143. package/skills/evolve-evals/references/sdk-reference/datasets.mdx +0 -346
  144. package/skills/evolve-evals/references/sdk-reference/errors.mdx +0 -210
  145. package/skills/evolve-evals/references/sdk-reference/index.mdx +0 -60
  146. package/skills/evolve-evals/references/sdk-reference/jobs.mdx +0 -822
  147. package/skills/evolve-evals/references/sdk-reference/meta.mdx +0 -52
  148. package/skills/evolve-evals/references/sdk-reference/skills.mdx +0 -69
  149. package/skills/evolve-evals/references/sdk-reference/trials.mdx +0 -302
  150. package/skills/evolve-evals/references/sdk-reference/types.mdx +0 -274
  151. package/skills/evolve-evals/references/snippets/global-options.mdx +0 -13
  152. package/skills/evolve-evals/references/snippets/list-flags.mdx +0 -23
@@ -0,0 +1,234 @@
1
+ ---
2
+ title: "Datasets"
3
+ description: "Browse ready-to-run tasks or publish your own versioned collection."
4
+ ---
5
+
6
+ A dataset is a named collection of tasks. Use `name@version` for a specific version, or a bare name for the active version.
7
+
8
+ ```bash
9
+ evolve dataset list
10
+ evolve dataset show harbor-examples@1.0
11
+ ```
12
+
13
+ `show` lists tasks, timeouts, and provider compatibility. Use `--search <text>` with `list` to narrow the catalog.
14
+
15
+ ## Publish your tasks
16
+
17
+ ```text
18
+ my-dataset/
19
+ ├── hello-world/
20
+ │ ├── instruction.md
21
+ │ ├── task.toml
22
+ │ ├── environment/Dockerfile
23
+ │ └── tests/test.sh
24
+ └── another-task/
25
+ └── ...
26
+ ```
27
+
28
+ You can publish a single task directory, a directory of tasks, or a directory containing `tasks/`.
29
+
30
+ ### 1. Check the configuration
31
+
32
+ ```bash
33
+ evolve dataset check ./my-dataset
34
+ ```
35
+
36
+ This sends configuration files for validation. It does not upload the corpus or build images. Fix rejected declarations before publishing.
37
+
38
+ ### 2. Publish a version
39
+
40
+ ### Local directory
41
+
42
+ ```bash
43
+ evolve dataset publish \
44
+ --dir ./my-dataset \
45
+ --name my-dataset --version 1.0 \
46
+ --watch
47
+ ```
48
+
49
+ ### Git repository
50
+
51
+ ```bash
52
+ evolve dataset publish \
53
+ --git https://github.com/acme/my-dataset.git \
54
+ --ref v1.0.0 \
55
+ --name my-dataset --version 1.0 \
56
+ --watch
57
+ ```
58
+
59
+ Use a tag or full 40-character commit SHA. Branch names are rejected. `--path <folder>` selects a subdirectory.
60
+
61
+ ### Harbor Hub
62
+
63
+ ```bash
64
+ evolve dataset publish --from hub:cookbook/hello-world --watch
65
+ ```
66
+
67
+ Public Harbor Hub packages supply their own name and version. `--from` also accepts a public HTTPS tarball URL.
68
+
69
+ The dataset is private to your organization. Its owner can publish more versions under the same name.
70
+
71
+ ### 3. Inspect the result
72
+
73
+ ```bash
74
+ evolve dataset show my-dataset@1.0
75
+ ```
76
+
77
+ Check both ready and failed task counts. If you disconnect during publication, use `evolve dataset watch my-dataset` to resume watching.
78
+
79
+ ## What publication does
80
+
81
+ ```mermaid
82
+ %%{init: {"flowchart": {"nodeSpacing": 16, "rankSpacing": 20, "padding": 10}, "themeVariables": {"fontSize": "14px", "fontFamily": "Google Sans Flex, sans-serif"}}}%%
83
+ flowchart TB
84
+ A["1. Receive task package"] --> B["2. Validate and import tasks"]
85
+ B --> C["3. Prepare task images"]
86
+ C --> D{"Any tasks ready?"}
87
+ D -->|Yes| E["4. Version READY"]
88
+ D -->|No| F["4. Version FAILED"]
89
+ ```
90
+
91
+ Tasks build independently. A version can be `READY` while some tasks failed. Whole-dataset and glob selections run its ready tasks and report `build_exclusions`; explicitly selecting a failed task rejects the job.
92
+
93
+ A ready version becomes active on your dataset. Publishing a new version label leaves the previous active version in place if the new publication fails.
94
+
95
+ Use a new version label for changed tasks. Publishing an existing label re-imports it in place, so `name@version` selects a label rather than immutable content.
96
+
97
+ **Note:**
98
+
99
+ Configuration validation cannot prove that images build or tests are correct. Run [task checks](/core-concepts/check) to inspect task quality.
100
+
101
+ ## Pin or switch versions
102
+
103
+ ```bash
104
+ # Run an exact version.
105
+ evolve run -d my-dataset@1.0 -a codex -m gpt-5.6-luna
106
+
107
+ # Change what the bare name resolves to.
108
+ evolve dataset activate my-dataset 1.0
109
+ ```
110
+
111
+ Only ready versions accept jobs. Jobs record the version they resolve when created.
112
+
113
+ ## Download your source package
114
+
115
+ ```bash
116
+ evolve dataset download my-dataset@1.0 -o ./corpora
117
+ ```
118
+
119
+ The download includes the original corpus and its `solution/` files. It is owner-only; platform datasets are not downloadable through this command.
120
+
121
+ ## dataset.toml manifest
122
+
123
+ An optional `dataset.toml` selects the tasks in a package and pins their content. Put it beside the task directories. If the package contains `tasks/`, a manifest in `tasks/dataset.toml` takes precedence over one at the package root.
124
+
125
+ ```toml
126
+ schema_version = "1.0"
127
+
128
+ [dataset]
129
+ name = "acme/my-dataset"
130
+ version = "1.0"
131
+ description = "Our coding tasks"
132
+ authors = [{ name = "Acme", email = "evals@example.com" }]
133
+ keywords = ["coding"]
134
+
135
+ [[tasks]]
136
+ name = "acme/hello-world"
137
+ digest = "sha256:<task-content-hash>"
138
+
139
+ [[files]]
140
+ path = "README.md"
141
+ # Optional: digest = "sha256:<file-content-hash>"
142
+ ```
143
+
144
+ Replace the task digest placeholder with the helper's output below before publishing. A local package with a valid manifest can supply the publication name and version:
145
+
146
+ ```bash
147
+ evolve dataset publish --dir ./my-dataset --watch
148
+ ```
149
+
150
+ The catalog name comes from the short part (`my-dataset`); the `acme/` prefix does not choose the owning Evolve team. Explicit `--name` and `--version` values win. Without a manifest version, pass `--version`. Git and HTTPS archive sources still require explicit publication name and version; public Harbor Hub packages supply defaults.
151
+
152
+ ### Manifest fields and selection rules
153
+
154
+ | Field | Accepted value and behavior |
155
+ | --- | --- |
156
+ | `schema_version` | String, default `"1.0"`. |
157
+ | `dataset.name` | Required `org/name`. Each part starts with a letter or digit and contains only letters, digits, `.`, `_`, or `-`; `..` is forbidden. |
158
+ | `dataset.version` | Optional nonempty string. |
159
+ | `dataset.description` | String, default `""`. |
160
+ | `dataset.authors` | Array of tables with required nonempty `name` and optional string `email`; default `[]`. |
161
+ | `dataset.keywords` | Array of strings, default `[]`. |
162
+ | `tasks` | Required nonempty array. Each entry has `name` in the same `org/name` grammar and a required `digest`: `sha256:` followed by 64 lowercase hex characters. |
163
+ | `files` | Optional array. Each entry has a simple filename `path` (no directory separators) and optional `digest` in the same SHA-256 spelling. Empty or omitted digest skips hashing that file. |
164
+
165
+ Unknown root and `[dataset]` fields are rejected. Each listed dataset file must exist beside the manifest, even without a digest.
166
+
167
+ Task matching first uses an exact string match against `[task].name` in a local `task.toml`, then falls back to the reference's short name matching a task directory. Only listed tasks are imported. Every reference must resolve locally; missing tasks are not fetched from a registry.
168
+
169
+ Duplicate identical name/digest pairs are collapsed. An ambiguous declared task name, or references mapping the same directory to different digests, rejects the manifest. Missing tasks and any task/file digest mismatch fail publication.
170
+
171
+ ### Compute a task content digest
172
+
173
+ Task digests use Harbor's content-hash algorithm, not the archive hash or a hash of `task.toml` alone. The helper below requires Python and `pathspec`:
174
+
175
+ ```bash
176
+ python3 -m pip install 'pathspec==1.0.3'
177
+ python3 - ./my-dataset/hello-world <<'PY'
178
+ import hashlib
179
+ import sys
180
+ from pathlib import Path
181
+ import pathspec
182
+
183
+ root = Path(sys.argv[1])
184
+ paths = [root / name for name in
185
+ ("task.toml", "instruction.md", "README.md", "trajectory.json")
186
+ if (root / name).is_file()]
187
+ for name in ("environment", "tests", "solution", "steps"):
188
+ paths.extend(path for path in (root / name).rglob("*") if path.is_file())
189
+ ignore_file = root / ".gitignore"
190
+ patterns = (ignore_file.read_text().splitlines() if ignore_file.is_file() else
191
+ ["__pycache__/", "*.pyc", ".DS_Store", "*.swp", "*.swo", "*~"])
192
+ ignored = pathspec.PathSpec.from_lines("gitignore", patterns)
193
+ digest = hashlib.sha256()
194
+ for path in sorted(paths, key=lambda path: path.relative_to(root).as_posix()):
195
+ relative = path.relative_to(root).as_posix()
196
+ if any(part.startswith("._") and part != "._" for part in path.relative_to(root).parts):
197
+ continue
198
+ if ignored.match_file(relative):
199
+ continue
200
+ file_hash = hashlib.sha256(path.read_bytes()).hexdigest()
201
+ digest.update(f"{relative}\0{file_hash}\n".encode())
202
+ print("sha256:" + digest.hexdigest())
203
+ PY
204
+ ```
205
+
206
+ The hash covers the four listed root files when present and regular files recursively under `environment/`, `tests/`, `solution/`, and `steps/`. Other root files are outside this digest. Paths are relative, use `/`, and sort lexicographically. For each file, the outer SHA-256 receives its path, a NUL byte, the lowercase SHA-256 of its bytes, and a newline.
207
+
208
+ A task's `.gitignore` supplies the filters when present; otherwise the default patterns shown above apply. This uses PathSpec's `gitignore` pattern semantics, which differ from Git's directory re-inclusion behavior. macOS `._` sidecars are skipped. Use regular files: publication does not support task symlinks.
209
+
210
+ Dataset-level `[[files]]` digests are simpler: prefix the SHA-256 of that file's bytes with `sha256:`. Recompute affected digests whenever you edit content.
211
+
212
+ ### Package details
213
+
214
+ Local publication preserves executable permissions and dotfiles. It excludes `.git`, `.DS_Store`, `.venv`, and symlinks.
215
+
216
+ Custom `metric.py` dataset metrics are not supported. A script beside the manifest or listed in `files` rejects publication; use the platform's metrics.
217
+
218
+ Large local uploads are resumable. During receipt, the import can be `QUEUED` with `receiving: true`; it starts building after the corpus arrives.
219
+
220
+ ### Ownership and updates
221
+
222
+ A dataset name belongs to its first publisher. Another owner cannot publish under that name.
223
+
224
+ The SDK supports deleting an owned dataset, but deletion is rejected once a job references it. The CLI has no dataset delete command.
225
+
226
+ Git-backed datasets can report when their source tag moves. Automatic upstream import is opt-in through the SDK's `datasets().update()`; a normal publication does not enable it.
227
+
228
+ **[Dataset commands](/cli-reference/dataset)**
229
+
230
+ Sources, validation, publication, and downloads.
231
+
232
+ **[Dataset SDK](/sdk-reference/datasets)**
233
+
234
+ The Python and TypeScript clients.
@@ -0,0 +1,52 @@
1
+ ---
2
+ title: "How evaluations fit together"
3
+ description: "The few concepts you need to read a job and understand its results."
4
+ ---
5
+
6
+ A dataset supplies the tasks. An agent and model attempt them. A verifier scores the work.
7
+
8
+ ```mermaid
9
+ %%{init: {"flowchart": {"nodeSpacing": 16, "rankSpacing": 20, "padding": 10}, "themeVariables": {"fontSize": "14px", "fontFamily": "Google Sans Flex, sans-serif"}}}%%
10
+ flowchart TD
11
+ D["Dataset version"] --> T["Tasks"]
12
+ A["Agent configurations<br/>Harness + model + settings"] --> J["Job"]
13
+ T --> J
14
+ J --> R["Trials<br/>Task × configuration × attempt"]
15
+ R --> V["Verifier → reward"]
16
+ R --> F["Trace + logs + files"]
17
+ ```
18
+
19
+ | Concept | What it means | Example |
20
+ | --- | --- | --- |
21
+ | [Task](/core-concepts/tasks) | An instruction, environment, and grading logic. | Fix a bug and pass the tests. |
22
+ | [Dataset](/core-concepts/datasets) | A named, versioned collection of tasks. | `harbor-examples@1.0`. |
23
+ | [Agent](/core-concepts/agents) | A harness running a selected model. | Codex with `gpt-5.6-luna`. |
24
+ | [Sandbox](/core-concepts/sandboxes) | The isolated environment where a trial runs. | A task image on Daytona, E2B, or Modal. |
25
+ | [Job](/core-concepts/jobs) | A group of trials with shared run settings. | 10 tasks × 2 configurations × 3 attempts = 60 trials. |
26
+ | [Trial](/core-concepts/trials) | One attempt at one task. | One score and its supporting evidence. |
27
+ | [Verifier](/core-concepts/task-verifiers) | The task's code that evaluates the output. | A script writing a reward of `0` or `1`. |
28
+ | [Trace](/core-concepts/trial-outputs) | The recorded agent conversation and actions. | Messages, tool calls, and results. |
29
+
30
+ ## Two ways to examine quality
31
+
32
+ **[Check the task](/core-concepts/check)**
33
+
34
+ Review the instruction, environment, solution, and verifier before scaling the evaluation.
35
+
36
+ **[Analyze the attempt](/core-concepts/analyze)**
37
+
38
+ Review a recorded trial against a rubric to understand the agent's behavior.
39
+
40
+ Checks and analyses are optional model-powered operations with their own results and costs. The task's verifier produces the evaluation reward.
41
+
42
+ ## Read the result at the right level
43
+
44
+ | Level | What to read |
45
+ | --- | --- |
46
+ | **Job configuration** | What was selected and resolved |
47
+ | **Job summary** | Counts, scores, and costs |
48
+ | **Each trial: status** | Whether execution and grading completed |
49
+ | **Each trial: reward** | How the verifier scored the work |
50
+ | **Each trial: evidence** | Trace, logs, and recorded files |
51
+
52
+ Start with the [quick start](/getting-started/quick-start), then learn how to [configure a job](/core-concepts/jobs).
@@ -0,0 +1,223 @@
1
+ ---
2
+ title: "Jobs"
3
+ description: "Run a task set across agents and models. Follow each attempt to its result."
4
+ ---
5
+
6
+ A job runs selected tasks against one or more **agent arms**. An arm is an agent, model, and configuration you want to evaluate.
7
+
8
+ ```text
9
+ 3 selected tasks
10
+ × 2 agent arms
11
+ × 2 attempts
12
+ = 12 trials
13
+ ```
14
+
15
+ Each of the three tasks runs twice in Arm A and twice in Arm B.
16
+
17
+ ## Start a job
18
+
19
+ ```bash
20
+ evolve run \
21
+ -d harbor-examples@1.0 -i hello-world \
22
+ -a codex -m gpt-5.6-luna \
23
+ --max-trial-spend 1 -r 0 \
24
+ --watch
25
+ ```
26
+
27
+ | Choose | Flag | Meaning |
28
+ | --- | --- | --- |
29
+ | Task set | `-d name@version` | Repeat for several datasets. |
30
+ | Agent | `-a codex` | The harness that runs the model. |
31
+ | Model | `-m model` | Repeat to compare models with the same harness. |
32
+ | Attempts | `-k 2` | Attempts per task and arm. Default: 1. |
33
+ | Parallel trials | `-n 4` | Job concurrency. Default: 4; maximum: 150. |
34
+ | Label | `--job-name nightly` | A readable name. The job ID remains its identity. |
35
+
36
+ Use a [config file](#config-files) to compare different harnesses in one job.
37
+
38
+ ## Narrow the task set
39
+
40
+ ```text
41
+ 1. Select dataset version
42
+ ↓
43
+ 2. Include names matching -i
44
+ ↓
45
+ 3. Remove names matching -x
46
+ ↓
47
+ 4. Keep up to -l tasks per dataset
48
+ ```
49
+
50
+ `-i` and `-x` accept task-name globs. Quote them so your shell does not expand them.
51
+
52
+ ```bash
53
+ evolve run -d my-dataset@1.0 -a codex -m gpt-5.6-luna \
54
+ -i 'auth-*' -x 'auth-legacy' -l 20 \
55
+ --max-trial-spend 2 -r 0 --watch
56
+ ```
57
+
58
+ ## Watch it
59
+
60
+ With `--watch`, the CLI follows events until the job finishes. Without it, the CLI returns the accepted job immediately.
61
+
62
+ Use the returned ID as `$JOB_ID`:
63
+
64
+ ```bash
65
+ evolve job show "$JOB_ID"
66
+ evolve job trials "$JOB_ID"
67
+ evolve job tasks "$JOB_ID"
68
+ ```
69
+
70
+ **Note:**
71
+
72
+ **Accepted** means the job was created. **Completed** means every trial settled. Neither means every trial succeeded.
73
+
74
+ ## Spend and retries
75
+
76
+ Set `--max-trial-spend` to cap each trial attempt’s **agent** model spend. The response records the resolved cap and its model-spend estimate for the full job:
77
+
78
+ ```text
79
+ worst_case_spend_usd
80
+ = per-trial cap
81
+ × trial count
82
+ × (1 + max_retries)
83
+ ```
84
+
85
+ | Cost | Where to read it |
86
+ | --- | --- |
87
+ | Job model spend, including retired retry attempts | `stats.cost_usd` |
88
+ | Verifier judge spend, included in that total | `stats.judge_cost_usd` |
89
+ | Trace analysis spend, separate from trial spend | `stats.analysis.cost_usd` |
90
+ | GPU compute estimate, separate from model spend | `stats.gpu_cost_usd` |
91
+
92
+ An LLM verifier judge has its own cap: the smaller of the agent cap and $5. Its spend is additional to the estimate above. Analysis also has a separate budget.
93
+
94
+ The fleet defaults are $200 per trial and 2 infrastructure retries; deployment settings can change them. The job response records the values used. There is no job-wide spend-cap setting.
95
+
96
+ A trial that reaches its own cap proceeds to verification. An account, team, or platform budget refusal is a separate `BUDGET` outcome.
97
+
98
+ ### Automatic retries and capacity waits
99
+
100
+ `-r 0` disables configured infrastructure retries. With retries enabled, only eligible `INFRASTRUCTURE_ERROR` trials rerun automatically. Each retry receives a fresh per-trial cap; previous spend remains in the job total.
101
+
102
+ `--retry-include` and `--retry-exclude` filter exception types. Exclusions win. The same infrastructure failure twice in a row can stop retries early.
103
+
104
+ A provider that cannot allocate a sandbox can cause a **capacity wait**, even with `-r 0`. Capacity waits use a separate bounded wait budget and do not consume configured retries.
105
+
106
+ ## Read the results
107
+
108
+ ```bash
109
+ evolve job trials "$JOB_ID" --status INFRASTRUCTURE_ERROR,SCORING_ERROR
110
+ evolve job compare "$JOB_ID" "$OTHER_JOB_ID"
111
+ evolve job list --search nightly
112
+ ```
113
+
114
+ Results are grouped by agent arm and dataset. Compare 2–10 jobs at once.
115
+
116
+ ### How to read pass@k
117
+
118
+ pass@k estimates the chance of at least one successful attempt among `k` attempts, averaged across tasks.
119
+
120
+ It appears for settled groups with one binary reward per trial. Missing rewards count as failures for this statistic; the trial's own reward remains absent. Non-binary or multi-key rewards do not produce pass@k.
121
+
122
+ Available `k` values are powers of two and multiples of five up to the smallest per-task attempt count. A single-attempt group has no pass@k.
123
+
124
+ ## Statuses
125
+
126
+ | Status | Meaning |
127
+ | --- | --- |
128
+ | `QUEUED` | Accepted; waiting for dispatch. |
129
+ | `RUNNING` | Trials are being processed. |
130
+ | `CANCELLING` | Cancellation requested; active trials are stopping. |
131
+ | `COMPLETED` | All trials settled. Some may have errors. |
132
+ | `CANCELLED` | The job was cancelled. |
133
+ | `FAILED` | Reserved in the API; the current worker does not assign it. |
134
+
135
+ Read [trial statuses](/core-concepts/trials#statuses) to understand individual outcomes.
136
+
137
+ ## Derive a new job
138
+
139
+ Each command below creates a new job linked through `source_jobs`. The original result stays intact.
140
+
141
+ | Action | Runs again | Selects |
142
+ | --- | --- | --- |
143
+ | **Resume** | Agent and verifier | Failed or stopped trials from a finished job. |
144
+ | **Retry** | Agent and verifier | All, failed, or explicitly selected settled trials. Scored trials are allowed. |
145
+ | **Regrade** | Verifier only | Eligible trials with recorded verifier inputs. |
146
+
147
+ ```bash
148
+ evolve job resume "$JOB_ID"
149
+ evolve job retry "$JOB_ID" --failed-only
150
+ evolve job retry "$JOB_ID" -t "$TRIAL_ID"
151
+ evolve job regrade "$JOB_ID" --task hello-world
152
+ ```
153
+
154
+ Use full trial IDs with `-t`. Named settled trials can be retried while other trials in the source job are running. Whole-job retry and resume require a finished source.
155
+
156
+ ### Regrade eligibility
157
+
158
+ Regrade re-runs the recorded verifier snapshot on retained inputs. It does not accept a replacement verifier or pick up edits to the task's tests.
159
+
160
+ Regrade needs recorded inputs from a separate verifier environment. Shared-verifier, multi-step, and LLM-judge tasks are not supported for regrade.
161
+
162
+ A whole-job regrade skips ineligible trials and refuses if none remain. A single-trial regrade reports the reason it is ineligible. Uploaded jobs cannot be resumed, retried, or regraded.
163
+
164
+ ## Stop, cancel, delete
165
+
166
+ | Command | Effect |
167
+ | --- | --- |
168
+ | `evolve job cancel "$JOB_ID"` | Stop the whole job. |
169
+ | `evolve job stop "$JOB_ID" --dataset my-dataset` | Stop trials from one dataset. Other trials continue. |
170
+ | `evolve job delete "$JOB_ID" --yes` | Permanently remove the finished job and its stored results. |
171
+
172
+ Deletion is restricted to the creator. Active analyses or derived regrades can prevent deletion until they finish.
173
+
174
+ ## Share
175
+
176
+ ```bash
177
+ evolve job share "$JOB_ID" --link
178
+ ```
179
+
180
+ Share by link or email. Recipients get read access; see [Sharing](/core-concepts/sharing).
181
+
182
+ ## Download
183
+
184
+ ```bash
185
+ evolve job download "$JOB_ID" -o results/
186
+ ```
187
+
188
+ This unpacks a Harbor-format job directory under `results/job-<id>/`, with job records and one folder per trial. See [Trial outputs](/core-concepts/trial-outputs).
189
+
190
+ ## Config files
191
+
192
+ Use YAML or JSON for a repeatable comparison:
193
+
194
+ ```yaml comparison.yaml
195
+ datasets:
196
+ - name: harbor-examples
197
+ version: "1.0"
198
+ task_names: [hello-world]
199
+ agents:
200
+ - name: codex
201
+ model_name: gpt-5.6-luna
202
+ - name: claude
203
+ model_name: fable
204
+ n_attempts: 2
205
+ max_trial_spend_usd: 1
206
+ retry:
207
+ max_retries: 0
208
+ ```
209
+
210
+ ```bash
211
+ evolve run -c comparison.yaml --print-config
212
+ evolve run -c comparison.yaml --watch
213
+ ```
214
+
215
+ `--print-config` shows the request without submitting it. It does not resolve every server default or validate server acceptance. Use `--org` for team ownership.
216
+
217
+ **[Run reference](/cli-reference/run)**
218
+
219
+ Flags, configuration overrides, and output modes.
220
+
221
+ **[Inspect a trial](/core-concepts/trials)**
222
+
223
+ Read the score, failure, and trace.
@@ -0,0 +1,73 @@
1
+ ---
2
+ title: "Models"
3
+ description: "Select models, compare them, and control metered spend."
4
+ ---
5
+
6
+ `-m` selects the model for an evaluation arm. Every arm must name a model; there is no default.
7
+
8
+ ```bash
9
+ evolve run -d harbor-examples@1.0 -i hello-world \
10
+ -a codex \
11
+ -m gpt-5.6-luna -m gpt-5.6-terra \
12
+ --max-trial-spend 1 --max-retries 0 --watch
13
+ ```
14
+
15
+ Repeating `-m` creates one arm per model. This command runs the selected task once with each model.
16
+
17
+ ## Find a supported model
18
+
19
+ Each harness has its own model names. Read the live roster instead of assuming a name works with every harness:
20
+
21
+ ```bash
22
+ curl -sS https://dashboard.evolvingmachines.ai/api/meta
23
+ ```
24
+
25
+ The `agents` list includes each harness's models, effort support, and configuration capabilities. The same document is available through [`meta()` in both SDKs](/sdk-reference/meta), without authentication.
26
+
27
+ ## Model access and spend
28
+
29
+ ```text
30
+ 1. Agent harness
31
+ ↓
32
+ 2. Evolve gateway
33
+ Meter usage against the cap
34
+ ↓
35
+ 3. Model provider
36
+ ```
37
+
38
+ An `EVOLVE_API_KEY` supplies platform model access. `--max-trial-spend` limits the agent’s metered spend per trial attempt. Verifier judges and trace analysis have separate budgets. See [job costs](/core-concepts/jobs#spend-and-retries).
39
+
40
+ Requests that bypass the gateway with separately supplied credentials are not metered by Evolve. A task's `no-network` agent policy restricts model access to the platform gateway.
41
+
42
+ If you enable your own provider key, supported model requests bill that provider account. Gateway metering and the cap still apply. Job creation still rejects accounts with an exhausted platform credit balance.
43
+
44
+ ## Reasoning effort
45
+
46
+ `--effort` applies to every arm in the CLI run. Accepted values depend on the harness:
47
+
48
+ | Harness behavior | How to configure it |
49
+ | --- | --- |
50
+ | Supports effort levels | Use a value from `limits.job.reasoning_efforts` |
51
+ | Qwen thinking mode | Use `off` or `minimal` to disable thinking; `medium` or `thinking` to enable it |
52
+ | Gemini | Do not pass effort; it is unsupported |
53
+ | Custom agent | Configure reasoning in its run command |
54
+
55
+ When omitted, Evolve resolves the harness's default and records it in `agent_info.reasoning_effort`. The same harness and model at different efforts are distinct arms.
56
+
57
+ In `/api/meta`, `agents[].effort_support` identifies the mode: `level`, `binary`, or `none`. Qwen's accepted values are listed in `limits.job.binary_effort_values`.
58
+
59
+ ## Analysis and check models
60
+
61
+ Trace analysis and task checks use the Claude Code harness. Select their model separately:
62
+
63
+ | Operation | Model option |
64
+ | --- | --- |
65
+ | `evolve analyze` | `-m` |
66
+ | `evolve check` | `-m` |
67
+ | Analysis attached to `evolve run` | `--analyze-model` |
68
+
69
+ Their default is `openrouter/deepseek/deepseek-v4.1-flash`. Choose from the supported Claude Code roster.
70
+
71
+ **[Configure a run](/cli-reference/run)**
72
+
73
+ All model, effort, concurrency, and budget options.
@@ -0,0 +1,93 @@
1
+ ---
2
+ title: "Multi-step tasks"
3
+ description: "Give the agent a sequence of instructions while preserving its files."
4
+ ---
5
+
6
+ A multi-step task runs ordered instructions in one shared environment. Files persist between steps; each step starts a fresh agent conversation and receives its own verification result.
7
+
8
+ ```mermaid
9
+ %%{init: {"flowchart": {"nodeSpacing": 16, "rankSpacing": 20, "padding": 10, "subGraphTitleMargin": {"top": 8, "bottom": 24}}, "themeVariables": {"fontSize": "14px", "fontFamily": "Google Sans Flex, sans-serif"}}}%%
10
+ flowchart TB
11
+ subgraph shared["One shared environment"]
12
+ A["1. Start environment"] --> B["2. Step 1<br/>New conversation"]
13
+ B --> C["3. Verify step 1"]
14
+ C -->|"Threshold met"| D["4. Step 2<br/>New conversation · same files"]
15
+ D --> E["5. Verify step 2"]
16
+ end
17
+ E --> F["6. Select trial reward<br/>mean or final"]
18
+ C -->|"Threshold missed<br/>Skip step 2"| F
19
+ ```
20
+
21
+ This two-step example uses the same environment for both agent steps and their verifiers. Reward thresholds and failure rules decide whether later steps run.
22
+
23
+ ## Directory layout
24
+
25
+ - migrate-then-test/
26
+ - task.toml
27
+ - environment/
28
+ - Dockerfile
29
+ - tests/
30
+ - test.sh
31
+ - steps/
32
+ - 01-migrate/
33
+ - instruction.md
34
+ - tests/
35
+ - test.sh
36
+ - workdir/
37
+ - setup.sh
38
+ - 02-test/
39
+ - instruction.md
40
+ - tests/
41
+ - test.sh
42
+
43
+ The root `tests/` folder can hold shared verifier files. Each step can include optional `workdir/` files and a `setup.sh` inside that folder.
44
+
45
+ Each step needs an instruction and a test script, either its own or the shared root `tests/test.sh`. Step test files override shared files with the same path.
46
+
47
+ ## Declare the order
48
+
49
+ ```toml task.toml
50
+ multi_step_reward_strategy = "mean"
51
+
52
+ [[steps]]
53
+ name = "01-migrate"
54
+ min_reward = 0.5
55
+
56
+ [[steps]]
57
+ name = "02-test"
58
+
59
+ [steps.agent]
60
+ timeout_sec = 600
61
+ ```
62
+
63
+ Every declared step must have a matching directory, and every step directory must be declared. There is no root instruction for this layout.
64
+
65
+ Before a step starts, its optional `workdir/` files are copied into the working directory and `setup.sh` runs if present.
66
+
67
+ ## Rewards and stopping
68
+
69
+ | Setting | Meaning |
70
+ | --- | --- |
71
+ | `mean` | Average each metric across steps with a verifier result; a missing metric counts as `0`. This is the default |
72
+ | `final` | Use the last executed step's result, including a step that stopped the trial early |
73
+ | `min_reward = 0.5` | Require the `reward` key to be at least `0.5`; a missing key also stops the trial |
74
+ | `min_reward = { accuracy = 0.8 }` | Require each named metric to meet its threshold; a missing metric also stops the trial |
75
+
76
+ A setup or healthcheck failure stops the remaining steps. A step error with no verifier result also stops the trial. An agent error alone can still continue when verification returns a result and the reward thresholds pass. Infrastructure failures stop the trial.
77
+
78
+ The trial exposes individual outcomes in `step_results`. A retry starts again at step 1.
79
+
80
+ ## Current limits
81
+
82
+ | Supported per step | Set once for the whole task |
83
+ | --- | --- |
84
+ | Instruction and tests | Environment image and agent user |
85
+ | Agent and verifier timeouts | Network policies |
86
+ | Verifier environment variables | Shared verifier mode |
87
+ | Healthcheck | Sandbox provider |
88
+
89
+ Multi-step tasks require shared verification. Compose, separate verification, per-step agent users, per-step network policies, per-step verifier environments, and per-step collection hooks are rejected. Verifiers run as root. These trials cannot be regraded.
90
+
91
+ `steps.artifacts` does not create a separate snapshot after each step. Save intermediate outputs under distinct paths when you need to inspect them later.
92
+
93
+ To seed the first conversation on Claude Code or Codex, put an ATIF `trajectory.json` inside the first step’s directory, beside its `instruction.md`. A root trajectory or a trajectory in a later step is rejected. Later steps start fresh conversations.