diff --git a/docs/pipelines/quality_loop.md b/docs/pipelines/quality_loop.md index 76a6116..31cab8c 100644 --- a/docs/pipelines/quality_loop.md +++ b/docs/pipelines/quality_loop.md @@ -89,7 +89,7 @@ repo2rlenv quality run ./tasks/example \ --campaign ./workspace/my-campaign \ --out ./workspace/reviews/example-repaired \ --repair --provider modal \ - --runtime-wheel ./dist/repo2rlenv-0.9.0-py3-none-any.whl \ + --runtime-wheel ./dist/repo2rlenv-0.9.1-py3-none-any.whl \ --review-model anthropic/claude-sonnet-4-6 \ --repair-model anthropic/claude-opus-4-6 \ --solver-model anthropic/claude-sonnet-4-6 \ diff --git a/docs/pipelines/tasksmith.md b/docs/pipelines/tasksmith.md index 9990046..a1c7365 100644 --- a/docs/pipelines/tasksmith.md +++ b/docs/pipelines/tasksmith.md @@ -71,7 +71,7 @@ uv run repo2rlenv tasksmith run examples/tasksmith-pr.json \ --options examples/tasksmith-options.json \ --campaign workspace/tasksmith \ --output workspace/tasksmith/run \ - --runtime-wheel dist/repo2rlenv-0.9.0-py3-none-any.whl \ + --runtime-wheel dist/repo2rlenv-0.9.1-py3-none-any.whl \ --env-file .env uv run repo2rlenv tasksmith show workspace/tasksmith/run --json ``` diff --git a/docs/release_notes/HISTORY.md b/docs/release_notes/HISTORY.md index 2b71867..d943296 100644 --- a/docs/release_notes/HISTORY.md +++ b/docs/release_notes/HISTORY.md @@ -6,6 +6,31 @@ only the compressed summary; the detail lives here. For per-release deep dives see the sibling pages (`v0.8.2.post3.md`, `v0.8.3/`). +## v0.9.1 — Windows CLI startup and release checks + +Released September 15, 2026. + +Fixes the Windows CLI crash introduced in 0.9.0: even `--version` and `--help` +previously failed while importing the POSIX-only `fcntl` module. A shared +standard-library lock now uses `flock` on POSIX and byte-range locking on +Windows, preserving exclusive controller ownership and the blocking history +checkout lock. Thanks to KNambiarDJsc for the report and initial fix +([#128](https://github.com/huggingface/Repo2RLEnv/issues/128), +[#129](https://github.com/huggingface/Repo2RLEnv/pull/129)). + +CI and publication now require fresh Windows wheel checks on Python 3.12–3.14: +CLI startup, recipe discovery, native UTF-8 task emission/static validation and +real process-lock contention. Full native Windows Tasksmith, research-recipe +and quality-controller execution remains unsupported; use Linux, macOS or WSL. +The remaining artifact-permission and process-cleanup work is tracked in +[#130](https://github.com/huggingface/Repo2RLEnv/issues/130). + +This release also includes the Python, documentation/build-tool and Pi/OpenCode +runtime dependency updates merged after 0.9.0. Upgrade with +`pip install --upgrade --upgrade-strategy eager repo2rlenv==0.9.1`, including any +extras your pipeline needs. The Windows CLI/locking fix does not require changes +to existing generated datasets. Versioned examples use the 0.9.1 runtime wheel. + ## v0.9.0 — Tasksmith and owned generation recipes Released September 15, 2026. diff --git a/examples/owned-cli-gym.yaml b/examples/owned-cli-gym.yaml index 0cbaee8..e013c36 100644 --- a/examples/owned-cli-gym.yaml +++ b/examples/owned-cli-gym.yaml @@ -22,7 +22,7 @@ execution: campaign_dir: workspace/campaign run_id: cli-gym-first worker_receipt: workspace/campaign/workers/worker.json - runtime_wheel: dist/repo2rlenv-0.9.0-py3-none-any.whl + runtime_wheel: dist/repo2rlenv-0.9.1-py3-none-any.whl timeout_sec: 14000 output: destination: workspace/generated/cli-gym diff --git a/examples/owned-dataarc.yaml b/examples/owned-dataarc.yaml index 6252cee..e9995e4 100644 --- a/examples/owned-dataarc.yaml +++ b/examples/owned-dataarc.yaml @@ -18,7 +18,7 @@ execution: campaign_dir: workspace/campaign run_id: dataarc-first worker_receipt: workspace/campaign/workers/worker.json - runtime_wheel: dist/repo2rlenv-0.9.0-py3-none-any.whl + runtime_wheel: dist/repo2rlenv-0.9.1-py3-none-any.whl timeout_sec: 14000 output: destination: workspace/generated/dataarc diff --git a/examples/owned-endless-terminals.yaml b/examples/owned-endless-terminals.yaml index 73751c7..627a4ce 100644 --- a/examples/owned-endless-terminals.yaml +++ b/examples/owned-endless-terminals.yaml @@ -15,7 +15,7 @@ execution: campaign_dir: workspace/campaign run_id: endless-terminals-first worker_receipt: workspace/campaign/workers/worker.json - runtime_wheel: dist/repo2rlenv-0.9.0-py3-none-any.whl + runtime_wheel: dist/repo2rlenv-0.9.1-py3-none-any.whl timeout_sec: 14000 output: destination: workspace/generated/endless_terminals diff --git a/examples/owned-r2e-gym.yaml b/examples/owned-r2e-gym.yaml index da606e9..8f99339 100644 --- a/examples/owned-r2e-gym.yaml +++ b/examples/owned-r2e-gym.yaml @@ -23,7 +23,7 @@ execution: campaign_dir: workspace/campaign run_id: r2e-gym-first worker_receipt: workspace/campaign/workers/worker.json - runtime_wheel: dist/repo2rlenv-0.9.0-py3-none-any.whl + runtime_wheel: dist/repo2rlenv-0.9.1-py3-none-any.whl timeout_sec: 14000 output: destination: workspace/generated/r2e_gym diff --git a/examples/owned-r2e.yaml b/examples/owned-r2e.yaml index 2095264..790fffc 100644 --- a/examples/owned-r2e.yaml +++ b/examples/owned-r2e.yaml @@ -22,7 +22,7 @@ execution: campaign_dir: workspace/campaign run_id: r2e-first worker_receipt: workspace/campaign/workers/worker.json - runtime_wheel: dist/repo2rlenv-0.9.0-py3-none-any.whl + runtime_wheel: dist/repo2rlenv-0.9.1-py3-none-any.whl timeout_sec: 13000 output: destination: workspace/campaign/generated/r2e diff --git a/examples/owned-scaler.yaml b/examples/owned-scaler.yaml index 8e291da..a9f8afe 100644 --- a/examples/owned-scaler.yaml +++ b/examples/owned-scaler.yaml @@ -14,7 +14,7 @@ execution: campaign_dir: workspace/campaign run_id: scaler-first worker_receipt: workspace/campaign/workers/worker.json - runtime_wheel: dist/repo2rlenv-0.9.0-py3-none-any.whl + runtime_wheel: dist/repo2rlenv-0.9.1-py3-none-any.whl timeout_sec: 14000 output: destination: workspace/generated/scaler diff --git a/examples/owned-seta-evol.yaml b/examples/owned-seta-evol.yaml index 9b635e3..7fe1062 100644 --- a/examples/owned-seta-evol.yaml +++ b/examples/owned-seta-evol.yaml @@ -17,7 +17,7 @@ execution: campaign_dir: workspace/seta run_id: seta-evol-first worker_receipt: workspace/seta/workers/seta-worker.json - runtime_wheel: dist/repo2rlenv-0.9.0-py3-none-any.whl + runtime_wheel: dist/repo2rlenv-0.9.1-py3-none-any.whl timeout_sec: 7200 output: destination: workspace/seta/evolved diff --git a/examples/owned-seta.yaml b/examples/owned-seta.yaml index 51c5882..2f1b228 100644 --- a/examples/owned-seta.yaml +++ b/examples/owned-seta.yaml @@ -15,7 +15,7 @@ execution: campaign_dir: workspace/seta run_id: seta-first worker_receipt: workspace/seta/workers/seta-worker.json - runtime_wheel: dist/repo2rlenv-0.9.0-py3-none-any.whl + runtime_wheel: dist/repo2rlenv-0.9.1-py3-none-any.whl timeout_sec: 7200 output: destination: workspace/seta/tasks diff --git a/examples/owned-swe-flow.yaml b/examples/owned-swe-flow.yaml index 9482ec8..b487adf 100644 --- a/examples/owned-swe-flow.yaml +++ b/examples/owned-swe-flow.yaml @@ -22,7 +22,7 @@ execution: campaign_dir: workspace/campaign run_id: swe-flow-first worker_receipt: workspace/campaign/workers/worker.json - runtime_wheel: dist/repo2rlenv-0.9.0-py3-none-any.whl + runtime_wheel: dist/repo2rlenv-0.9.1-py3-none-any.whl timeout_sec: 10000 output: destination: workspace/campaign/generated/swe-flow diff --git a/examples/owned-swe-gen.yaml b/examples/owned-swe-gen.yaml index c088662..9203c2a 100644 --- a/examples/owned-swe-gen.yaml +++ b/examples/owned-swe-gen.yaml @@ -19,7 +19,7 @@ execution: campaign_dir: workspace/campaign run_id: swe-gen-first worker_receipt: workspace/campaign/workers/worker.json - runtime_wheel: dist/repo2rlenv-0.9.0-py3-none-any.whl + runtime_wheel: dist/repo2rlenv-0.9.1-py3-none-any.whl timeout_sec: 10000 output: destination: workspace/campaign/generated/swe-gen diff --git a/examples/owned-swe-next.yaml b/examples/owned-swe-next.yaml index 5c8e57e..bb7d98e 100644 --- a/examples/owned-swe-next.yaml +++ b/examples/owned-swe-next.yaml @@ -23,7 +23,7 @@ execution: campaign_dir: workspace/campaign run_id: swe-next-first worker_receipt: workspace/campaign/workers/worker.json - runtime_wheel: dist/repo2rlenv-0.9.0-py3-none-any.whl + runtime_wheel: dist/repo2rlenv-0.9.1-py3-none-any.whl timeout_sec: 14000 output: destination: workspace/generated/swe_next diff --git a/examples/owned-swe-smith.yaml b/examples/owned-swe-smith.yaml index 8118a21..296e224 100644 --- a/examples/owned-swe-smith.yaml +++ b/examples/owned-swe-smith.yaml @@ -19,7 +19,7 @@ execution: campaign_dir: workspace/smith run_id: smith-first worker_receipt: workspace/smith/workers/smith-worker.json - runtime_wheel: dist/repo2rlenv-0.9.0-py3-none-any.whl + runtime_wheel: dist/repo2rlenv-0.9.1-py3-none-any.whl timeout_sec: 1800 output: destination: workspace/smith/tasks diff --git a/examples/owned-terminalworld.yaml b/examples/owned-terminalworld.yaml index 0266eee..a5219d8 100644 --- a/examples/owned-terminalworld.yaml +++ b/examples/owned-terminalworld.yaml @@ -16,7 +16,7 @@ execution: campaign_dir: workspace/campaign run_id: terminalworld-first worker_receipt: workspace/campaign/workers/worker.json - runtime_wheel: dist/repo2rlenv-0.9.0-py3-none-any.whl + runtime_wheel: dist/repo2rlenv-0.9.1-py3-none-any.whl timeout_sec: 14000 output: destination: workspace/generated/terminalworld diff --git a/examples/owned-tmax.yaml b/examples/owned-tmax.yaml index 472b191..5114c90 100644 --- a/examples/owned-tmax.yaml +++ b/examples/owned-tmax.yaml @@ -15,7 +15,7 @@ execution: campaign_dir: workspace/campaign run_id: tmax-first worker_receipt: workspace/campaign/workers/worker.json - runtime_wheel: dist/repo2rlenv-0.9.0-py3-none-any.whl + runtime_wheel: dist/repo2rlenv-0.9.1-py3-none-any.whl timeout_sec: 14000 output: destination: workspace/generated/tmax diff --git a/pyproject.toml b/pyproject.toml index d20144b..a6f5e3b 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "repo2rlenv" -version = "0.9.0" +version = "0.9.1" description = "Turn any repository into an RL environment for training and evaluation." readme = "README.md" license = "Apache-2.0 AND MIT" diff --git a/uv.lock b/uv.lock index fd7554b..6e18c5a 100644 --- a/uv.lock +++ b/uv.lock @@ -2543,7 +2543,7 @@ wheels = [ [[package]] name = "repo2rlenv" -version = "0.9.0" +version = "0.9.1" source = { editable = "." } dependencies = [ { name = "aiohttp" },