Highlights
- New built-in harnesses. Claude Code (#1691), Pi (#2004) and Pool (#2056).
- New built-in tasksets. OpenEnv environments load as first-class tasksets (
openenv) behind theverifiers[openenv]extra (#1997, #2059) - Lazy/ infinite tasksets.
Taskset.load()may now yield tasks instead of returning a finite list, enabling dynamically generated, never-ending task streams for online training (#1969). Taskset loading is also lazy end-to-end (#2023). - Richer traces. Traces record per-call
ModelCallmetadata (#2061), split generation time into model vs. harness time (#2060), report usage-based and self-consistent token counts (#2040), persist advertised tool definitions for tool-use SFT (#1963), carry platform-integration provenance fields (#2053), and thread kept-set sampling masks from generate responses toBranch(#1978). - GEPA. GEPA prompt optimization for v1 environments (#1952).
- Improved reliability. Improved MCP tool serving under high concurrency (#2062). The message graph is atomic w.r.t. harness retries (#2036), env server worker failures surface as structured errors (#1976), and the interception layer is a first-class contract with warm elastic pools by default (#1989, #2002).
Breaking
defaultharness renamed tobash. Configs withharness.id = "default"must use"bash";DefaultHarness/DefaultHarnessConfigare nowBashHarness/BashHarnessConfig(#2063).EnvConfig.multiplexreplaced byEnvConfig.interception. Interception is a pluggable config:InterceptionServerConfig,StaticInterceptionPoolConfig, orElasticInterceptionPoolConfig(the previous multiplex behavior) (#1989).- OpenEnv folded behind an extra. The
openenv-v1package moved toverifiers.v1.tasksets.openenv; depend onverifiers[openenv]instead (#2059). - Harbor task timeouts ignored by default.
HarborConfig.ignore_timeoutsdefaults toTrue; opt back in with--no-taskset.ignore-timeouts(#2050). - Removals. Legacy v0 environments (#2055) and the composable search taskset (#1854, migrated to research-environments) are gone.
Changelog
- feat(v1): persist advertised tool defs on the Trace for tool-use SFT by @anravich13-cloud in #1963
- feat: warn and block a second Ctrl-C during eval cleanup by @mikasenghaas in #1972
- Fix harness docs env variable by @xeophon in #1973
- Use Luna for tool response image CI test by @xeophon in #1980
- Use a valid image fixture for tool response test by @xeophon in #1981
- Make Codex multi-agent configurable by @xeophon in #1979
- feat(v1): GEPA prompt optimization for native v1 environments by @Ziems in #1952
- feat(v1): add mmmu-v1 environment (native port of mmmu) by @xeophon in #1975
- feat(v1): support image-bearing Messages prompts by @xeophon in #1974
- fix(v1): structure env server worker failures by @xeophon in #1976
- fix(v1): install the MMMU example taskset by @xeophon in #1984
- fix(v1): tolerate an unknown service_tier in the chat dialect by @Ziems in #1986
- feat: thread kept-set sampling masks from generate responses to Branch by @faresobeid in #1978
- feat(v1): time runtime boot separately from setup by @mikasenghaas in #1990
- feat(v1): lazy and infinite tasksets (load() may yield) by @mikasenghaas in #1969
- feat: cleanup interception by @mikasenghaas in #1989
- fix(v1): docker runtime on macOS (Docker Desktop) by @snimu in #2006
- Prefer pip for uv bootstrap by @xeophon in #1996
- Use direct command for Prime workdir setup by @xeophon in #1998
- Combine uv script publication and setup by @xeophon in #1999
- fix(v1): install a server's package extras in sandbox venvs by @snimu in #2007
- Warm elastic interception by default by @xeophon in #2002
- Use direct command for Prime file writes by @xeophon in #2000
- fix: disambiguate errors and invalids in validate --rich summary by @hallerite in #2013
- fix(v1): bound null harness MCP connect at 60s by @eligotts in #1977
- fix: reset entrypoint when starting docker sandboxes by @mikasenghaas in #2015
- docs(v1): rename environments guide to tasksets by @xeophon in #2010
- Reorder interception operations by @xeophon in #2025
- Clean up replay dashboard progress rendering by @xeophon in #2026
- Reuse persisted trace runtime metadata by @xeophon in #2028
- Reuse v1 image encoding and typed user messages by @xeophon in #2029
- Add Pi harness support by @xeophon in #2004
- Make taskset loading lazy by @xeophon in #2023
- fix: parse legacy harbor schema-1.0 size strings in [environment] by @mikasenghaas in #2031
- docs(v1): add GEPA page and drop perfect_score knob by @Ziems in #2012
- feat(v1): TOOL_PREFIX = None for bare tool names by @mikasenghaas in #2035
- fix: make the message graph atomic w.r.t. harness retries by @mikasenghaas in #2036
- fix: make Trace token counts usage-based and consistent by @mikasenghaas in #2040
- chore: bump renderers to 0.1.8 by @mikasenghaas in #2042
- fix(v1): reject duplicate default harness tools by @xeophon in #2044
- feat(v1): dtype-aware routed-experts payload decode by @mikasenghaas in #2043
- feat: auto-built prime sandbox images - cache signal, build warning, dashboard mark by @mikasenghaas in #2047
- Add Claude Code harness with E2E coverage by @xeophon in #1691
- feat: ignore harbor task timeouts by default by @mikasenghaas in #2050
- chore(deps): bump mcp from 1.27.0 to 1.28.1 by @dependabot[bot] in #2051
- refactor(search): remove composable search taskset (migrated to research-environments v1) by @hallerite in #1854
- chore: remove legacy environments by @xeophon in #2055
- chore: use 'uv run init' in create-environments skill by @xeophon in #2057
- Add native OpenEnv V1 taskset support by @xeophon in #1997
- fix(v1): tolerate provider usage without cache_write_tokens by @dumko2001 in #2019
- feat(v1): add platform-integration metadata fields to Trace by @mikasenghaas in #2053
- fix(v1): fold openenv into verifiers.v1.tasksets behind an openenv extra by @mikasenghaas in #2059
- feat: record per-call model call metadata on v1 traces by @mikasenghaas in #2061
- feat(v1): split generation time into model vs. harness time by @mikasenghaas in #2060
- feat: rename the default harness to bash by @mikasenghaas in #2063
- chore: update pinned harness versions by @xeophon in #2064
- fix: mcp robustness fixes under high-concurrency by @mikasenghaas in #2062
- Add pool harness (Poolside Agent CLI) by @xeophon in #2056
- Refresh dependency requirements and optional extras by @xeophon in #2065
- chore(deps): bump prime-pydantic-config to 0.4.2 by @mikasenghaas in #2081
- chore: remove PR template by @mikasenghaas in #2082
New Contributors
- @anravich13-cloud made their first contribution in #1963
- @Ziems made their first contribution in #1952
- @dependabot[bot] made their first contribution in #2051
- @dumko2001 made their first contribution in #2019
Full Changelog: v0.2.0...v0.2.1