@evolvingmachines/evolve 0.0.55-project-sable.20260916.db0bc0bb

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 (98) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +25 -0
  3. package/dist/chunk-5GVMBEYI.js +11 -0
  4. package/dist/chunk-HQJI3HHU.js +1 -0
  5. package/dist/chunk-JS2UTK2I.js +427 -0
  6. package/dist/cli/index.cjs +73 -0
  7. package/dist/cli/index.d.cts +270 -0
  8. package/dist/cli/index.d.ts +270 -0
  9. package/dist/cli/index.js +54 -0
  10. package/dist/index.cjs +669 -0
  11. package/dist/index.d.cts +5023 -0
  12. package/dist/index.d.ts +5023 -0
  13. package/dist/index.js +230 -0
  14. package/dist/managed-modal-IJW62SSK.js +4 -0
  15. package/dist/resumable-HFSICSH3.js +1 -0
  16. package/dist/tar-GVC4KE52.js +1 -0
  17. package/dist/types-DlpTxdR_.d.cts +4777 -0
  18. package/dist/types-DlpTxdR_.d.ts +4777 -0
  19. package/dist/upload-KPYDMWFJ.js +1 -0
  20. package/docs-agents/SKILL.md +138 -0
  21. package/docs-agents/index.md +81 -0
  22. package/docs-agents/python/01-getting-started.md +511 -0
  23. package/docs-agents/python/02-configuration.md +855 -0
  24. package/docs-agents/python/03-runtime.md +899 -0
  25. package/docs-agents/python/04-streaming.md +451 -0
  26. package/docs-agents/python/05-swarm-pipeline.md +953 -0
  27. package/docs-agents/python/index.md +122 -0
  28. package/docs-agents/typescript/01-getting-started.md +494 -0
  29. package/docs-agents/typescript/02-configuration.md +841 -0
  30. package/docs-agents/typescript/03-runtime.md +864 -0
  31. package/docs-agents/typescript/04-streaming.md +478 -0
  32. package/docs-agents/typescript/05-swarm-pipeline.md +957 -0
  33. package/docs-agents/typescript/index.md +121 -0
  34. package/docs-evals/SKILL.md +112 -0
  35. package/docs-evals/cli-reference/agent.mdx +67 -0
  36. package/docs-evals/cli-reference/analysis.mdx +91 -0
  37. package/docs-evals/cli-reference/analyze.mdx +74 -0
  38. package/docs-evals/cli-reference/auth.mdx +60 -0
  39. package/docs-evals/cli-reference/check.mdx +146 -0
  40. package/docs-evals/cli-reference/dataset.mdx +133 -0
  41. package/docs-evals/cli-reference/index.mdx +108 -0
  42. package/docs-evals/cli-reference/job.mdx +239 -0
  43. package/docs-evals/cli-reference/run.mdx +196 -0
  44. package/docs-evals/cli-reference/secrets.mdx +95 -0
  45. package/docs-evals/cli-reference/skill.mdx +51 -0
  46. package/docs-evals/cli-reference/skills.mdx +81 -0
  47. package/docs-evals/cli-reference/trial.mdx +112 -0
  48. package/docs-evals/cli-reference/upload.mdx +36 -0
  49. package/docs-evals/core-concepts/agents.mdx +106 -0
  50. package/docs-evals/core-concepts/analyze.mdx +86 -0
  51. package/docs-evals/core-concepts/check.mdx +51 -0
  52. package/docs-evals/core-concepts/datasets.mdx +138 -0
  53. package/docs-evals/core-concepts/index.mdx +42 -0
  54. package/docs-evals/core-concepts/jobs.mdx +136 -0
  55. package/docs-evals/core-concepts/models.mdx +68 -0
  56. package/docs-evals/core-concepts/sandboxes.mdx +52 -0
  57. package/docs-evals/core-concepts/secrets.mdx +41 -0
  58. package/docs-evals/core-concepts/skills.mdx +42 -0
  59. package/docs-evals/core-concepts/tasks.mdx +216 -0
  60. package/docs-evals/core-concepts/trial-outputs.mdx +103 -0
  61. package/docs-evals/core-concepts/trials.mdx +103 -0
  62. package/docs-evals/core-concepts/upload.mdx +45 -0
  63. package/docs-evals/dashboard/checks.mdx +15 -0
  64. package/docs-evals/dashboard/datasets.mdx +24 -0
  65. package/docs-evals/dashboard/jobs.mdx +65 -0
  66. package/docs-evals/dashboard/traces.mdx +15 -0
  67. package/docs-evals/dashboard/trial-viewer.mdx +30 -0
  68. package/docs-evals/docs.json +180 -0
  69. package/docs-evals/getting-started/installation.mdx +56 -0
  70. package/docs-evals/getting-started/quick-start.mdx +85 -0
  71. package/docs-evals/index.mdx +36 -0
  72. package/docs-evals/sdk/python.mdx +139 -0
  73. package/docs-evals/sdk/typescript.mdx +141 -0
  74. package/docs-evals/sdk-reference/agents.mdx +105 -0
  75. package/docs-evals/sdk-reference/analyses.mdx +125 -0
  76. package/docs-evals/sdk-reference/auth.mdx +76 -0
  77. package/docs-evals/sdk-reference/checks.mdx +166 -0
  78. package/docs-evals/sdk-reference/datasets.mdx +305 -0
  79. package/docs-evals/sdk-reference/errors.mdx +199 -0
  80. package/docs-evals/sdk-reference/index.mdx +58 -0
  81. package/docs-evals/sdk-reference/jobs.mdx +731 -0
  82. package/docs-evals/sdk-reference/meta.mdx +52 -0
  83. package/docs-evals/sdk-reference/skills.mdx +68 -0
  84. package/docs-evals/sdk-reference/trials.mdx +232 -0
  85. package/docs-evals/sdk-reference/types.mdx +272 -0
  86. package/docs-evals/snippets/global-options.mdx +13 -0
  87. package/docs-evals/snippets/list-flags.mdx +23 -0
  88. package/harness-capabilities.json +430 -0
  89. package/hosted-error-codes.json +120 -0
  90. package/package.json +163 -0
  91. package/skills/create-adapter/SKILL.md +287 -0
  92. package/skills/create-task/SKILL.md +491 -0
  93. package/skills/evolve/SKILL.md +39 -0
  94. package/skills/publish/SKILL.md +142 -0
  95. package/skills/rewardkit/SKILL.md +330 -0
  96. package/spec/atif/README.md +45 -0
  97. package/spec/atif/trajectory.schema.json +865 -0
  98. package/spec/openapi.yaml +13447 -0
