Skip to content

Commit cb9c849

Browse files
mikasenghaasclaude
andauthored
chore: rename env-rollout to episode in docs and comments (#2095)
Standardize terminology on "episode" (the term we use) for the whole one-task run across agents. Replaces the "env-rollout" / "eval rollout" wording in docs, skills, code docstrings/comments, tests, and configs. No behavior change — all edits are prose. Where a docstring defined the episode in terms of "env-rollout" (episode.py, env.py, retries.py, agent.py), the wording is rephrased instead of a literal swap to avoid circular definitions. The generic single-trace "rollout" term (one task + harness + trace) is left as-is. Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
1 parent daa89da commit cb9c849

21 files changed

Lines changed: 45 additions & 45 deletions

File tree

configs/code_golf.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# code-golf-v1 — the taskset ships a recipe env: one env-rollout runs
1+
# code-golf-v1 — 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
#

docs/v1/environments.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# Multi-agent environments
22

3-
One eval rollout doesn't have to be one agent run. `Env` is abstract, and
3+
One episode doesn't have to be one agent run. `Env` is abstract, and
44
every run gets a concrete subclass: plain tasksets resolve to the bundled
55
`SingleAgentEnv` (one `agent` playing the taskset), and a package can export
66
its own (via `__all__`, alongside its [`Taskset`](tasksets.md) — the same plugin

docs/v1/overview.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ An `Agent` is a reusable (harness × model × runtime policy) value with one exe
2222

2323
## Environment
2424

25-
The control flow between agents: how many run on one task, in what order, judged how across the finished set. The default is the single-agent case; `--env.id` pairs a reusable interaction (best-of-n, a judge) with any taskset. One env-rollout yields flat, self-contained traces — each stamped with its episode and agent — persisted whole (one episode per `traces.jsonl` line).
25+
The control flow between agents: how many run on one task, in what order, judged how across the finished set. The default is the single-agent case; `--env.id` pairs a reusable interaction (best-of-n, a judge) with any taskset. One episode yields flat, self-contained traces — each stamped with its episode and agent — persisted whole (one episode per `traces.jsonl` line).
2626

2727
## Toolset
2828

docs/v1/tasksets.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -238,6 +238,6 @@ To override the judge model, set `env.taskset.task.judge.model` in your config (
238238

239239
## Beyond one agent
240240

241-
One eval rollout doesn't have to be one agent run: agents, the control flow between
241+
One episode doesn't have to be one agent run: agents, the control flow between
242242
agents, and cross-agent rewards are the environment's job — see
243243
[Multi-agent environments](environments.md).

environments/code_golf_v1/code_golf_v1/taskset.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
"""code_golf: write a short, fast Python program — the sibling-comparison recipe env.
22
3-
Each task asks for a tiny program with a known output. The env fans one env-rollout
3+
Each task asks for a tiny program with a known output. The env fans one episode
44
into `--env.attempts` independent attempts by the same "golfer" role and scores them
55
against each other. Anything that needs the runtime is measured per attempt, box-live,
66
into that attempt's trace; the env's `finalize()` then just compares the recorded
@@ -13,7 +13,7 @@
1313
- `fastest` env `finalize()`: of the PASSING attempts, the lowest recorded
1414
`latency` wins — a comparison of trace metadata.
1515
16-
So one env-rollout produces, per attempt: did it work, was it the shorter one, was it
16+
So one episode produces, per attempt: did it work, was it the shorter one, was it
1717
the quicker one — the relative signals you can only get by comparing siblings. Only
1818
correct attempts compete: a failed one earns nothing on either comparison, and an
1919
all-failed group pays nobody.
@@ -69,7 +69,7 @@ async def correct(self, trace: vf.Trace) -> float:
6969
class CodeGolfEnvConfig(vf.EnvConfig):
7070
golfer: vf.AgentConfig = vf.AgentConfig()
7171
attempts: int = Field(2, ge=1)
72-
"""Independent attempts per env-rollout, scored against each other."""
72+
"""Independent attempts per episode, scored against each other."""
7373

7474

7575
class CodeGolfEnv(vf.Env[CodeGolfEnvConfig]):

environments/proposer_solver_v1/proposer_solver_v1/taskset.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@ class SolveTask(vf.Task[SolveData]):
7878
@classmethod
7979
def from_trace(cls, proposer: vf.Trace) -> "SolveTask":
8080
"""trace -> Task: the proposer's JSON contract becomes the solvers' task.
81-
Off-contract output raises — the env-rollout fails (retryable) instead of
81+
Off-contract output raises — the episode fails (retryable) instead of
8282
scoring solvers against garbage."""
8383
reply = proposer.last_reply or ""
8484
greedy = re.search(r"\{.*\}", reply, re.DOTALL)

skills/create-environments/SKILL.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -136,7 +136,7 @@ Runtime config chooses where code executes. Task hooks should use the `vf.Runtim
136136
- Prefer deterministic verification grounded in the task's actual artifact or answer.
137137
- Use an LLM judge only when semantic judgment is unavoidable.
138138
- Metrics are for observability and do not contribute to reward, but are useful. Use them deliberately and appropriately!
139-
- Judgement that compares the sibling traces of one env-rollout (best-of-n selection, zero-sum payoffs) lives on `Environment.finalize(task, episode)` — attach via `trace.record_reward`/`record_metric`, in program order; no live runtime there.
139+
- Judgement that compares the sibling traces of one episode (best-of-n selection, zero-sum payoffs) lives on `Environment.finalize(task, episode)` — attach via `trace.record_reward`/`record_metric`, in program order; no live runtime there.
140140
- Raise ordinary Python exceptions from rollout hooks and scoring. The rollout records them as `TaskError`.
141141

142142
## Validation and lifecycle

skills/evaluate-environments/SKILL.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -160,7 +160,7 @@ outputs/<env>--<model>--<harness>/<uuid>/
160160
└── eval.log
161161
```
162162

163-
Set an exact path with `-o`. `traces.jsonl` is one **episode** per line — an env-rollout's traces plus their shared standing — appended after each episode finishes, so an episode is durable whole or not at all (a torn last line is the whole episode redone on resume).
163+
Set an exact path with `-o`. `traces.jsonl` is one **episode** per line — the episode's traces plus their shared standing — appended after each episode finishes, so an episode is durable whole or not at all (a torn last line is the whole episode redone on resume).
164164

165165
Resume in place:
166166

skills/evaluate-environments/references/REFERENCE.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ Sibling entrypoints reuse the same tree: [`ServeConfig`](#serveconfig--the-env-s
4545
| `client` | `ClientConfig` | `EvalClientConfig()` || The model client (discriminated union — see [Client config](#client-config)). |
4646
| `sampling` | `SamplingConfig` | `SamplingConfig()` || Per-request sampling knobs (see [Sampling config](#sampling-config)). |
4747
| `num_tasks` | `int \| None` | `None` | `batch_size`, `num_examples`, `num_tasks`, `n` | How many tasks to evaluate (None = all). |
48-
| `num_rollouts` | `int` | `1` | `group_size`, `rollouts_per_example`, `num_rollouts`, `r` | Independent env-rollouts per task — the trainer's group size. Env-internal fan-out (e.g. best-of-n attempts) is the env's own knob, not `-r`. |
48+
| `num_rollouts` | `int` | `1` | `group_size`, `rollouts_per_example`, `num_rollouts`, `r` | Independent episodes per task — the trainer's group size. Env-internal fan-out (e.g. best-of-n attempts) is the env's own knob, not `-r`. |
4949
| `shuffle` | `bool` | `False` | `shuffle`, `s` | Shuffle tasks before taking the first `num_tasks`. |
5050
| `max_concurrent` | `int \| None` | `128` | `max_concurrent`, `c` | Max rollouts in flight at once. |
5151
| `verbose` | `bool` | `False` | `verbose`, `v` | Log at debug level instead of info. |

tests/v1/fixtures/duet_v1.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
The multi-agent fixture for the v1 e2e suite (resolved by id `duet-v1`): an
44
`Env` subclass exported alongside its taskset, with two roles ("a", a trainable
55
seat on the run's model; "b", pinned untrainable), a `run()` that fans both out on
6-
the task, and a `finalize()` that records a sibling-dependent signal. One eval rollout
6+
the task, and a `finalize()` that records a sibling-dependent signal. One episode
77
should land one record carrying two role-stamped traces.
88
"""
99

0 commit comments

Comments
 (0)