@tonyclaw/eval-harness 0.2.18
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.
- package/README.md +1046 -0
- package/README.zh-CN.md +597 -0
- package/bin/eval-harness.js +65 -0
- package/config/eval.example.json +70 -0
- package/docs/agent-runner-compatibility.md +47 -0
- package/docs/runners.md +82 -0
- package/package.json +43 -0
- package/prompts/judge.md +27 -0
- package/pyproject.toml +48 -0
- package/schemas/batch-comparison.schema.json +64 -0
- package/schemas/batch-summary.schema.json +85 -0
- package/schemas/evaluation.schema.json +81 -0
- package/schemas/experiment.schema.json +63 -0
- package/schemas/history-index.schema.json +37 -0
- package/schemas/history-record.schema.json +56 -0
- package/schemas/model-report.schema.json +38 -0
- package/schemas/next-action.schema.json +62 -0
- package/schemas/skill-improvement-input.schema.json +65 -0
- package/src/eval/__init__.py +3 -0
- package/src/eval/__main__.py +5 -0
- package/src/eval/cli.py +11150 -0
- package/src/eval/runners/__init__.py +0 -0
- package/src/eval/runners/base.py +197 -0
- package/src/eval/runners/claude.py +516 -0
- package/src/eval/runners/codex.py +412 -0
- package/src/eval/runners/mimocode.py +676 -0
- package/src/eval/runners/opencode.py +554 -0
- package/src/eval/schema.py +151 -0
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
{
|
|
2
|
+
"agent": {
|
|
3
|
+
"type": "opencode",
|
|
4
|
+
"variant": "high"
|
|
5
|
+
},
|
|
6
|
+
"source_repo": {
|
|
7
|
+
"url": "https://example.com/your-org/task-repository.git",
|
|
8
|
+
"ssh_url": "",
|
|
9
|
+
"ref": "main",
|
|
10
|
+
"fallback_urls": []
|
|
11
|
+
},
|
|
12
|
+
"submission_repo": {
|
|
13
|
+
"url": "https://example.com/your-org/submitted-work.git",
|
|
14
|
+
"ssh_url": "",
|
|
15
|
+
"ref": "main",
|
|
16
|
+
"work_dir": "work",
|
|
17
|
+
"fallback_urls": []
|
|
18
|
+
},
|
|
19
|
+
"run": {
|
|
20
|
+
"runs_dir": "runs",
|
|
21
|
+
"project_dir_name": "project",
|
|
22
|
+
"clean_runtime_artifacts": true
|
|
23
|
+
},
|
|
24
|
+
"execution": {
|
|
25
|
+
"timeout_minutes": 90,
|
|
26
|
+
"idle_timeout_minutes": 10,
|
|
27
|
+
"subagent_idle_grace_windows": 1,
|
|
28
|
+
"session_activity_check_seconds": 15,
|
|
29
|
+
"artifact_activity_check_seconds": 5,
|
|
30
|
+
"provider_api_failure_grace": 5,
|
|
31
|
+
"isolate_runtime_env": true,
|
|
32
|
+
"isolate_maven_repo": true,
|
|
33
|
+
"seed_runtime_profile": true,
|
|
34
|
+
"stream_output": true,
|
|
35
|
+
"console_log_mode": "important",
|
|
36
|
+
"heartbeat_seconds": 60,
|
|
37
|
+
"final_result_recovery_helpers": [],
|
|
38
|
+
"agent_inspector": {
|
|
39
|
+
"enabled": false,
|
|
40
|
+
"port": 25947,
|
|
41
|
+
"base_url": "http://127.0.0.1:25947",
|
|
42
|
+
"proxy_url": "http://127.0.0.1:25947/proxy",
|
|
43
|
+
"health_url": "http://127.0.0.1:25947/api/health",
|
|
44
|
+
"providers_url": "http://127.0.0.1:25947/api/providers",
|
|
45
|
+
"mcp_url": "http://127.0.0.1:25947/api/mcp",
|
|
46
|
+
"mcp_enabled": false,
|
|
47
|
+
"mcp_required_tools": [],
|
|
48
|
+
"required_model": "",
|
|
49
|
+
"start_command": ["agent-inspector", "--background", "--no-open", "--port", "25947"],
|
|
50
|
+
"restart_command": ["agent-inspector", "--background", "--no-open", "--port", "25947", "--force-restart"],
|
|
51
|
+
"doctor_command": ["agent-inspector", "doctor", "--port", "25947"],
|
|
52
|
+
"startup_timeout_seconds": 15
|
|
53
|
+
}
|
|
54
|
+
},
|
|
55
|
+
"container": {
|
|
56
|
+
"enabled": false,
|
|
57
|
+
"engine": "docker",
|
|
58
|
+
"image": "eval-harness-worker:latest",
|
|
59
|
+
"workspace_mount": "/workspace",
|
|
60
|
+
"extra_args": []
|
|
61
|
+
},
|
|
62
|
+
"scoring": {
|
|
63
|
+
"thresholds": {
|
|
64
|
+
"accept_score": 85,
|
|
65
|
+
"investigate_score": 60
|
|
66
|
+
},
|
|
67
|
+
"protected_paths": [],
|
|
68
|
+
"validation_commands": []
|
|
69
|
+
}
|
|
70
|
+
}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
# Agent Runner Compatibility
|
|
2
|
+
|
|
3
|
+
This page records the current validated runner adapter baseline for the
|
|
4
|
+
eval harness. Treat these versions as known-good compatibility evidence, not as
|
|
5
|
+
a strict lower or upper bound.
|
|
6
|
+
|
|
7
|
+
Validated on: `2026-07-06`
|
|
8
|
+
|
|
9
|
+
| Runner | `agent.type` | Validated CLI version | Version command | Version output |
|
|
10
|
+
| --- | --- | --- | --- | --- |
|
|
11
|
+
| OpenCode | `opencode` | `1.17.11` | `opencode --version` | `1.17.11` |
|
|
12
|
+
| MiMo Code | `mimocode`, `mimo` | `0.1.4` | `mimo --version` | `0.1.4` |
|
|
13
|
+
| Codex CLI | `codex`, `codex-cli` | `0.142.5` | `codex --version` | `codex-cli 0.142.5` |
|
|
14
|
+
| Claude Code | `claude`, `claude-code` | `2.1.195` | `claude --version` | `2.1.195 (Claude Code)` |
|
|
15
|
+
|
|
16
|
+
The same baseline is exposed in machine-readable form:
|
|
17
|
+
|
|
18
|
+
```powershell
|
|
19
|
+
python -m eval runner-presets --format json
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
Check the installed runner on the current machine against that baseline:
|
|
23
|
+
|
|
24
|
+
```powershell
|
|
25
|
+
python -m eval runner-version-check --config config/eval.local.json --markdown-output runs/preflight/runner-version-check.md
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
Jenkins runs the same check during environment preparation and archives
|
|
29
|
+
`runs/preflight/runner-version-check.json` plus `.md`. Set
|
|
30
|
+
`REQUIRE_RUNNER_COMPATIBILITY=true` when the job should fail fast on a version
|
|
31
|
+
drift instead of only recording a warning.
|
|
32
|
+
|
|
33
|
+
## Compatibility Notes
|
|
34
|
+
|
|
35
|
+
- OpenCode `1.17.11`: agent frontmatter `tools` must be a record in this baseline. The harness normalizes inline `tools: [...]` arrays when installing `.opencode/agents` assets.
|
|
36
|
+
- MiMo Code `0.1.4`: uses `--agent` for runner variant selection and shares the agent `tools` record normalization path for `.mimocode/agents` assets.
|
|
37
|
+
- Codex CLI `0.142.5`: ignores `REASONING_VARIANT`; Agent Inspector routes are passed as `--model` after route-name normalization. On Windows service deployments, the harness honors configured executable paths and `OEVAL_CODEX_EXECUTABLE`, then auto-discovers the current user's `%LOCALAPPDATA%\OpenAI\Codex\bin\*\codex.exe` before falling back to `PATH`.
|
|
38
|
+
- Claude Code `2.1.195`: ignores the generic `REASONING_VARIANT`. Claude Code's own `--agent` flag selects a named Claude agent, not a reasoning level, so configure it only in a Claude-specific command when needed. Agent Inspector routing uses `ANTHROPIC_BASE_URL` and `ANTHROPIC_API_KEY`; the harness also pins `ANTHROPIC_MODEL` and `CLAUDE_CODE_SUBAGENT_MODEL` to the resolved worker model so Claude subagents stay on the same Inspector route.
|
|
39
|
+
|
|
40
|
+
## Upgrade Check
|
|
41
|
+
|
|
42
|
+
When upgrading any runner:
|
|
43
|
+
|
|
44
|
+
- Run `python -m eval runner-presets --format json` and compare the expected model flag, variant flag, asset directories, and validated baseline.
|
|
45
|
+
- Run `python -m eval runner-version-check --config <config>` and inspect `status`, `actual_version`, and `validated_version`.
|
|
46
|
+
- Run a short Jenkins smoke or single-worker real dispatch with `DRY_RUN=false`.
|
|
47
|
+
- Check `<agent-log-dir>/opencode.log`, `sessions.json`, Inspector evidence, and `evaluation.json` for changed CLI behavior before updating this compatibility baseline.
|
package/docs/runners.md
ADDED
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
# Runner Adapters
|
|
2
|
+
|
|
3
|
+
The eval harness is runner-based. OpenCode, MiMo Code, Codex CLI, and Claude Code are supported runner adapters, but none of them is the platform itself.
|
|
4
|
+
|
|
5
|
+
## Runner Model
|
|
6
|
+
|
|
7
|
+
The harness owns the evaluation lifecycle:
|
|
8
|
+
|
|
9
|
+
- materialize task and work inputs
|
|
10
|
+
- prepare isolated worker directories
|
|
11
|
+
- install work-provided Skills and Agents into the selected runner layout
|
|
12
|
+
- execute the selected runner CLI
|
|
13
|
+
- collect logs, artifacts, Inspector evidence, scores, and reports
|
|
14
|
+
|
|
15
|
+
Each runner owns its own CLI details. The current validated CLI versions are
|
|
16
|
+
tracked in [Agent Runner Compatibility](agent-runner-compatibility.md).
|
|
17
|
+
|
|
18
|
+
| Runner | `agent.type` | Default binary | Model flag | Variant flag | Default tool check | Default asset targets |
|
|
19
|
+
| --- | --- | --- | --- | --- | --- | --- |
|
|
20
|
+
| OpenCode | `opencode` | `opencode` | `--model` | `--variant` | `opencode,node` | `.opencode/skills`, `.opencode/agents` |
|
|
21
|
+
| MiMo Code | `mimocode`, `mimo` | `mimo` | `--model` | `--agent` | `mimo,node` | `.mimocode/skills`, `.mimocode/agents` |
|
|
22
|
+
| Codex CLI | `codex`, `codex-cli` | discovered Codex CLI or configured executable | `--model` | none | discovered/configured executable | `.codex/skills`, `.codex/agents` |
|
|
23
|
+
| Claude Code | `claude`, `claude-code` | `claude` or configured executable | `--model` | none | configured executable | `.claude/skills`, `.claude/agents` |
|
|
24
|
+
|
|
25
|
+
The same data can be printed from the CLI:
|
|
26
|
+
|
|
27
|
+
```powershell
|
|
28
|
+
python -m eval runner-presets
|
|
29
|
+
python -m eval runner-presets --format json
|
|
30
|
+
python -m eval runner-version-check --config config/eval.local.json
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
## Jenkins Parameters
|
|
34
|
+
|
|
35
|
+
Jenkins resolves the selected runner from `agent.type` after writing the effective config. Runner-specific behavior is then derived automatically:
|
|
36
|
+
|
|
37
|
+
- `WORKER_TOOLS` can be empty; Jenkins uses the runner default tool list.
|
|
38
|
+
- `REASONING_VARIANT` is applied only when the runner exposes a variant flag.
|
|
39
|
+
- `RUNNER_MATRIX` is a generic per-worker runner adapter list.
|
|
40
|
+
- `MODEL_MATRIX` is a generic per-worker model route list.
|
|
41
|
+
- `AGENT_ASSET_INSTALLS` is a generic extra asset mapping list.
|
|
42
|
+
|
|
43
|
+
This prevents runner-specific flags such as OpenCode `--variant` from leaking into Codex CLI and Claude Code runs, while allowing MiMo Code to use `--agent`.
|
|
44
|
+
|
|
45
|
+
When `RUNNER_MATRIX` is set, Jenkins writes a runner-specific effective config for each worker before `prepare`. The same fetched task/work inputs are reused, but worker 1 can be Codex, worker 2 can be OpenCode, worker 3 can be MiMo Code, and worker 4 can be Claude Code in the same Jenkins build. `MODEL_MATRIX` still lines up by worker index, so `RUNNER_MATRIX=codex,opencode,mimocode,claude` plus `MODEL_MATRIX=agent-inspector/MiniMax-M3,agent-inspector/deepseek-v4-pro,agent-inspector/glm-5.2,agent-inspector/MiniMax-M3` creates four isolated runner/model branches.
|
|
46
|
+
|
|
47
|
+
Claude Code also has a `--agent` flag, but it selects a named Claude agent rather than a reasoning level. Configure that explicitly in a Claude-specific command when needed instead of using the generic `REASONING_VARIANT` Jenkins parameter.
|
|
48
|
+
|
|
49
|
+
For Windows Jenkins service deployments, Codex CLI first honors `agent.executable`, `codex.executable`, `execution.codex_executable`, or `execution.codex.executable`, then environment overrides such as `OEVAL_CODEX_EXECUTABLE`, and then auto-discovers the current user's desktop install under `%LOCALAPPDATA%\OpenAI\Codex\bin\*\codex.exe` before falling back to `PATH`. Claude Code can also be configured with the real executable path rather than relying on `PATH`. Use `agent.executable`, `<runner>.executable`, or `execution.<runner>_executable` in a local, uncommitted config. For mixed `RUNNER_MATRIX` jobs, prefer runner-specific executable keys such as `codex.executable` and `claude.executable`; a generic `agent.executable` is only safe for a single-runner job and is intentionally not copied when Jenkins creates a different runner's worker config.
|
|
50
|
+
|
|
51
|
+
When Claude Code is routed through Agent Inspector, the runner injects Anthropic-compatible environment variables into the isolated worker environment:
|
|
52
|
+
|
|
53
|
+
- `ANTHROPIC_BASE_URL=<agent-inspector proxy_url>`
|
|
54
|
+
- `ANTHROPIC_API_KEY=<provider apiKey or agent-inspector>`
|
|
55
|
+
- `ANTHROPIC_MODEL=<resolved model>`
|
|
56
|
+
- `CLAUDE_CODE_SUBAGENT_MODEL=<resolved model>`
|
|
57
|
+
|
|
58
|
+
The runner also writes the same model pin into isolated `.claude/settings.json` and Claude alias model environment variables. This prevents Claude Code subagents from falling back to a default Haiku/Sonnet route when the worker is intentionally using an Inspector model such as `glm-5.2`.
|
|
59
|
+
|
|
60
|
+
The common `agent-inspector/<model>` model route is passed to Claude Code and Codex CLI as `--model <model>`, for example `agent-inspector/MiniMax-M3` becomes `--model MiniMax-M3`. Codex CLI also normalizes Agent Inspector display names such as `agent-inspector/MiniMax M3` to `--model MiniMax-M3`. For `codex exec`, the harness inserts `--model` before the final prompt argument even when Jenkins uses an `{agent_executable}` placeholder, so the model flag stays in the CLI option area.
|
|
61
|
+
|
|
62
|
+
For OpenCode and MiMo Code runs, the selected worker model is also written to the worker's isolated runtime config as `model`. MiMo Code additionally pins both the harness-managed `harness-build` agent and the built-in `build` agent to the same route. This keeps subagent/internal sessions aligned with the same Jenkins/Inspector model route without adding `model:` to work-provided agent markdown files or otherwise polluting the reusable work package.
|
|
63
|
+
|
|
64
|
+
When a run requests `agent-inspector/*`, the harness records an `inspector_route` check in `manifest.json` and `evaluation/evaluation.json`. It compares requested Inspector routing against runtime provider/model evidence from runner logs and Inspector `/api/logs` backfill. A log route such as `mimo/mimo-auto` during an `agent-inspector/glm-5.2` run is reported as `inspector route mismatch`, so aggregate reports show the actual route that escaped Inspector.
|
|
65
|
+
|
|
66
|
+
All runners write their transcript to `<agent-log-dir>/opencode.log` for compatibility with existing exports. Session summaries are written to `<agent-log-dir>/sessions.json` and `.md`. When Agent Inspector is enabled, the harness also attempts a best-effort `/api/logs` backfill so Inspector evidence remains linked even when a worker times out before exposing a normal session id. Backfill prefers the worker's known `sessionId` or `clientPid` before falling back to model-based queries, stores the full compact log set in `<agent-log-dir>/inspector-logs.json`, and keeps only a preview table in `sessions.md`.
|
|
67
|
+
|
|
68
|
+
Default runner commands include a shared harness execution contract. Workers receive `AGENT_EVAL_TIMEOUT_MINUTES`, `AGENT_EVAL_IDLE_TIMEOUT_MINUTES`, `AGENT_EVAL_FINALIZE_BEFORE_MINUTES`, and `AGENT_EVAL_REQUIRED_FINAL_ARTIFACTS`, and the prompt asks them to reserve finalization time, write required final artifacts even for blocked or partial runs, avoid UTF-8 BOM output for Windows source edits, and write full helper/finalization output to `work/logs/trace` before previewing saved logs. Keep these requirements when overriding `execution.<runner>_command`.
|
|
69
|
+
|
|
70
|
+
## Adding Another Runner
|
|
71
|
+
|
|
72
|
+
Add a new `AgentRunner` implementation under `src/eval/runners/`, register it in `_RUNNER_REGISTRY`, and define:
|
|
73
|
+
|
|
74
|
+
- `name`, `binary`, and `config_key`
|
|
75
|
+
- `default_command`
|
|
76
|
+
- model and variant injection behavior
|
|
77
|
+
- default asset install targets
|
|
78
|
+
- runtime profile locations
|
|
79
|
+
- log/session parsing
|
|
80
|
+
- `default_worker_tools`
|
|
81
|
+
|
|
82
|
+
Keep runner-specific config under `agent`, or under a runner-specific section such as `codex`, `mimocode`, `claude`, or a future runner key. Legacy OpenCode keys remain compatibility inputs only.
|
package/package.json
ADDED
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@tonyclaw/eval-harness",
|
|
3
|
+
"version": "0.2.18",
|
|
4
|
+
"description": "Evaluation harness for configurable runner work packages",
|
|
5
|
+
"bin": {
|
|
6
|
+
"eval-harness": "bin/eval-harness.js"
|
|
7
|
+
},
|
|
8
|
+
"files": [
|
|
9
|
+
"bin/",
|
|
10
|
+
"src/eval/**/*.py",
|
|
11
|
+
"config/eval.example.json",
|
|
12
|
+
"schemas/",
|
|
13
|
+
"prompts/",
|
|
14
|
+
"docs/runners.md",
|
|
15
|
+
"docs/agent-runner-compatibility.md",
|
|
16
|
+
"README.md",
|
|
17
|
+
"README.zh-CN.md",
|
|
18
|
+
"pyproject.toml"
|
|
19
|
+
],
|
|
20
|
+
"scripts": {
|
|
21
|
+
"test": "python -m pytest",
|
|
22
|
+
"smoke": "node bin/eval-harness.js --help",
|
|
23
|
+
"pack:dry-run": "npm pack --dry-run"
|
|
24
|
+
},
|
|
25
|
+
"repository": {
|
|
26
|
+
"type": "git",
|
|
27
|
+
"url": "git+ssh://git@gitcode.com/TonyClaw/opencode-eval-harness.git"
|
|
28
|
+
},
|
|
29
|
+
"keywords": [
|
|
30
|
+
"eval",
|
|
31
|
+
"harness",
|
|
32
|
+
"agent",
|
|
33
|
+
"codex",
|
|
34
|
+
"opencode",
|
|
35
|
+
"mimocode",
|
|
36
|
+
"claude-code",
|
|
37
|
+
"jenkins"
|
|
38
|
+
],
|
|
39
|
+
"engines": {
|
|
40
|
+
"node": ">=18"
|
|
41
|
+
},
|
|
42
|
+
"license": "UNLICENSED"
|
|
43
|
+
}
|
package/prompts/judge.md
ADDED
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
# Judge Prompt
|
|
2
|
+
|
|
3
|
+
You are evaluating an OpenCode run for a configurable design-implementation consistency task.
|
|
4
|
+
|
|
5
|
+
Use deterministic evidence first. Do not reward chat summaries when required artifacts are missing.
|
|
6
|
+
|
|
7
|
+
Assess:
|
|
8
|
+
|
|
9
|
+
- Whether `work/result/output.md` exists and has a final status.
|
|
10
|
+
- Whether `work/reports/FINAL_RESULT.json` reports `is_final: true`.
|
|
11
|
+
- Whether configured protected paths were changed.
|
|
12
|
+
- Whether validation commands passed, failed, or were not run.
|
|
13
|
+
- Whether the implementation diff appears aligned with the task specification instead of public tests only.
|
|
14
|
+
- Whether logs under `work/logs/trace/` are sufficient to audit the run.
|
|
15
|
+
- Which skill, subagent, or helper rule should be improved next.
|
|
16
|
+
|
|
17
|
+
Return concise JSON plus a short Markdown explanation:
|
|
18
|
+
|
|
19
|
+
```json
|
|
20
|
+
{
|
|
21
|
+
"score": 0,
|
|
22
|
+
"hard_failures": [],
|
|
23
|
+
"strengths": [],
|
|
24
|
+
"risks": [],
|
|
25
|
+
"recommended_skill_changes": []
|
|
26
|
+
}
|
|
27
|
+
```
|
package/pyproject.toml
ADDED
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
[build-system]
|
|
2
|
+
requires = ["setuptools>=68"]
|
|
3
|
+
build-backend = "setuptools.build_meta"
|
|
4
|
+
|
|
5
|
+
[project]
|
|
6
|
+
name = "eval-harness"
|
|
7
|
+
version = "0.2.18"
|
|
8
|
+
description = "Evaluation harness for configurable runner work packages"
|
|
9
|
+
requires-python = ">=3.10"
|
|
10
|
+
dependencies = []
|
|
11
|
+
classifiers = [
|
|
12
|
+
"Programming Language :: Python :: 3",
|
|
13
|
+
"Programming Language :: Python :: 3.10",
|
|
14
|
+
"Programming Language :: Python :: 3.11",
|
|
15
|
+
"Programming Language :: Python :: 3.12",
|
|
16
|
+
]
|
|
17
|
+
|
|
18
|
+
[project.optional-dependencies]
|
|
19
|
+
dev = [
|
|
20
|
+
"coverage[toml]>=7",
|
|
21
|
+
"pytest>=8",
|
|
22
|
+
"ruff>=0.6",
|
|
23
|
+
]
|
|
24
|
+
|
|
25
|
+
[project.scripts]
|
|
26
|
+
eval-harness = "eval.cli:main"
|
|
27
|
+
|
|
28
|
+
[tool.setuptools.packages.find]
|
|
29
|
+
where = ["src"]
|
|
30
|
+
|
|
31
|
+
[tool.pytest.ini_options]
|
|
32
|
+
pythonpath = ["src"]
|
|
33
|
+
testpaths = ["tests"]
|
|
34
|
+
|
|
35
|
+
[tool.coverage.run]
|
|
36
|
+
branch = true
|
|
37
|
+
source = ["eval"]
|
|
38
|
+
|
|
39
|
+
[tool.coverage.report]
|
|
40
|
+
show_missing = true
|
|
41
|
+
skip_covered = true
|
|
42
|
+
|
|
43
|
+
[tool.ruff]
|
|
44
|
+
line-length = 120
|
|
45
|
+
target-version = "py310"
|
|
46
|
+
|
|
47
|
+
[tool.ruff.lint]
|
|
48
|
+
select = ["E4", "E7", "E9", "F"]
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"title": "Eval Harness Batch Comparison",
|
|
4
|
+
"type": "object",
|
|
5
|
+
"required": [
|
|
6
|
+
"schema",
|
|
7
|
+
"created_at",
|
|
8
|
+
"baseline_batch_id",
|
|
9
|
+
"candidate_batch_id",
|
|
10
|
+
"regression_tolerance",
|
|
11
|
+
"baseline_best_score",
|
|
12
|
+
"candidate_best_score",
|
|
13
|
+
"best_score_delta",
|
|
14
|
+
"regression",
|
|
15
|
+
"regression_reasons"
|
|
16
|
+
],
|
|
17
|
+
"properties": {
|
|
18
|
+
"schema": {
|
|
19
|
+
"const": "eval-harness.batch-comparison.v1"
|
|
20
|
+
},
|
|
21
|
+
"created_at": {
|
|
22
|
+
"type": "string"
|
|
23
|
+
},
|
|
24
|
+
"baseline_batch_id": {
|
|
25
|
+
"type": [
|
|
26
|
+
"string",
|
|
27
|
+
"null"
|
|
28
|
+
]
|
|
29
|
+
},
|
|
30
|
+
"candidate_batch_id": {
|
|
31
|
+
"type": [
|
|
32
|
+
"string",
|
|
33
|
+
"null"
|
|
34
|
+
]
|
|
35
|
+
},
|
|
36
|
+
"regression_tolerance": {
|
|
37
|
+
"type": "integer"
|
|
38
|
+
},
|
|
39
|
+
"baseline_best_score": {
|
|
40
|
+
"type": [
|
|
41
|
+
"integer",
|
|
42
|
+
"null"
|
|
43
|
+
]
|
|
44
|
+
},
|
|
45
|
+
"candidate_best_score": {
|
|
46
|
+
"type": [
|
|
47
|
+
"integer",
|
|
48
|
+
"null"
|
|
49
|
+
]
|
|
50
|
+
},
|
|
51
|
+
"best_score_delta": {
|
|
52
|
+
"type": [
|
|
53
|
+
"integer",
|
|
54
|
+
"null"
|
|
55
|
+
]
|
|
56
|
+
},
|
|
57
|
+
"regression": {
|
|
58
|
+
"type": "boolean"
|
|
59
|
+
},
|
|
60
|
+
"regression_reasons": {
|
|
61
|
+
"type": "array"
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"title": "Eval Harness Batch Summary",
|
|
4
|
+
"type": "object",
|
|
5
|
+
"required": [
|
|
6
|
+
"schema",
|
|
7
|
+
"batch_id",
|
|
8
|
+
"created_at",
|
|
9
|
+
"count",
|
|
10
|
+
"parallel",
|
|
11
|
+
"dry_run",
|
|
12
|
+
"run_ids",
|
|
13
|
+
"results",
|
|
14
|
+
"best_by_model",
|
|
15
|
+
"decision_counts",
|
|
16
|
+
"recommendation_area_counts",
|
|
17
|
+
"model_report",
|
|
18
|
+
"experiment"
|
|
19
|
+
],
|
|
20
|
+
"properties": {
|
|
21
|
+
"schema": {
|
|
22
|
+
"const": "eval-harness.batch.v1"
|
|
23
|
+
},
|
|
24
|
+
"score_dimensions": {
|
|
25
|
+
"type": "array"
|
|
26
|
+
},
|
|
27
|
+
"batch_id": {
|
|
28
|
+
"type": "string"
|
|
29
|
+
},
|
|
30
|
+
"created_at": {
|
|
31
|
+
"type": "string"
|
|
32
|
+
},
|
|
33
|
+
"count": {
|
|
34
|
+
"type": "integer"
|
|
35
|
+
},
|
|
36
|
+
"parallel": {
|
|
37
|
+
"type": "integer"
|
|
38
|
+
},
|
|
39
|
+
"dry_run": {
|
|
40
|
+
"type": "boolean"
|
|
41
|
+
},
|
|
42
|
+
"run_ids": {
|
|
43
|
+
"type": "array"
|
|
44
|
+
},
|
|
45
|
+
"results": {
|
|
46
|
+
"type": "array"
|
|
47
|
+
},
|
|
48
|
+
"best_run_id": {
|
|
49
|
+
"type": [
|
|
50
|
+
"string",
|
|
51
|
+
"null"
|
|
52
|
+
]
|
|
53
|
+
},
|
|
54
|
+
"best_score": {
|
|
55
|
+
"type": [
|
|
56
|
+
"integer",
|
|
57
|
+
"null"
|
|
58
|
+
]
|
|
59
|
+
},
|
|
60
|
+
"best_subscores": {
|
|
61
|
+
"type": "object"
|
|
62
|
+
},
|
|
63
|
+
"best_subscore_summary": {
|
|
64
|
+
"type": "string"
|
|
65
|
+
},
|
|
66
|
+
"best_by_model": {
|
|
67
|
+
"type": "object"
|
|
68
|
+
},
|
|
69
|
+
"decision_counts": {
|
|
70
|
+
"type": "object"
|
|
71
|
+
},
|
|
72
|
+
"recommendation_area_counts": {
|
|
73
|
+
"type": "object"
|
|
74
|
+
},
|
|
75
|
+
"model_report": {
|
|
76
|
+
"type": "object"
|
|
77
|
+
},
|
|
78
|
+
"experiment": {
|
|
79
|
+
"type": "object"
|
|
80
|
+
},
|
|
81
|
+
"comparison": {
|
|
82
|
+
"type": "object"
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"title": "Eval Harness Evaluation",
|
|
4
|
+
"type": "object",
|
|
5
|
+
"required": [
|
|
6
|
+
"schema",
|
|
7
|
+
"run_id",
|
|
8
|
+
"score",
|
|
9
|
+
"subscores",
|
|
10
|
+
"final_status",
|
|
11
|
+
"findings",
|
|
12
|
+
"decision",
|
|
13
|
+
"recommendations",
|
|
14
|
+
"next_action"
|
|
15
|
+
],
|
|
16
|
+
"properties": {
|
|
17
|
+
"schema": {
|
|
18
|
+
"const": "eval-harness.evaluation.v1"
|
|
19
|
+
},
|
|
20
|
+
"run_id": {
|
|
21
|
+
"type": "string"
|
|
22
|
+
},
|
|
23
|
+
"score": {
|
|
24
|
+
"type": "integer"
|
|
25
|
+
},
|
|
26
|
+
"subscores": {
|
|
27
|
+
"type": "object"
|
|
28
|
+
},
|
|
29
|
+
"score_dimensions": {
|
|
30
|
+
"type": "array"
|
|
31
|
+
},
|
|
32
|
+
"semantic_memory": {
|
|
33
|
+
"type": "object"
|
|
34
|
+
},
|
|
35
|
+
"semantic_memory_score": {
|
|
36
|
+
"type": [
|
|
37
|
+
"integer",
|
|
38
|
+
"null"
|
|
39
|
+
]
|
|
40
|
+
},
|
|
41
|
+
"semantic_memory_summary": {
|
|
42
|
+
"type": [
|
|
43
|
+
"string",
|
|
44
|
+
"null"
|
|
45
|
+
]
|
|
46
|
+
},
|
|
47
|
+
"project_diff_mode": {
|
|
48
|
+
"type": "string"
|
|
49
|
+
},
|
|
50
|
+
"project_diff_baseline": {
|
|
51
|
+
"type": [
|
|
52
|
+
"string",
|
|
53
|
+
"null"
|
|
54
|
+
]
|
|
55
|
+
},
|
|
56
|
+
"final_status": {
|
|
57
|
+
"type": [
|
|
58
|
+
"string",
|
|
59
|
+
"null"
|
|
60
|
+
]
|
|
61
|
+
},
|
|
62
|
+
"findings": {
|
|
63
|
+
"type": "array"
|
|
64
|
+
},
|
|
65
|
+
"decision": {
|
|
66
|
+
"type": "string"
|
|
67
|
+
},
|
|
68
|
+
"recommendations": {
|
|
69
|
+
"type": "array"
|
|
70
|
+
},
|
|
71
|
+
"failure_taxonomy": {
|
|
72
|
+
"type": "array"
|
|
73
|
+
},
|
|
74
|
+
"skill_improvement_input": {
|
|
75
|
+
"type": "object"
|
|
76
|
+
},
|
|
77
|
+
"next_action": {
|
|
78
|
+
"type": "object"
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"title": "Eval Harness Experiment",
|
|
4
|
+
"type": "object",
|
|
5
|
+
"required": [
|
|
6
|
+
"schema",
|
|
7
|
+
"batch_id",
|
|
8
|
+
"created_at",
|
|
9
|
+
"count",
|
|
10
|
+
"parallel",
|
|
11
|
+
"dry_run",
|
|
12
|
+
"models",
|
|
13
|
+
"run_ids",
|
|
14
|
+
"run_matrix"
|
|
15
|
+
],
|
|
16
|
+
"properties": {
|
|
17
|
+
"schema": {
|
|
18
|
+
"const": "eval-harness.experiment.v1"
|
|
19
|
+
},
|
|
20
|
+
"score_dimensions": {
|
|
21
|
+
"type": "array"
|
|
22
|
+
},
|
|
23
|
+
"batch_id": {
|
|
24
|
+
"type": [
|
|
25
|
+
"string",
|
|
26
|
+
"null"
|
|
27
|
+
]
|
|
28
|
+
},
|
|
29
|
+
"created_at": {
|
|
30
|
+
"type": [
|
|
31
|
+
"string",
|
|
32
|
+
"null"
|
|
33
|
+
]
|
|
34
|
+
},
|
|
35
|
+
"count": {
|
|
36
|
+
"type": [
|
|
37
|
+
"integer",
|
|
38
|
+
"null"
|
|
39
|
+
]
|
|
40
|
+
},
|
|
41
|
+
"parallel": {
|
|
42
|
+
"type": [
|
|
43
|
+
"integer",
|
|
44
|
+
"null"
|
|
45
|
+
]
|
|
46
|
+
},
|
|
47
|
+
"dry_run": {
|
|
48
|
+
"type": [
|
|
49
|
+
"boolean",
|
|
50
|
+
"null"
|
|
51
|
+
]
|
|
52
|
+
},
|
|
53
|
+
"models": {
|
|
54
|
+
"type": "array"
|
|
55
|
+
},
|
|
56
|
+
"run_ids": {
|
|
57
|
+
"type": "array"
|
|
58
|
+
},
|
|
59
|
+
"run_matrix": {
|
|
60
|
+
"type": "array"
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"title": "Eval Harness History Index",
|
|
4
|
+
"type": "object",
|
|
5
|
+
"required": [
|
|
6
|
+
"schema",
|
|
7
|
+
"updated_at",
|
|
8
|
+
"batch_count",
|
|
9
|
+
"records"
|
|
10
|
+
],
|
|
11
|
+
"properties": {
|
|
12
|
+
"schema": {
|
|
13
|
+
"const": "eval-harness.history-index.v1"
|
|
14
|
+
},
|
|
15
|
+
"updated_at": {
|
|
16
|
+
"type": "string"
|
|
17
|
+
},
|
|
18
|
+
"batch_count": {
|
|
19
|
+
"type": "integer"
|
|
20
|
+
},
|
|
21
|
+
"latest": {
|
|
22
|
+
"type": [
|
|
23
|
+
"object",
|
|
24
|
+
"null"
|
|
25
|
+
]
|
|
26
|
+
},
|
|
27
|
+
"best_overall": {
|
|
28
|
+
"type": [
|
|
29
|
+
"object",
|
|
30
|
+
"null"
|
|
31
|
+
]
|
|
32
|
+
},
|
|
33
|
+
"records": {
|
|
34
|
+
"type": "array"
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
}
|