Skip to content

Commit 91d4f69

Browse files
mikasenghaasclaude
andauthored
feat!: move v0 under verifiers.legacy (aliased), remove the v1 bridge, drop -v1 suffixes (#2303)
* feat!: remove the v0 legacy bridge from v1 Deletes verifiers/v1/legacy.py and verifiers/v1/configs/legacy.py and every legacy affordance in the v1 surface: - serve protocol: drop the info and run_group routes, task_idx addressing (task_data is now required), the serve_env/EnvServerPool legacy flag, and the LegacyEnvServer worker selection - eval CLI: drop --legacy.id, the legacy in-process eval path, row-indexed resume (whole_task/key_of), and the group-scored concurrency split - init CLI: drop --v0 scaffolding; gepa: drop the vf-gepa redirect - EvalConfig: drop the legacy block, is_legacy, and the mixed-run validator - v1.__init__: drop the LegacyEnvConfig export v1 no longer imports the v0 tree: install_utils moves to verifiers/v1/utils/install_utils.py, load_prime_config / CACHE_DIR / format_cost_usd / msgpack_encoder get v1-local homes. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * feat!: move all v0 code under verifiers.legacy The non-v1 tree (envs, clients, serve, scripts, gepa, rubrics, parsers, utils, types, decorators, errors) moves to verifiers/legacy/. verifiers/__init__.py collapses to __version__ only — importing the package root no longer pulls the v0 surface or runs its logging setup; the old API lives on as `import verifiers.legacy as vf`. verifiers/cli/ stays at the top level (the Prime CLI executes verifiers.cli.commands.* by hard-coded module path); its internals and the vf-* console scripts now point at verifiers.legacy.scripts.*. Also deletes the dead publish-envs workflow (its publish-only-v0 filter matches nothing and would mass-publish everything under stale names after the env renames). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * feat!: drop the _v1 suffix from the example environments Same rename as research-environments: the v0 envs the suffix coexisted with are gone, so the example tasksets shed it — dirs, packages, project names, taskset/judge ids, configs, docs, and the lock. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * Revert "feat!: move all v0 code under verifiers.legacy" This reverts commit a44506e0f6a56d0ff9de4ec9127f425df4696722. Scope change: v0 code stays in place; this branch only severs the v1<->v0 tie (the legacy bridge) and drops the -v1 env suffixes. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * chore: delete the publish-envs workflow Its publish-only-classic-envs filter (grep -vE '_v1$|^compact$') matched nothing while every env carried the _v1 suffix; with the suffix gone it would auto-publish all example tasksets to the Environments Hub as if they were classic envs. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * chore: simplify v1 CLI leftovers from the bridge era Resume keys are always task_key hashes now that row-index addressing is gone — collapse the Hashable TypeVar to str in cli/resume.py and cli/eval/resume.py. Inline the pure config.rich alias in eval main (it existed to force the dashboard off for bridged runs). Drop stale docstring references: the retired-keys phrase in configs/cli/env.py, the v0 framing on the env-level-harness guard, and -v1 example ids in comments and error messages. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * fix: env packages advertise python >=3.11 to match verifiers requires-python = ">=3.10" claimed an interpreter the required verifiers package (>=3.11,<3.14) can never resolve on. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * feat!: drop on-demand Hub installs from v1 plugin resolution A plugin id is the installed package's name: loaders import it directly and the ID type rejects `org/name[@Version]` references instead of installing them on demand. install_utils returns to the v0 tree (vf-install and the v0 eval keep it); v1 no longer imports it. Harbor dataset ids (their own registry) are unaffected. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * feat: move v0 code under verifiers.legacy with a top-level alias All non-v1 code (envs, clients, serve, scripts, gepa, rubrics, parsers, utils, types, decorators, errors) moves to verifiers/legacy/. A meta-path finder in the package root resolves every pre-move path to the same module object — `import verifiers as vf`, `from verifiers.types import State`, deep submodule imports, and mock.patch targets all keep working, including the absolute imports inside the moved code itself, so nothing is rewritten. `verifiers/cli` stays physical for the Prime CLI's hard-coded `python -m verifiers.cli.commands.*` execution. Importing the package root (or verifiers.v1) no longer loads the v0 surface or runs its logging setup — that now happens on first touch of a legacy module or attribute. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * chore: ID is a plain str; public names for the legacy alias Drop the _validate_id hub-syntax rejection — an unknown id already fails at plugin import with the real error. LEGACY_MODULES and LegacyAliasFinder lose their underscore prefixes. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * style: ruff 0.16.0 fixes Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * fix: make the legacy move visible to static tooling CI ruff and ty can't see through the runtime alias, so first-party code now states real paths: the legacy tree and verifiers/cli import verifiers.legacy.* directly (116 files), isort pins the verifiers namespace first-party (path probing classified the aliased submodules as third-party), and the package root imports importlib names directly instead of attribute access ty can't resolve. The alias keeps serving external consumers and the unchanged v0 tests. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * fix: GEPA_SCHEMA_VERSION is a format id, not a module path The import rewrite caught the string constant; the persisted artifact schema stays verifiers.gepa.v1. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * docs: move v0 docs to docs/legacy Nav and cross-links follow; mint.json redirects keep the published /v0/* URLs working. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * feat: restore on-demand Hub installs, homed in v1 ensure_installed/env_name/env_module and the hub-format ID validator return, with install_utils copied into verifiers/v1/utils/ — each stack owns its copy, so the paths stay fully decoupled (v1 never imports the legacy tree, the legacy scripts never import v1). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> --------- Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
1 parent 74959f5 commit 91d4f69

312 files changed

Lines changed: 1527 additions & 2303 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

‎.github/workflows/publish-envs.yml‎

Lines changed: 0 additions & 84 deletions
This file was deleted.

‎AGENTS.md‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,4 +25,4 @@
2525
## Testing
2626

2727
- **Prefer e2e tests over unit tests**: v1's end-to-end tests are sufficient — extra unit tests clog the repo. Editing existing tests is fine; to check your own work, write a temporary script instead of committing new tests.
28-
- **Run the contributor checks**: run `uv run pre-commit install` once, then for touched areas `uv run ruff check --fix .`, `uv run pytest tests/`, and `uv run pre-commit run --all-files` (see `docs/v0/development.md`).
28+
- **Run the contributor checks**: run `uv run pre-commit install` once, then for touched areas `uv run ruff check --fix .`, `uv run pytest tests/`, and `uv run pre-commit run --all-files` (see `docs/legacy/development.md`).

‎configs/agentic_judge.toml‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ num_tasks = 2
44
id = "agentic-judge"
55

66
[env.taskset]
7-
id = "gsm8k-v1"
7+
id = "gsm8k"
88

99
[env.solver.harness]
1010
id = "bash"

‎configs/alphabet_sort.toml‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
1-
# alphabet-sort-v1 — multi-turn alphabetical sorting, driven by a colocated user simulator.
1+
# alphabet-sort — multi-turn alphabetical sorting, driven by a colocated user simulator.
22
#
33
# uv run eval @ configs/alphabet_sort.toml --model <small-instruct-model>
44
num_tasks = 5
55
num_rollouts = 2
66

77
[env.taskset]
8-
id = "alphabet-sort-v1"
8+
id = "alphabet-sort"
99
min_turns = 2
1010
max_turns = 2
1111

‎configs/code_golf.toml‎

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
1-
# code-golf-v1 — the taskset ships a recipe env: one episode runs
1+
# code-golf — the taskset ships a recipe env: one episode runs
22
# `--env.attempts` independent attempts (default 2) and scores them against
33
# each other (shortest wins), so one rollout per task is a full comparison.
44
#
5-
# uv run eval code-golf-v1 @ configs/code_golf.toml
5+
# uv run eval code-golf @ configs/code_golf.toml
66
num_tasks = 1
77
num_rollouts = 1
88

99
[env.taskset]
10-
id = "code-golf-v1"
10+
id = "code-golf"

‎configs/deepwiki.toml‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
# deepwiki-v1 — an existing remote MCP server, reached by URL (nothing to run ourselves).
1+
# deepwiki — an existing remote MCP server, reached by URL (nothing to run ourselves).
22
#
33
# uv run eval @ configs/deepwiki.toml
44
num_tasks = 1
55

66
[env.taskset]
7-
id = "deepwiki-v1"
7+
id = "deepwiki"

‎configs/glossary.toml‎

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
# glossary-v1 — a colocated MCP tool server (runs inside the harness's own runtime).
1+
# glossary — a colocated MCP tool server (runs inside the harness's own runtime).
22
#
3-
# uv run eval glossary-v1 @ configs/glossary.toml
3+
# uv run eval glossary @ configs/glossary.toml
44
num_tasks = 1
55

66
[env.taskset]
7-
id = "glossary-v1"
7+
id = "glossary"

‎configs/gsm8k.toml‎

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
1-
# gsm8k-v1 — grade-school math, bash harness; a few tasks with several rollouts each.
1+
# gsm8k — grade-school math, bash harness; a few tasks with several rollouts each.
22
#
3-
# uv run eval gsm8k-v1 @ configs/gsm8k.toml
3+
# uv run eval gsm8k @ configs/gsm8k.toml
44
num_tasks = 5
55
num_rollouts = 3
66

77
[env.taskset]
8-
id = "gsm8k-v1"
8+
id = "gsm8k"

‎configs/gsm8k_rlm.toml‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# The gsm8k-v1 taskset run with the rlm harness, configured entirely from TOML.
1+
# The gsm8k taskset run with the rlm harness, configured entirely from TOML.
22
#
33
# uv run eval @ configs/gsm8k_rlm.toml
44
#
@@ -10,7 +10,7 @@
1010
num_tasks = 1
1111

1212
[env.taskset]
13-
id = "gsm8k-v1"
13+
id = "gsm8k"
1414

1515
[env.agent.harness]
1616
id = "rlm"

‎configs/wiki_search.toml‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
# wiki-search-v1 — a shared MCP tool server (the corpus is built once, reused across rollouts).
1+
# wiki-search — a shared MCP tool server (the corpus is built once, reused across rollouts).
22
#
33
# uv run eval @ configs/wiki_search.toml
44
num_tasks = 1
55

66
[env.taskset]
7-
id = "wiki-search-v1"
7+
id = "wiki-search"

0 commit comments

Comments
 (0)