@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
@@ -0,0 +1,209 @@
1
+ ---
2
+ title: "Task verifier"
3
+ description: "Turn the agent's work into a reward you can compare."
4
+ ---
5
+
6
+ The verifier runs after the agent. Its entry point is `tests/test.sh`, and its result comes from a reward file.
7
+
8
+ ```text
9
+ 1. Agent output
10
+ /app/answer.txt
11
+ ↓
12
+ 2. Run the verifier
13
+ /tests/test.sh
14
+ ↓
15
+ 3. Read the reward
16
+ /logs/verifier/reward.json
17
+ or /logs/verifier/reward.txt
18
+ ```
19
+
20
+ ## Write a reward
21
+
22
+ This verifier checks the [example instruction](/core-concepts/tasks#write-a-clear-instruction):
23
+
24
+ ```bash tests/test.sh
25
+ #!/bin/bash
26
+ set -uo pipefail
27
+ mkdir -p /logs/verifier
28
+
29
+ if python3 - <<'PYTEST'
30
+ from pathlib import Path
31
+ assert Path("/app/answer.txt").read_text() == "Hello, world!\n"
32
+ PYTEST
33
+ then
34
+ echo 1 > /logs/verifier/reward.txt
35
+ else
36
+ echo 0 > /logs/verifier/reward.txt
37
+ fi
38
+ ```
39
+
40
+ The reward file determines the score. The script's exit code alone does not.
41
+
42
+ | File | Shape |
43
+ | --- | --- |
44
+ | `reward.txt` | One finite number from `0` to `1` |
45
+ | `reward.json` | An object of named finite numbers |
46
+
47
+ A nonempty `reward.json` takes precedence over `reward.txt`. The primary reward is the `reward` field, or the only field in a one-field object. A primary reward must be in `[0, 1]`.
48
+
49
+ ```json /logs/verifier/reward.json
50
+ {"reward": 1, "tests_passed": 12, "tests_total": 12}
51
+ ```
52
+
53
+ Multiple metrics without a `reward` key produce a scored trial with no primary reward. That trial cannot contribute a primary success to pass@k.
54
+
55
+ | Outcome | Trial status |
56
+ | --- | --- |
57
+ | Valid reward, including `0` | `SCORED` |
58
+ | No reward file | `INDETERMINATE` |
59
+ | Invalid reward | `SCORING_ERROR` |
60
+
61
+ ## Choose where verification runs
62
+
63
+ ### Shared · default
64
+
65
+ The verifier runs in the agent's sandbox. It can inspect the filesystem and processes left by the agent. Agent credentials are revoked before verification begins.
66
+
67
+ ```text
68
+ One sandbox
69
+ ┌─────────────────────┐
70
+ │ 1. Agent works │
71
+ │ ↓ │
72
+ │ 2. Verifier checks │
73
+ └─────────────────────┘
74
+ ```
75
+
76
+ ```toml task.toml
77
+ [verifier]
78
+ environment_mode = "shared"
79
+ ```
80
+
81
+ Test files are uploaded to `/tests/`. Install verifier dependencies in the task image; a `tests/Dockerfile` is not built in this mode.
82
+
83
+ ### Separate
84
+
85
+ The verifier starts in a fresh sandbox. Declare the outputs it needs under `artifacts`. Evolve also transfers `/logs/artifacts/` and the collection script’s patch file; it does not copy the whole agent filesystem.
86
+
87
+ ```text
88
+ 1. Agent sandbox
89
+ /app/answer.txt
90
+ ↓ copy artifact
91
+ 2. Fresh verifier sandbox
92
+ /app/answer.txt
93
+ ```
94
+
95
+ Separate verification supports [regrading eligible trials](/core-concepts/jobs). It is not available for multi-step tasks.
96
+
97
+ ## Separate verification
98
+
99
+ A verifier with its own Dockerfile keeps grading dependencies out of the agent's image.
100
+
101
+ ```text
102
+ my-task/
103
+ ├── instruction.md
104
+ ├── task.toml
105
+ ├── environment/
106
+ │ └── Dockerfile
107
+ └── tests/
108
+ ├── Dockerfile
109
+ └── test.sh
110
+ ```
111
+
112
+ ```toml task.toml
113
+ artifacts = ["/app/answer.txt"]
114
+
115
+ [verifier]
116
+ environment_mode = "separate"
117
+
118
+ [verifier.environment]
119
+ cpus = 2
120
+ memory_mb = 2048
121
+ workdir = "/app"
122
+ network_mode = "no-network"
123
+ ```
124
+
125
+ ```dockerfile tests/Dockerfile
126
+ FROM python:3.12-slim
127
+ WORKDIR /app
128
+ COPY . /tests/
129
+ ```
130
+
131
+ With `environment_mode` omitted, `[verifier.environment]` selects separate mode. An explicit `environment_mode = "shared"` keeps verification in the agent sandbox.
132
+
133
+ ### How the verifier image is selected
134
+
135
+ The effective configuration is `[verifier.environment]` when present; otherwise, it copies `[environment]`.
136
+
137
+ | Effective configuration | Behavior |
138
+ | --- | --- |
139
+ | No `docker_image` | Build `tests/Dockerfile`; it must provide `/tests/test.sh` |
140
+ | Same pinned image as the agent | Reuse that image and upload the task's test files |
141
+ | A distinct pinned image | Use that image as-is; it must contain `/tests/test.sh` |
142
+
143
+ The task source must still contain a nonempty `tests/test.sh`, including when a distinct prebuilt verifier image already contains it.
144
+
145
+ A `tests/Dockerfile` is not built when the effective configuration pins an image. The import records a `tests_dockerfile_not_built` note if that unused file exists.
146
+
147
+ ## Prepare outputs for collection
148
+
149
+ Most tasks only need an `artifacts` list. If outputs need preparation after the agent finishes, add `pre_artifacts.sh` at the task root. It runs from the task's working directory.
150
+
151
+ ```bash pre_artifacts.sh
152
+ #!/bin/bash
153
+ set -euo pipefail
154
+ mkdir -p /logs/artifacts
155
+ [ -e /logs/artifacts/model.patch ] || : > /logs/artifacts/model.patch
156
+ if [ -f /app/summary.json ]; then
157
+ cp /app/summary.json /logs/artifacts/summary.json
158
+ fi
159
+ ```
160
+
161
+ This example assumes the agent produces `/app/summary.json`. A custom collection script must also provide `/logs/artifacts/model.patch`; it can be empty when the task does not produce a patch. If you omit the script, Evolve prepares that file for you.
162
+
163
+ ### Collect from a service
164
+
165
+ `[[verifier.collect]]` runs a command before artifact collection. For a [multi-container task](/core-concepts/compose), use `service` to choose the container. For a single container, omit it or use `main`.
166
+
167
+ ```toml task.toml
168
+ artifacts = [
169
+ { source = "/tmp/stats.json", service = "api" }
170
+ ]
171
+
172
+ [[verifier.collect]]
173
+ service = "api"
174
+ command = "curl -fsS http://localhost:8000/stats > /tmp/stats.json"
175
+ timeout_sec = 60
176
+ ```
177
+
178
+ This example assumes an `api` service with a `/stats` endpoint and `curl` installed. Hook failures are logged and do not stop the run. Make the verifier reject missing evidence when it is required for a valid score.
179
+
180
+ Main-service hooks run before collecting its files. In separate verification, Evolve then stops `main`, runs sidecar hooks, and collects sidecar files. Shared verification keeps the containers running. Sidecar artifacts retain their source paths in the separate verifier.
181
+
182
+ `timeout_sec` defaults to 60 seconds. Compose hooks can set `user` to choose an existing container user. Single-container hooks do not accept that override.
183
+
184
+ ## Grade with a model
185
+
186
+ [Reward Kit](/core-concepts/rewardkit) combines reusable checks, custom Python, and model judges.
187
+
188
+ A verifier can request model access for an LLM judge:
189
+
190
+ ```toml task.toml
191
+ [verifier.env]
192
+ ANTHROPIC_API_KEY = "${ANTHROPIC_API_KEY}"
193
+ ```
194
+
195
+ Evolve supplies a gateway credential and the matching base URL. Recognized credential families are Anthropic and OpenAI; these templates are not job secrets. They also work under `no-network` through the judge gateway.
196
+
197
+ For a Reward Kit judge, override its agent and model for one job with:
198
+
199
+ ```bash
200
+ evolve run -d my-dataset@1.0 -a codex -m gpt-5.6-luna \
201
+ --ve REWARDKIT_JUDGE=claude \
202
+ --ve REWARDKIT_MODEL=sonnet
203
+ ```
204
+
205
+ These are the only accepted `--ve` keys. Judge spend is reported separately from agent spend. Its independent cap is the smaller of the agent’s per-trial cap and $5. Judge-enabled trials are not currently regradable.
206
+
207
+ **Tip:**
208
+
209
+ Ask a coding agent to load `evolve skills get rewardkit` for verifier authoring guidance. Use `evolve skills get create-task` for the complete task workflow.
@@ -0,0 +1,90 @@
1
+ ---
2
+ title: "Tasks"
3
+ description: "Define the work, the environment, and how to score it."
4
+ ---
5
+
6
+ A task is one problem for an agent to solve. It packages an instruction, a Linux environment, and a verifier that scores the result.
7
+
8
+ Evolve accepts the **Harbor task format**, with the [managed capabilities and limits](/core-concepts/compatibility) described in these guides.
9
+
10
+ **Tip:**
11
+
12
+ New to task authoring? [Build your first task](/getting-started/first-task) from five small files.
13
+
14
+ - my-task/
15
+ - instruction.md
16
+ - task.toml
17
+ - environment/
18
+ - Dockerfile
19
+ - tests/
20
+ - test.sh
21
+ - solution/
22
+ - solve.sh
23
+
24
+ | File | Purpose |
25
+ | --- | --- |
26
+ | `instruction.md` | What the agent must do |
27
+ | `task.toml` | Timeouts, resources, and policies |
28
+ | `environment/Dockerfile` | Tools and files available to the agent |
29
+ | `tests/test.sh` | Checks the work and writes a reward |
30
+ | `solution/solve.sh` | Optional reference solution |
31
+
32
+ For a single-step task, `instruction.md`, `task.toml`, and a nonempty `tests/test.sh` are required. Define the environment with a Dockerfile, a pinned image, or supported Docker Compose configuration.
33
+
34
+ ## What happens in a trial
35
+
36
+ ```mermaid
37
+ %%{init: {"flowchart": {"nodeSpacing": 16, "rankSpacing": 20, "padding": 10}, "themeVariables": {"fontSize": "14px", "fontFamily": "Google Sans Flex, sans-serif"}}}%%
38
+ flowchart TB
39
+ A["1. Start the task environment"] --> B["2. Give the agent the instruction"]
40
+ B --> C["3. Agent works on the task"]
41
+ C --> D["4. Run the verifier"]
42
+ D --> E["5. Save reward, logs, and outputs"]
43
+ ```
44
+
45
+ The agent receives the instruction and environment. The verifier and reference solution are not handed to it as task inputs.
46
+
47
+ ## Write a clear instruction
48
+
49
+ State the requested change, the output path, and the conditions for success. The verifier should check those same conditions.
50
+
51
+ ```markdown instruction.md
52
+ Create /app/answer.txt containing exactly:
53
+
54
+ Hello, world!
55
+
56
+ End the file with a newline.
57
+ ```
58
+
59
+ Use absolute paths when the location matters. A benchmark canary marker is removed before the instruction reaches the agent.
60
+
61
+ ## Add a reference solution
62
+
63
+ `solution/solve.sh` demonstrates a correct answer. For the instruction above:
64
+
65
+ ```bash solution/solve.sh
66
+ #!/bin/bash
67
+ printf 'Hello, world!\n' > /app/answer.txt
68
+ ```
69
+
70
+ Keep it separate from the environment image. [Task checks](/core-concepts/check) can use it to test whether the verifier accepts a valid solution.
71
+
72
+ ## Build the rest
73
+
74
+ **[Environment](/core-concepts/task-environment)**
75
+
76
+ Images, working directories, services, and MCP tools.
77
+
78
+ **[Verifier](/core-concepts/task-verifiers)**
79
+
80
+ Write a reward and choose where grading runs.
81
+
82
+ **[Configuration](/core-concepts/task-config)**
83
+
84
+ Resources, network access, variables, and timeouts.
85
+
86
+ **[Multiple steps](/core-concepts/multi-step)**
87
+
88
+ Continue work across ordered instructions in one environment.
89
+
90
+ When the task is ready, [publish it as a dataset](/core-concepts/datasets).
@@ -0,0 +1,128 @@
1
+ ---
2
+ title: "Teams"
3
+ description: "Put evaluations in a shared workspace and give teammates access through membership."
4
+ ---
5
+
6
+ Every account starts with a personal organization. Create a team organization to run and inspect work together.
7
+
8
+ ```text
9
+ Your account
10
+ ├── Personal workspace
11
+ └── Team workspace
12
+ ├── Members and roles
13
+ ├── Jobs, checks, and sessions
14
+ ├── Datasets
15
+ ├── Registered agents
16
+ └── Uploaded skills
17
+ ```
18
+
19
+ ## Create and join
20
+
21
+ ### 1. Create the team
22
+
23
+ ```bash
24
+ evolve auth org create acme --display-name "Acme Lab"
25
+ ```
26
+
27
+ ### 2. Create an invitation
28
+
29
+ ```bash
30
+ evolve auth org invite acme
31
+ ```
32
+
33
+ Only an owner can create invitations. The command prints a token once; give it to the person you want to invite. By default, it expires after 7 days and allows unlimited joins.
34
+
35
+ ### 3. Join from the invited account
36
+
37
+ Set `$INVITE_TOKEN` to the token from the owner, then run:
38
+
39
+ ```bash
40
+ evolve auth org join "$INVITE_TOKEN"
41
+ ```
42
+
43
+ The invited account joins as a member.
44
+
45
+ | Role | Access |
46
+ | --- | --- |
47
+ | Member | Read team work and run evaluations. |
48
+ | Owner | Member access, plus team and membership management. |
49
+
50
+ Membership does not make every record yours to delete or share. Those operations retain their creator-specific rules.
51
+
52
+ ## Manage the team
53
+
54
+ Use the dashboard's **Members** and **Settings** pages, or the [HTTP team-management endpoints](/sdk-reference/auth#manage-teams-over-http).
55
+
56
+ | Action | Rule |
57
+ | --- | --- |
58
+ | Rename the team | An owner can change its slug or display name. |
59
+ | Change roles or remove someone | Owner required. The last owner cannot be demoted or removed. |
60
+ | Leave | Any member can leave, except the last owner. Promote another owner first. |
61
+ | Revoke an invitation | Owner required. This stops new joins; it does not remove existing members. |
62
+ | Delete the team | Owner required. Deletion is refused while the team owns jobs or datasets. |
63
+
64
+ Personal organizations cannot be renamed, deleted, or have their membership changed. For invitation expiry and use limits, use the [HTTP invitation options](/sdk-reference/auth#manage-teams-over-http); the CLI and SDKs use the defaults.
65
+
66
+ ## Run under a team
67
+
68
+ ```bash
69
+ evolve run \
70
+ -d harbor-examples@1.0 -i hello-world \
71
+ -a codex -m gpt-5.6-luna \
72
+ --max-trial-spend 1 -r 0 --org acme
73
+ ```
74
+
75
+ Set a default for later CLI commands, or return to your personal organization:
76
+
77
+ ```bash
78
+ evolve auth org use acme
79
+ evolve auth org use personal
80
+ ```
81
+
82
+ Dataset publishing, custom-agent registration, and skill upload also accept an organization. A new version of an existing dataset stays in that dataset's organization.
83
+
84
+ ```typescript TypeScript
85
+ import { hosted } from "@evolvingmachines/evolve";
86
+
87
+ const client = hosted({ org: "acme" });
88
+ ```
89
+
90
+ ```python Python
91
+ from evolve import hosted, HostedClientConfig
92
+
93
+ client = hosted(HostedClientConfig(org="acme"))
94
+ ```
95
+
96
+ The SDK client default applies to operations that accept organization ownership, such as job creation and dataset publishing. It is not a filter on every read.
97
+
98
+ ## Choose what to list
99
+
100
+ | Scope | Shows |
101
+ | --- | --- |
102
+ | `my` | Work you created. The default. |
103
+ | `shared` | Teammates' work and runs shared with your email address. |
104
+ | `org` | Work in your organizations, including your own. |
105
+
106
+ ```bash
107
+ evolve job list --scope org
108
+ ```
109
+
110
+ ## In the dashboard
111
+
112
+ Use the workspace switcher beneath your account to choose **Personal** or a team. Team pages include Datasets, Jobs, Traces, Members, and Settings.
113
+
114
+ | Page | Use it for |
115
+ | --- | --- |
116
+ | **Members** | Read roles; owners manage membership and invitation links. |
117
+ | **Settings** | Read the workspace name; owners manage the team. |
118
+ | **Traces** | Team runs with a Created by column. |
119
+
120
+ Skills, Integrations, Secrets, API Keys, Usage, and Billing remain account pages. Selecting a team does not turn these into shared team settings.
121
+
122
+ **[Organization commands](/cli-reference/auth)**
123
+
124
+ Create, join, inspect, and select a team.
125
+
126
+ **[Share one run](/core-concepts/sharing)**
127
+
128
+ Give access without adding a team member.
@@ -0,0 +1,225 @@
1
+ ---
2
+ title: "Trial outputs"
3
+ description: "Find the record, trace, logs, and files from an evaluation."
4
+ ---
5
+
6
+ Choose the output that answers your question:
7
+
8
+ | Question | Open |
9
+ | --- | --- |
10
+ | What score did it earn? | `result.json` and verifier output. |
11
+ | What did the agent do? | Parsed trace or ATIF trajectory. |
12
+ | What did the process print? | Raw stdout and stderr. |
13
+ | What files did it change? | Run filesystem and changes list. |
14
+ | What state did the harness keep? | Captured agent home. |
15
+
16
+ ## The trial directory
17
+
18
+ ```bash
19
+ evolve trial download "$TRIAL_ID" -o trials/
20
+ ```
21
+
22
+ A typical Codex trial looks like this. Files appear only when recorded.
23
+
24
+ - trials/
25
+ - TRIAL_ID/
26
+ - config.json
27
+ - result.json
28
+ - evolve.json
29
+ - exception.txt
30
+ - agent/
31
+ - trajectory.json
32
+ - trace-parsed.jsonl
33
+ - codex.txt
34
+ - stderr.log
35
+ - agent-home.json
36
+ - .codex/
37
+ - verifier/
38
+ - test-stdout.txt
39
+ - reward.json
40
+
41
+ ### What each file contains
42
+
43
+ | File | Contents |
44
+ | --- | --- |
45
+ | `config.json` | Task and agent identity |
46
+ | `result.json` | Reward, timing, and exception |
47
+ | `evolve.json` | Evolve's detailed trial record |
48
+ | `exception.txt` | Present when an exception exists |
49
+ | `trajectory.json` | ATIF conversation |
50
+ | `trace-parsed.jsonl` | Parsed events |
51
+ | `codex.txt` | Raw stdout |
52
+ | `stderr.log` | Raw stderr |
53
+ | `agent-home.json` | Capture manifest |
54
+ | `.codex/` | Captured harness state |
55
+ | `test-stdout.txt` | Verifier log |
56
+ | `reward.json` | Recorded rewards |
57
+
58
+ The stdout filename follows the harness. A registered custom agent uses `stdout.log`.
59
+
60
+ ### Trial download or job archive?
61
+
62
+ | Download | Includes |
63
+ | --- | --- |
64
+ | `evolve trial download "$TRIAL_ID"` | One trial reconstructed by the CLI, including the text view of its agent home. |
65
+ | `evolve job download "$JOB_ID"` | The full server archive: job records, each trial's locks and logs, retained binary home files, and recorded artifacts. |
66
+
67
+ A job archive also includes per-step records for multi-step tasks. Platform-specific fields in Harbor-format records use `x_evolve` extensions.
68
+
69
+ Existing output folders require `--overwrite`. This permits writing into the folder; it does not remove unrelated old files.
70
+
71
+ ### Declared artifacts in the job archive
72
+
73
+ Each trial in the full job archive contains `artifacts/manifest.json`. For native Evolve runs, artifact payloads come from the retained inputs of **separate verification**. Shared verification does not export the task's artifact list; inspect its live or captured files through [sandbox files](#sandbox-files).
74
+
75
+ Files normally mirror their absolute source path under `artifacts/`. A task's `destination` changes that downloaded location. For example, one generated manifest entry can be:
76
+
77
+ ```json
78
+ {
79
+ "source": "/app/reports/result.json",
80
+ "destination": "artifacts/reports/result.json",
81
+ "type": "file",
82
+ "status": "ok",
83
+ "service": null
84
+ }
85
+ ```
86
+
87
+ ### Artifact manifest fields
88
+
89
+ The manifest is a JSON array of entries.
90
+
91
+ | Field | Meaning |
92
+ | --- | --- |
93
+ | `source` | Original absolute file path in the sandbox. |
94
+ | `destination` | Export path relative to the trial directory, including `artifacts/`. |
95
+ | `type` | `"file"` for generated entries. Directory declarations expand to individual retained files. |
96
+ | `status` | `"ok"` for an emitted file, or `"skipped"` for a destination conflict. |
97
+ | `service` | Compose service name, or `null` for the main container. |
98
+
99
+ The first file claiming a destination wins. Later equal or nested destinations are skipped, and `artifacts/manifest.json` is reserved for the manifest itself.
100
+
101
+ Generated entries describe retained file candidates; missing, unrecorded files have no entry. A native trial with no retained artifact record has `[]`, including shared-mode trials or a separate-mode trial whose artifact record could not be stored. The separate filesystem capture can still be available.
102
+
103
+ Uploaded archives retain their own artifact files and manifest when present. Their manifest content is preserved rather than rewritten to the generated schema above.
104
+
105
+ ## The parsed trace
106
+
107
+ Each event has a sequence position, a type, and data. This illustrative event shows a completed tool call:
108
+
109
+ ```json
110
+ {
111
+ "seq": 3,
112
+ "type": "tool_call_update",
113
+ "data": {
114
+ "update": {
115
+ "sessionUpdate": "tool_call_update",
116
+ "toolCallId": "call-1",
117
+ "status": "completed"
118
+ }
119
+ }
120
+ }
121
+ ```
122
+
123
+ ```bash
124
+ evolve trial trace "$TRIAL_ID" --json
125
+ evolve trial trace "$TRIAL_ID" --grep 'permission denied' --tail 50
126
+ ```
127
+
128
+ Gateway usage events carry `data.update.source: "gateway"`. Use them for gateway token and cost accounting; harness-reported usage is a different reading.
129
+
130
+ ## The ATIF trajectory
131
+
132
+ ATIF is Harbor's **Agent Trajectory Interchange Format**. Evolve exports `ATIF-v1.7`, built from the stored parsed trace.
133
+
134
+ | Field | Contents |
135
+ | --- | --- |
136
+ | `schema_version` | Format version |
137
+ | `agent` | Harness, version, and model |
138
+ | `steps[].source` | User, system, or agent |
139
+ | `steps[].message` | Conversation content |
140
+ | `steps[].tool_calls` | Agent actions |
141
+ | `steps[].observation` | Tool results |
142
+
143
+ ```bash
144
+ evolve trial download "$TRIAL_ID" --stream trace-atif
145
+ ```
146
+
147
+ The `trajectory` stream name is reserved for a native harness session and is not served today. Use `trace-atif` for the portable trajectory.
148
+
149
+ ## Raw streams and the verifier log
150
+
151
+ ```bash
152
+ evolve trial download "$TRIAL_ID" --stream trace-stdout
153
+ evolve trial download "$TRIAL_ID" --stream trace-stderr
154
+ evolve trial download "$TRIAL_ID" --stream verifier
155
+ ```
156
+
157
+ An absent artifact remains absent. It is not replaced with an empty success log.
158
+
159
+ ## The agent's home folder
160
+
161
+ The captured home contains harness settings, sessions, and subagent transcripts. `agent-home.json` records paths, sizes, digests, and files excluded or skipped.
162
+
163
+ The `agent-home` stream is a **text view**. Binary files are listed in the manifest but omitted from this view. Download the full job archive to retrieve retained binary files.
164
+
165
+ ## Sandbox files
166
+
167
+ The run filesystem is separate from the saved trial directory above.
168
+
169
+ | File in the sandbox | After capture |
170
+ | --- | --- |
171
+ | `/app/report.json` — changed | Metadata and captured bytes |
172
+ | `/app/new.txt` — created | Metadata and captured bytes |
173
+ | `/usr/bin/python` — unchanged | Metadata only |
174
+
175
+ The capture preserves supported files the run created or changed. It is not a complete copy of the base image. Files omitted during capture carry a reason.
176
+
177
+ ### 1. Check which source is available
178
+
179
+ ```bash
180
+ evolve trial files status "$TRIAL_ID"
181
+ ```
182
+
183
+ The state is `live`, `capturing`, `captured`, or `none`.
184
+
185
+ ### 2. Browse and read
186
+
187
+ ```bash
188
+ evolve trial files ls "$TRIAL_ID" /app
189
+ evolve trial files cat "$TRIAL_ID" /app/report.json
190
+ evolve trial files changes "$TRIAL_ID"
191
+ ```
192
+
193
+ Reads use the live sandbox when available, otherwise its capture. Force one with `--source live` or `--source capture`.
194
+
195
+ ### 3. Keep a subtree
196
+
197
+ ```bash
198
+ evolve trial files archive "$TRIAL_ID" --path /app -o archives/
199
+ ```
200
+
201
+ An unchanged image file may be listed but unreadable after capture (`not_captured`). A forced source that is unavailable returns `filesystem_state`.
202
+
203
+ ### Logs and processes
204
+
205
+ ```bash
206
+ evolve trial logs "$TRIAL_ID" --stream agent --follow
207
+ evolve trial procs "$TRIAL_ID"
208
+ ```
209
+
210
+ | Stream | Availability |
211
+ | --- | --- |
212
+ | `agent` | Recorded harness output. |
213
+ | `verifier` | Recorded verifier output. |
214
+ | `system` | When the job enabled `--system-log`. |
215
+ | `setup`, `metrics` | Reserved; currently empty with an explanation. |
216
+
217
+ Process inspection requires a live sandbox. Analysis runs and task checks expose the same filesystem operations. Published task files have a separate read-only package browser.
218
+
219
+ **[Filesystem API](/sdk-reference/filesystem)**
220
+
221
+ Read ranges, search, changes, and events.
222
+
223
+ **[Trial viewer](/dashboard/trial-viewer)**
224
+
225
+ Inspect the trace in the browser.