Skip to content

ci: run the Episode test suite on a standard runner and gate new failures - #88

Open
wilke wants to merge 2 commits into
chian:mainfrom
wilke:ci/episode-gate
Open

wilke wants to merge 2 commits into
chian:mainfrom
wilke:ci/episode-gate

Conversation

@wilke

@wilke wilke commented Oct 10, 2026

Copy link
Copy Markdown
Collaborator

Why

No Episode test runs in CI. tests.yml requests ubuntu-latest-96-core (and the e2e jobs -32-core). Those are larger runners this repo doesn't have, so the jobs sit in the queue for 24 h and are cancelled; every Python PR ends red or cancelled. Branch protection is off, so nothing blocks a merge.

Meanwhile, API changes from Oct 2–8 broke 94 tests in 43 of 129 Episode test files, all unnoticed.

What

  • episode-tests.yml: a standalone workflow on ubuntu-latest. It sets up the locked test environment through setup-pm (core, plus the dev and test groups) and runs on PRs, on pushes to main, and manually.
  • scripts/run_episode_suite.py:
    • stdlib only; runs one pytest process per file, in parallel, as scripts/run_tests.sh does;
    • deselects known failures and exits 1 on any other failure;
    • --check-known lists known-failure entries that pass again.
  • tests/episode_suite.txt: the suite. It covers the core packages (method_loop, numeric_control_library, function_library, episode_builder, episode_runtime, iterative_episode_refiner, the inspector) plus the OpenChia test files in tests/agent, tests/openchia_cli, tests/pm and tests/scripts.
  • tests/episode_suite_known_failures.txt: the remaining failures, grouped by the change that broke them. Tracked in Episode suite: 75 tests broken by Oct 2–8 refactors (known-failures list) #87.
  • 19 tests fixed:
    • the shared refinement fixture no longer imports the removed measure_groups module except in its grouped variant;
    • the test_reports assignments include materialization_targets;
    • the method_loop recursion test supplies the ReportContract and synthesize_report that child invocations now require;
    • the emitter turn-error test uses its own workspace, because the repo conftest puts HERMES_HOME under tmp_path.

Local result (macOS)

110 files run and 1 fails: tests/pm/test_prepared_project.py needs the installed uv, which setup-pm provides in CI. 13 files and 42 tests are deselected as known failures. The slowest file takes 16 s.

Not in this PR

  • Moving the large-runner, release and canary workflows to manual dispatch. This changes shared CI, so it needs agreement first.
  • Making this check required on main. That needs an admin.
  • The installer gap (ModuleNotFoundError: episode_runtime in the fresh-install E2E).

🤖 Generated with Claude Code

wilke and others added 2 commits October 9, 2026 19:07
…ures

No Episode test ran in CI: tests.yml asks for ubuntu-latest-96-core, an org
runner this repository does not have, so the job queued and was cancelled.
Meanwhile 94 tests in 43 of 129 Episode test files broke.

- .github/workflows/episode-tests.yml: ubuntu-latest, locked test env via
  setup-pm, runs scripts/run_episode_suite.py on pull requests and main.
- scripts/run_episode_suite.py: one pytest process per file, in parallel
  (as the repository's own runner does); deselects known failures; with
  --check-known reports entries that pass again.
- tests/episode_suite.txt: the suite (core packages plus OpenChia files in
  tests/agent, tests/openchia_cli, tests/pm, tests/scripts).
- tests/episode_suite_known_failures.txt: remaining failures grouped by the
  change that broke them (chian#87).

Fixes 19 tests:
- refinement_fixture imports the removed measure_groups module only for its
  grouped variant;
- test_reports assignments include materialization_targets;
- method_loop recursion test supplies the parent ReportContract and
  synthesize_report that child invocations now require;
- the emitter turn-error test uses its own workspace (the repository
  conftest places HERMES_HOME under tmp_path).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The first Linux run failed 11 files that pass or skip on macOS: the container
image was not present, user systemd transient services exit early (218) on the
GitHub runner, and the home-I/O guard rejects the setup-pm uv path. Pull the
image; list the rest as group I in the known failures (chian#87).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

This branch has not been deployed

No deployments
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