Skip to content

runner hygiene: local is the default; no simulated cells; cloud/unknown runners fail closed - #48

Open
maui314159 wants to merge 1 commit into
adrianco:mainfrom
maui314159:runner-hygiene
Open

maui314159 wants to merge 1 commit into
adrianco:mainfrom
maui314159:runner-hygiene

Conversation

@maui314159

Copy link
Copy Markdown
Contributor

Three small changes to how retort run picks a runner. Code-only; no experiment data.

What changes

  1. playpen.runner defaults to local — in PlaypenConfig and in the retort init template. local is the only runner that produces measurements; docker was the default only by enum order, so a fresh retort initretort run landed on the skeleton.
  2. DockerRunner no longer simulates a cell when docker is absent. _simulate_run returned random token counts and a 10% random failure rate inside a RunArtifacts that looked exactly like a real one. A grid of those is indistinguishable from data. It now fails the cell with a clear stderr, and retort run refuses runner: docker up front when docker is not on PATH.
  3. cloud and unrecognised runner names fail closed. Both used to fall through to DockerRunner (i.e. to the simulation). They now raise before any cell runs, listing the implemented runners. cloud stays in the schema as a reserved name.

None of the committed experiments used the docker path, so nothing published changes. The README's "Not yet" line now says cloud refuses to run rather than "falls through to Docker".

Tests

  • DockerRunner without docker fails closed (runner-level and retort run-level).
  • runner: cloud is refused; schema and retort init default to local.
  • tests/integration/test_design_to_run.py used the simulation to drive its design → score → store pipeline; it now uses a canned stub runner.

Full suite run against this branch: the only failures are the three test_provenance.py cases that also fail on current main unchanged (TypeError: unhashable type: 'dict'), unrelated to this change.

Why now

This is groundwork for a later sandbox-lane PR (a real container runner with in-container scoring); establishing "no runner ever invents a result" first keeps that PR free of runner-selection changes.

🤖 Generated with Claude Code

https://claude.ai/code/session_01X4DHjawxy52QZkAJkXeDTP

…nknown fail closed

Three small changes to how `retort run` picks a runner:

- `playpen.runner` defaults to `local` (schema and the `retort init`
  template). It is the only runner that produces measurements; `docker`
  was the default only by accident of enum order.
- DockerRunner no longer SIMULATES a cell when `docker` is absent. The
  simulation returned random token counts and a 10% random failure rate
  in a RunArtifacts that looked exactly like a real one — a grid of those
  is indistinguishable from data. It now fails the cell with a clear
  stderr, and `retort run` refuses `runner: docker` up front when docker
  is not on PATH.
- The reserved `cloud` name and any unrecognised runner name used to fall
  through to DockerRunner (i.e. to the simulation). They now raise before
  any cell runs, listing the implemented runners.

None of the 81 committed experiments used the docker path, so nothing
published changes. Tests: docker-without-binary fails closed (runner and
cli), `cloud` refused, schema/init default is `local`; the integration
test that relied on simulated cells uses a canned stub runner instead.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01X4DHjawxy52QZkAJkXeDTP
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant