Repository navigation
refactor: rename tandem to jevduo (package, CLI, session class, paths) - #15
Merged
Merged
Conversation
added 2 commits
November 5, 2026 22:53
- src/tandem -> src/jevduo, src/tandem_eval -> src/jevduo_eval (git mv, history preserved) - distribution name jevduo; CLI entry points jevduo / jevduo-eval - TandemSession -> JevDuoSession - rjob job name prefix tandem- -> jevduo- - pyproject: package-data key and ruff per-file-ignores follow the new package path - infra/config.example.json: repo_root / deploy_root / results_root; worker.sh entry module - CI: tandem check -> jevduo check - tests: imports, monkeypatch string paths, path / job-name assertions, demo boundary guard regex Not in this commit (follow-up PRs): TANDEM_* env vars, harness.name, schema id/ref/title, version bump, docs wording. Shared-volume paths (tandem_api_pool, tandem_jev_images, tandem_osworld21_*) and real-machine fixtures in tests/eval/rjob_fakes.py are intentionally unchanged.
…d upgrade note - README / AGENTS.md / docs: tandem check, tandem-eval, TandemSession, src/tandem*/ paths and the tandem-<run-id> job name now match the renamed entry points, so the documented steps run as written - README: add a short upgrade section (uninstall old package, reinstall, config path sync) - verified by running the README commands and the library-usage imports for real Not in this commit (PR2 wording batch): brand wording in titles and intro sentences, DEVIATIONS.md history, TANDEM_* env vars.
k4ngzy
approved these changes
Nov 5, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
The project is renamed from Tandem to JevDuo (lowercase
jevduofor anything machine-readable,JevDuofor display).This PR is a mechanical rename only. It does not change behavior, the protocol, or the on-disk result format. It contains two commits:
refactor: rename tandem to jevduo (package, CLI, session class, paths)docs: sync executable commands and imports with the jevduo rename; add upgrade noteChanges
Code and packaging
src/tandem→src/jevduo,src/tandem_eval→src/jevduo_eval(git mv; 76 of 77 files are detected as renames)jevduo; CLI entry pointsjevduo/jevduo-eval(the oldtandem/tandem-evalcommands are removed, no aliases)TandemSession→JevDuoSessiontandem-→jevduo-pyproject.toml: thepackage-datakey and the ruffper-file-ignorespaths follow the new package pathinfra/config.example.json:repo_root/deploy_root/results_rootinfra/worker.sh: entry modulejevduo_eval, docker temp dir prefixtandem check→jevduo checkmonkeypatchstring paths, path / job-name assertions, and the regex intests/demo/test_site.pythat guards the "demo must not import the harness" boundaryDocs (executable content only)
docs/*: commands, import examples, directory maps and thejevduo-<run-id>job name now match the renamed entry points, so the documented steps run as writtenCompatibility impact (please review)
import tandem/import tandem_evaland thetandem/tandem-evalcommands no longer exist. Existing installs need:jevduo-<run_id>.infra/config.json(gitignored) needseval.repo_root/eval.deploy_rootupdated by hand. The oldtandem-deploycopy on the shared volume is left untouched and should be removed once no run uses it.Intentionally not in this PR
TANDEM_EXPERIMENT_ROOT/TANDEM_CONFIG_FILE(follow-up PR, with a fallback to the old names)harness.name,f"tandem {__version__}"inepisode.json, the version number, and the schema$id/$ref/title(follow-up PR; wording and identifiers only, noprotocol_versionbump)tandem_api_pool,tandem_jev_images,tandem_osworld21_*, andlog.results_root(it points at the existing historical results directory)tests/eval/rjob_fakes.py(kept verbatim)Verification
ruff check src tests demo: passpytest: 657 passed, 1 skipped (the skip is the existing optional-Chromium test, unavailable on my machine)jevduo check: 17 protocol samples passjevduo/jevduo-eval, and there are notandementries (confirms thepackage-datakey was updated correctly)import tandemraisesModuleNotFoundErrorjevduo check,jevduo --version,jevduo-eval rjob run --help,jevduo-eval entry --help, and thebuild_default/SessionConfig/JevDuoSessionimportsfrom jevduo import xandimport jevduo_evalmatch,from tandem import xdoes notCluster mock smoke
jevduo-eval rjob run --benchmark mock --limit 2rename-mock-20261105, rjobjevduo-rename-mock-20261105, code version905c33b(no-dirty)Succeeded,rjob runreturnedsucceeded, worker log{"done": 1, "scored": 1}/mnt/shared-storage-gpfs2/evobox-share-gpfs2/chenxinquan/tandem/rjob_logs/rename-mock-20261105totalis 1 because the mock manifest contains a single task (mock-000);--limit 2did not drop anythingjevduo-deployasdeploy_root; the oldtandem-deploycopy was not touchedrjob list(259 jobs listed, 0 matches).rjob rundoes not print thedeletedflag andrjob getcannot distinguish "deleted" from "never existed", so this is indirect evidence of cleanupenv.sh, docker, VM; OSW1 / OSW2 / OSW2.1)harness.namein the archivedsummary.jsonis stilltandem(follow-up PR)CI note
test (3.12)failed once ontests/eval/test_browser_controls.py::test_real_cdp_discovers_click_handlers_without_promoting_plain_text(a real-Chromium test timing out waiting fordocument.readyState). This PR only changes one import line in that file. The same test also failed ondebug/gui-observation-closureand passed on re-run; it passed on re-run here too. The root cause was not investigated; hardening it should be a separate change.Notes for reviewers
git diff -M30%or GitHub's rename view).src/jevduo/__init__.pyis only 3 lines with 49% similarity, so it shows as an add/delete at the default 50% threshold.tools/rank_probe.py:24importsjevduo.candidates, which does not exist (the module isjevduo.gui.candidates). The old import was equally broken on the baseline, so it is not a regression of this rename. I will fix it in a separate small PR.