package/package.json ADDED
@@ -0,0 +1,163 @@
1
+ {
2
+ "name": "@evolvingmachines/evolve",
3
+ "version": "0.0.55-project-sable.20260916.db0bc0bb",
4
+ "keywords": [
5
+ "ai",
6
+ "agents",
7
+ "orchestration",
8
+ "sandbox",
9
+ "e2b",
10
+ "daytona",
11
+ "modal",
12
+ "gpu",
13
+ "claude code",
14
+ "codex",
15
+ "gemini cli",
16
+ "qwen code",
17
+ "automation",
18
+ "evolve"
19
+ ],
20
+ "homepage": "https://github.com/evolving-machines-lab/evolve",
21
+ "repository": {
22
+ "type": "git",
23
+ "url": "git+https://github.com/evolving-machines-lab/evolve.git"
24
+ },
25
+ "type": "module",
26
+ "bin": {
27
+ "evolve": "dist/cli/index.js"
28
+ },
29
+ "main": "dist/index.cjs",
30
+ "types": "dist/index.d.ts",
31
+ "license": "Apache-2.0",
32
+ "files": [
33
+ "dist",
34
+ "LICENSE",
35
+ "spec",
36
+ "docs-evals",
37
+ "docs-agents",
38
+ "skills",
39
+ "hosted-error-codes.json",
40
+ "harness-capabilities.json"
41
+ ],
42
+ "exports": {
43
+ ".": {
44
+ "types": "./dist/index.d.ts",
45
+ "import": "./dist/index.js",
46
+ "require": "./dist/index.cjs"
47
+ },
48
+ "./harness-capabilities.json": "./harness-capabilities.json"
49
+ },
50
+ "scripts": {
51
+ "build": "tsx scripts/generate-harness-capabilities.ts --check && tsup --minify && node scripts/copy-spec.mjs && node scripts/copy-skills.mjs",
52
+ "generate:capabilities": "tsx scripts/generate-harness-capabilities.ts",
53
+ "dev": "tsup src/index.ts --watch",
54
+ "type-check": "tsc --noEmit && tsc -p tsconfig.types-test.json",
55
+ "test": "npm run test:unit && npm run test:integration",
56
+ "pretest:unit": "npm run build",
57
+ "test:unit": "tsx tests/unit/semaphore.test.ts && tsx tests/unit/swarm-concurrency.test.ts && tsx tests/unit/swarm-verify.test.ts && tsx tests/unit/swarm-retry-verify.test.ts && tsx tests/unit/prompt-construction.test.ts && tsx tests/unit/observability-metadata.test.ts && tsx tests/unit/observability-identity.test.ts && tsx tests/unit/skills-integration.test.ts && tsx tests/unit/skills-resolver.test.ts && tsx tests/unit/skills-tag-peel.test.ts && tsx tests/unit/auth-config.test.ts && tsx tests/unit/config-validation.test.ts && tsx tests/unit/agent-presets.test.ts && tsx tests/unit/run-resume-option.test.ts && tsx tests/unit/native-config-delivery.test.ts && tsx tests/unit/browser-config.test.ts && tsx tests/unit/integrations-config.test.ts && tsx tests/unit/managed-secrets.test.ts && tsx tests/unit/managed-modal.test.ts && tsx tests/unit/plugins-config.test.ts && tsx tests/unit/session-runtime.test.ts && tsx tests/unit/cost-api.test.ts && tsx tests/unit/storage-config.test.ts && tsx tests/unit/checkpoint-tar.test.ts && tsx tests/unit/checkpoint-tar-listing.test.ts && tsx tests/unit/checkpoint-errors.test.ts && tsx tests/unit/checkpoint-flows.test.ts && tsx tests/unit/checkpoint-dx.test.ts && tsx tests/unit/checkpoint-edge-cases.test.ts && tsx tests/unit/codex-parser-errors.test.ts && tsx tests/unit/parser-harness-errors.test.ts && tsx tests/unit/codex-toml.test.ts && tsx tests/unit/kimi-parser.test.ts && tsx tests/unit/kimi-mcp.test.ts && tsx tests/unit/opencode-parser.test.ts && tsx tests/unit/droid-parser.test.ts && tsx tests/unit/droid-mcp.test.ts && tsx tests/unit/parser-tool-name.test.ts && tsx tests/unit/parser-atif-fields.test.ts && tsx tests/unit/provider-parity.test.ts && tsx tests/unit/storage-client.test.ts && tsx tests/unit/sessions-client.test.ts && tsx tests/unit/hosted-client.test.ts && tsx tests/unit/hosted-trial-tree.test.ts && tsx tests/unit/hosted-ergonomics.test.ts && tsx tests/unit/cli.test.ts && tsx tests/unit/cli-bin.test.ts && tsx tests/unit/cli-skills.test.ts && tsx tests/unit/cli-help.test.ts && tsx tests/unit/hosted-types.test.ts && tsx tests/unit/hosted-error-codes.test.ts && tsx tests/unit/hosted-spec-gate.test.ts && tsx tests/unit/harness-capabilities.test.ts && tsx tests/unit/sandbox-artifacts.test.ts && tsx tests/unit/upload-file-from-path.test.ts && tsx tests/unit/file-utils.test.ts && tsx --expose-gc tests/unit/hosted-tar.test.ts && tsx tests/unit/hosted-upload-stream.test.ts && tsx tests/unit/hosted-upload-memory.test.ts && tsx tests/unit/hosted-resumable.test.ts && tsx tests/unit/cli-ndjson-pipe.test.ts",
58
+ "test:unit:upload-from-path": "tsx tests/unit/upload-file-from-path.test.ts",
59
+ "test:unit:upload-stream": "tsx tests/unit/hosted-upload-stream.test.ts",
60
+ "test:unit:upload-memory": "tsx tests/unit/hosted-upload-memory.test.ts",
61
+ "test:unit:parity": "tsx tests/unit/provider-parity.test.ts",
62
+ "test:unit:semaphore": "tsx tests/unit/semaphore.test.ts",
63
+ "test:unit:swarm": "tsx tests/unit/swarm-concurrency.test.ts",
64
+ "test:unit:verify": "tsx tests/unit/swarm-verify.test.ts",
65
+ "test:unit:retry": "tsx tests/unit/swarm-retry-verify.test.ts",
66
+ "test:unit:prompts": "tsx tests/unit/prompt-construction.test.ts",
67
+ "test:unit:observability": "tsx tests/unit/observability-metadata.test.ts",
68
+ "test:unit:observability-identity": "tsx tests/unit/observability-identity.test.ts",
69
+ "test:unit:skills": "tsx tests/unit/skills-integration.test.ts",
70
+ "test:unit:skills-resolver": "tsx tests/unit/skills-resolver.test.ts",
71
+ "test:unit:auth": "tsx tests/unit/auth-config.test.ts",
72
+ "test:unit:config-validation": "tsx tests/unit/config-validation.test.ts",
73
+ "test:unit:agent-presets": "tsx tests/unit/agent-presets.test.ts",
74
+ "test:unit:native-config-delivery": "tsx tests/unit/native-config-delivery.test.ts",
75
+ "test:unit:browser": "tsx tests/unit/browser-config.test.ts",
76
+ "test:unit:integrations": "tsx tests/unit/integrations-config.test.ts",
77
+ "test:unit:managed-secrets": "tsx tests/unit/managed-secrets.test.ts",
78
+ "test:unit:plugins": "tsx tests/unit/plugins-config.test.ts",
79
+ "test:unit:storage-config": "tsx tests/unit/storage-config.test.ts",
80
+ "test:unit:error-codes": "tsx tests/unit/hosted-error-codes.test.ts",
81
+ "test:unit:capabilities": "tsx tests/unit/harness-capabilities.test.ts",
82
+ "test:unit:checkpoint-tar": "tsx tests/unit/checkpoint-tar.test.ts",
83
+ "test:unit:checkpoint-tar-listing": "tsx tests/unit/checkpoint-tar-listing.test.ts",
84
+ "test:unit:checkpoint-errors": "tsx tests/unit/checkpoint-errors.test.ts",
85
+ "test:unit:checkpoint-flows": "tsx tests/unit/checkpoint-flows.test.ts",
86
+ "test:unit:checkpoint-dx": "tsx tests/unit/checkpoint-dx.test.ts",
87
+ "test:unit:checkpoint-edge-cases": "tsx tests/unit/checkpoint-edge-cases.test.ts",
88
+ "test:unit:storage-client": "tsx tests/unit/storage-client.test.ts",
89
+ "test:unit:sessions-client": "tsx tests/unit/sessions-client.test.ts",
90
+ "test:unit:hosted-client": "tsx tests/unit/hosted-client.test.ts",
91
+ "test:unit:tool-name": "tsx tests/unit/parser-tool-name.test.ts",
92
+ "test:unit:kimi-parser": "tsx tests/unit/kimi-parser.test.ts",
93
+ "test:unit:kimi-mcp": "tsx tests/unit/kimi-mcp.test.ts",
94
+ "test:unit:codex-toml": "tsx tests/unit/codex-toml.test.ts",
95
+ "pretest:integration": "npm run build",
96
+ "test:integration": "npm run test:01",
97
+ "test:integration:all": "npm run test:01 && npm run test:02 && npm run test:03 && npm run test:04 && npm run test:05 && npm run test:06 && npm run test:07 && npm run test:08 && npm run test:09 && npm run test:10 && npm run test:11 && npm run test:12 && npm run test:13 && npm run test:14 && npm run test:15 && npm run test:24",
98
+ "test:01": "tsx tests/integration/01-all-agents-parallel.ts",
99
+ "test:02": "tsx tests/integration/02-execute-command-streaming.ts",
100
+ "test:03": "tsx tests/integration/03-file-operations.ts",
101
+ "test:04": "tsx tests/integration/04-session-lifecycle.ts",
102
+ "test:05": "tsx tests/integration/05-workspace-config.ts",
103
+ "test:06": "tsx tests/integration/06-observability.ts",
104
+ "test:07": "tsx tests/integration/07-background-timeouts.ts",
105
+ "test:08": "tsx tests/integration/08-network.ts",
106
+ "test:09": "tsx tests/integration/09-advanced-features.ts",
107
+ "test:10": "tsx tests/integration/10-swarm-abstractions.ts",
108
+ "test:11": "tsx tests/integration/11-schema-validation.ts",
109
+ "test:12": "tsx tests/integration/12-swarm-verify.ts",
110
+ "test:13": "tsx tests/integration/13-pipeline-abstractions.ts",
111
+ "test:14": "tsx tests/integration/14-byok-direct-mode.ts",
112
+ "test:15": "tsx tests/integration/15-oauth-mode.ts",
113
+ "test:20": "tsx tests/integration/20-storage-checkpoints.ts",
114
+ "test:21": "tsx tests/integration/21-storage-restore-fidelity.ts",
115
+ "test:22": "tsx tests/integration/22-storage-dx.ts",
116
+ "test:23": "tsx tests/integration/23-storage-edge-cases.ts",
117
+ "test:24": "tsx tests/integration/24-kimi-gateway-hello.ts",
118
+ "test:26": "tsx tests/integration/26-storage-full-surface.ts",
119
+ "test:claude": "tsx tests/integration/01-all-agents-parallel.ts claude",
120
+ "test:codex": "tsx tests/integration/01-all-agents-parallel.ts codex",
121
+ "test:gemini": "tsx tests/integration/01-all-agents-parallel.ts gemini",
122
+ "test:qwen": "tsx tests/integration/01-all-agents-parallel.ts qwen",
123
+ "test:unit:cli": "tsx tests/unit/cli.test.ts",
124
+ "test:unit:cli-bin": "tsx tests/unit/cli-bin.test.ts",
125
+ "test:unit:cli-skills": "tsx tests/unit/cli-skills.test.ts",
126
+ "test:unit:cli-help": "tsx tests/unit/cli-help.test.ts",
127
+ "test:unit:cli-ndjson-pipe": "tsx tests/unit/cli-ndjson-pipe.test.ts",
128
+ "test:unit:sandbox-artifacts": "tsx tests/unit/sandbox-artifacts.test.ts",
129
+ "test:unit:hosted-tar": "tsx --expose-gc tests/unit/hosted-tar.test.ts",
130
+ "prepack": "node scripts/copy-spec.mjs && node scripts/copy-skills.mjs"
131
+ },
132
+ "dependencies": {
133
+ "@agentclientprotocol/sdk": "^0.5.1",
134
+ "@evolvingmachines/daytona": "0.0.55-project-sable.20260916.db0bc0bb",
135
+ "@evolvingmachines/e2b": "0.0.55-project-sable.20260916.db0bc0bb",
136
+ "@evolvingmachines/modal": "0.0.55-project-sable.20260916.db0bc0bb",
137
+ "ajv": "^8.17.1",
138
+ "p-map": "^7.0.2",
139
+ "smol-toml": "^1.7.0",
140
+ "tar-stream": "^3.1.7",
141
+ "yaml": "^2.9.0",
142
+ "zod": "^3.24.0",
143
+ "zod-to-json-schema": "^3.25.0"
144
+ },
145
+ "peerDependencies": {
146
+ "@aws-sdk/client-s3": "^3.0.0",
147
+ "@aws-sdk/s3-request-presigner": "^3.0.0"
148
+ },
149
+ "peerDependenciesMeta": {
150
+ "@aws-sdk/client-s3": {
151
+ "optional": true
152
+ },
153
+ "@aws-sdk/s3-request-presigner": {
154
+ "optional": true
155
+ }
156
+ },
157
+ "devDependencies": {
158
+ "@types/node": "^22.15.18",
159
+ "@types/tar-stream": "^3.1.4",
160
+ "tsup": "^8.4.0",
161
+ "typescript": "^5.8.3"
162
+ }
163
+ }
@@ -0,0 +1,287 @@
1
+ ---
2
+ name: create-adapter
3
+ description: Convert an existing benchmark into a folder of Harbor-format tasks ready for `evolve dataset publish`. Use when the user wants to port, adapt, or import a benchmark (a paper's task set, a repository of problems, a leaderboard's dataset) onto Evolve. Guides the conversion and its verification with evolve check.
4
+ metadata:
5
+ internal: true
6
+ ---
7
+
8
+ # Create Adapter
9
+
10
+ An adapter is a small program that reads an existing benchmark and writes one task
11
+ directory per task, in the Harbor task format. Its output is a folder of tasks, ready for
12
+ `evolve dataset publish`. This skill guides the conversion; `evolve skills get create-task`
13
+ has the task format in full, and `evolve skills get publish` every publish option.
14
+
15
+ ## Authoritative reference
16
+
17
+ The conversion rules below are Harbor's, from its adapter guide, and Evolve runs the
18
+ task format unchanged. For the full guide, read
19
+ https://github.com/laude-institute/harbor/blob/main/docs/content/docs/datasets/adapters.mdx
20
+ (its steps on parity experiments, the registry and pull requests are Harbor's own
21
+ process and do not apply here). The task format itself is at
22
+ https://docs.harborframework.com/core-concepts/tasks/overview.
23
+
24
+ Do not invent structure, field names, or workflow beyond what the guide specifies.
25
+
26
+ ## Prerequisites
27
+
28
+ - The `evolve` CLI: `npm install -g @evolvingmachines/evolve` (`evolve --version` succeeds).
29
+ - `EVOLVE_API_KEY` exported, from the dashboard's API keys page
30
+ (https://dashboard.evolvingmachines.ai/api-keys); `evolve auth status` prints who you are.
31
+ - Docker, to build and enter a task's environment locally (optional).
32
+ - The upstream benchmark's repository, cloned.
33
+
34
+ ## Workflow
35
+
36
+ ### 1. Understand the original benchmark
37
+
38
+ Identify these four components for every task in the benchmark:
39
+
40
+ | Component | What to find |
41
+ |-----------|-------------|
42
+ | **Instructions** | How tasks are described; what information agents receive |
43
+ | **Environments** | Docker setup, system dependencies, file structures |
44
+ | **Tests** | Evaluation method: deterministic unit tests, LLM-as-a-Judge, etc. |
45
+ | **Solutions** | Oracle/reference solutions; if none exist, whether LLM generation is feasible |
46
+
47
+ Study the benchmark's repository, documentation, and code structure.
48
+
49
+ **Step complete when:** you can describe, for each task, the instruction text,
50
+ environment setup, test/verification method, and reference solution.
51
+
52
+ ### 2. Gather benchmark context from the user
53
+
54
+ Collect the following before writing code. If the user has not provided an item, ask
55
+ before proceeding.
56
+
57
+ | Field | Why it matters |
58
+ |-------|---------------|
59
+ | Adapter name | Lowercase, hyphen-separated. Must match the benchmark's common identifier (e.g., `swe-bench`, `aider-polyglot`). Becomes the dataset name on Evolve and, with dashes turned to underscores, the Python package name. |
60
+ | Human-readable name | Appears in the README. |
61
+ | Upstream repo URL | Needed for step 1 (benchmark analysis) and for the README. |
62
+ | Reference solutions available? | If the benchmark ships reference solutions, use them. If not, they must be written, with LLM help, before the tasks can be checked. |
63
+ | Subset | Adapting a subset of tasks is acceptable (e.g., only a verified split). Document every exclusion in the README. |
64
+
65
+ ### 3. Write the converter
66
+
67
+ The `evolve` CLI has no adapter scaffold; create this layout by hand:
68
+
69
+ ```
70
+ <adapter-name>/
71
+ ├── README.md # final documentation (step 6)
72
+ ├── pyproject.toml # Python package config
73
+ └── src/
74
+ └── <adapter_name>/ # adapter-name with dashes → underscores
75
+ ├── __init__.py
76
+ ├── adapter.py # main logic: parse benchmark, generate task dirs
77
+ ├── main.py # CLI entry point
78
+ └── task-template/ # template files copied into each task
79
+ ├── task.toml
80
+ ├── instruction.md
81
+ ├── environment/
82
+ │ └── Dockerfile
83
+ ├── solution/
84
+ │ └── solve.sh
85
+ └── tests/
86
+ └── test.sh
87
+ ```
88
+
89
+ `main.py` must support `--output-dir` (where generated tasks are written), `--limit`,
90
+ `--overwrite`, and `--task-ids`. Run it as
91
+ `uv run python -m <adapter_name>.main --output-dir <path>`.
92
+
93
+ Each generated task directory must contain at minimum `task.toml`, `instruction.md`,
94
+ `environment/Dockerfile`, `solution/solve.sh`, and `tests/test.sh`:
95
+
96
+ ```
97
+ <output-dir>/
98
+ └── <task-id>/
99
+ ├── task.toml # task configuration and metadata
100
+ ├── instruction.md # task instructions for the agent
101
+ ├── environment/
102
+ │ └── Dockerfile # container environment definition
103
+ ├── solution/
104
+ │ └── solve.sh # reference solution script
105
+ └── tests/
106
+ ├── test.sh # test execution script
107
+ └── test_*.py # (optional) pytest test files
108
+ ```
109
+
110
+ **`task.toml`:** every task must include it. Adjust timeouts to match your benchmark's
111
+ complexity.
112
+
113
+ ```toml
114
+ schema_version = "1.4"
115
+
116
+ [task]
117
+ name = "<adapter-name>/<task-id>"
118
+ version = "1.0.0"
119
+
120
+ [metadata]
121
+ author_name = "Original benchmark authors' names"
122
+ author_email = "benchmark-authors@email.com"
123
+ difficulty = "medium"
124
+ category = "programming"
125
+ tags = ["debugging", "python"]
126
+
127
+ [agent]
128
+ timeout_sec = 1800.0
129
+
130
+ [verifier]
131
+ timeout_sec = 120.0
132
+
133
+ [environment]
134
+ build_timeout_sec = 600.0
135
+ cpus = 1
136
+ memory_mb = 2048
137
+ storage_mb = 10240
138
+ ```
139
+
140
+ For LLM-as-a-Judge verifiers, request the judge credential in `[verifier.env]`; on Evolve
141
+ you never put a real key in the task, the credential is supplied at run time
142
+ (`evolve skills get rewardkit` has the details):
143
+
144
+ ```toml
145
+ [verifier.env]
146
+ OPENAI_API_KEY = "${OPENAI_API_KEY}"
147
+ ```
148
+
149
+ **`tests/test.sh`:** must write a numeric reward (integer or float, 0 to 1) to
150
+ `/logs/verifier/reward.txt`, or named numbers to `/logs/verifier/reward.json`.
151
+ `/logs/verifier/` exists at run time. Use the same metrics as the original benchmark.
152
+
153
+ ```bash
154
+ #!/bin/bash
155
+ pytest /tests/test_*.py
156
+ if [ $? -eq 0 ]; then
157
+ echo 1 > /logs/verifier/reward.txt
158
+ else
159
+ echo 0 > /logs/verifier/reward.txt
160
+ fi
161
+ ```
162
+
163
+ **`instruction.md`:** write agent-actionable instructions, not raw benchmark
164
+ descriptions. Include the goal, constraints, expected output location, and any files the
165
+ agent should modify. Do not include test answers or reference solutions. Prompt
166
+ modifications (e.g., "write files in place without asking") are acceptable if you apply
167
+ them to both the original benchmark and the adapter, and document them.
168
+
169
+ **`environment/Dockerfile`:** set up the container the agent will work in. Install system
170
+ and Python dependencies, copy any benchmark-specific data files, and set the working
171
+ directory. The agent and the verifier both run inside this container unless the task
172
+ declares a separate verifier environment.
173
+
174
+ ```dockerfile
175
+ FROM python:3.13-slim
176
+ WORKDIR /workspace
177
+
178
+ RUN apt-get update && apt-get install -y \
179
+ git \
180
+ && rm -rf /var/lib/apt/lists/*
181
+
182
+ # Install benchmark-specific dependencies
183
+ # RUN pip install --no-cache-dir <packages>
184
+
185
+ # Copy task-specific files
186
+ # COPY . /workspace/
187
+ ```
188
+
189
+ **GPU tasks:** set `gpus` (and optionally `gpu_types`) under `[environment]` in
190
+ `task.toml`. After publishing, `evolve dataset show` prints which sandbox providers can
191
+ run each task.
192
+
193
+ **Step complete when:** `main.py` produces a valid task directory for each task.
194
+
195
+ ### 4. Keep task names right
196
+
197
+ - **Every task directory name is the task's name on Evolve.** Letters, digits, `.`, `_`
198
+ and `-`, at most 128 characters, starting with a letter or digit; use lowercase (Harbor's
199
+ convention). Put the same identifier in `[task] name` as `<adapter-name>/<task-id>`. A
200
+ `[metadata] task_id`, when present, must equal the directory name.
201
+ - **Task names must be unique within the dataset and stable across adapter runs.** An
202
+ unstable name makes the same task look like a different one on republish. If upstream
203
+ lacks stable identifiers, mint a deterministic scheme in adapter code (e.g.,
204
+ `{dataset}-1`, `{dataset}-2`, ...) derived from a reproducible sort of upstream tasks.
205
+ - **Sanitize upstream identifiers** before using them as names: lowercase, replace
206
+ spaces/slashes/special characters with hyphens, avoid leading/trailing separators.
207
+ - **Treat `main.py` as the source of truth for task names.** Do not hand-edit generated
208
+ task directories; fix the converter and regenerate.
209
+ - Use `schema_version = "1.4"` at the top of `task.toml`; `[task].version` is the task's
210
+ own version and is distinct from it.
211
+
212
+ ### 5. Verify the conversion
213
+
214
+ Check the generated tasks. The check reads each task and, when it can, runs its
215
+ environment, its `solution/solve.sh` and its verifier, then rules on every criterion of a
216
+ rubric; every task should come back `no_problem_found` with `executed` true.
217
+
218
+ ```bash
219
+ evolve check "<output-dir>" --watch
220
+ evolve check show <check-id>
221
+ ```
222
+
223
+ A failing check usually means one of three things, in this order:
224
+
225
+ 1. **Adaptation error:** the instruction, environment or test does not match upstream.
226
+ 2. **A broken reference solution:** run the solution on the original benchmark side too, to
227
+ tell a wrong solution from a wrong adaptation. If the fix is simple, propose it
228
+ upstream and document it in the README; exclude tasks that cannot be reliably fixed.
229
+ 3. **Environment error:** a Dockerfile that does not build or a test that cannot run makes
230
+ the task impossible for every agent, so catch it here.
231
+
232
+ Where Harbor is installed, `harbor run -p "<output-dir>" -a oracle` runs every reference
233
+ solution locally (optional); the reward should be `1.0` on every task.
234
+
235
+ **Benchmarks without reference solutions:** write them, with LLM help, before publishing.
236
+ A cheap agent and model can take a first pass over all the tasks; complete the rest with
237
+ a stronger model plus human review.
238
+
239
+ **Step complete when:** every task passes `evolve check`.
240
+
241
+ ### 6. Document and publish
242
+
243
+ Write the README with: what the benchmark measures and a link to it; the subset adapted
244
+ and every exclusion; benchmark bugs found and how they were handled; prompt
245
+ modifications, environment adjustments and other deviations from the original, with the
246
+ reason; known limitations; the exact commands to regenerate the tasks and to run them.
247
+
248
+ Then publish the output folder as a dataset (`evolve skills get publish` has every option):
249
+
250
+ ```bash
251
+ evolve dataset check "<output-dir>"
252
+ evolve dataset publish --dir "<output-dir>" --name "<adapter-name>" --version 1.0 --watch
253
+ evolve run -d "<adapter-name>@1.0" -a codex -m gpt-5.5 --watch
254
+ ```
255
+
256
+ To see how faithful the conversion is, run a job with the same agent and model the
257
+ benchmark's own leaderboard reports, and compare the scores.
258
+
259
+ ## Reference adapters by shape
260
+
261
+ Harbor's repository holds one adapter per benchmark, public at
262
+ https://github.com/laude-institute/harbor/tree/main/adapters. When implementation
263
+ questions come up, read the one that matches the benchmark's shape:
264
+
265
+ | Shape | Example adapter |
266
+ |-------|----------------|
267
+ | Repository-level coding tasks with unit-test verifiers | `adapters/swebench/` |
268
+ | Many small tasks from one dataset file | `adapters/evoeval/` |
269
+ | Data-analysis tasks with a custom dataset | `adapters/bixbench/` |
270
+ | LLM-as-a-Judge verification | `adapters/financeagent/` |
271
+ | GPU tasks | `adapters/featurebench/` |
272
+
273
+ ## What this skill does NOT do
274
+
275
+ - Implement `adapter.py`, `main.py`, or the task-template files. Those are the
276
+ contributor's work, guided by the rules above.
277
+ - Run `evolve check` or publish on its own. Both act on the user's account and need the
278
+ user's explicit intent; a check spends credits (it runs a checker model).
279
+
280
+ ## Failure modes
281
+
282
+ | Symptom | Likely cause | Action |
283
+ |---------|--------------|--------|
284
+ | `evolve: command not found` | The CLI is not installed | `npm install -g @evolvingmachines/evolve`. |
285
+ | `evolve dataset check` refuses a task by name | Its `task.toml` breaks a rule (a field, a value, a name) | Fix the converter, regenerate, check again. The refusal names the field. |
286
+ | A task check comes back `has_a_problem` | One criterion failed | `evolve check show <check-id>` prints the criterion, its explanation and its evidence. |
287
+ | Every task fails the check the same way | An error in the task template | Fix `task-template/` in the converter, not the generated tasks. |