Skip to content

MIT-618: one more verified GitHub task (third batch) - #167

Merged
ZachFara merged 4 commits into
feature/eval-setupfrom
feat/MIT-618-batch3
Nov 8, 2026
Merged

ZachFara merged 4 commits into
feature/eval-setupfrom
feat/MIT-618-batch3

Conversation

@ZachFara

@ZachFara ZachFara commented Nov 8, 2026 •

Copy link
Copy Markdown
Owner

What changed

tools/eval/github_tasks.py gets 1 more verified GitHub task, for 5 in all. That's far short of the 20 Zach wants. I stopped at the turn budget and kept the bar where it was.

Task Repo (license) Upstream release (PyPI date) upstream_change
gh-pip-tools-flag-default pypa/pip-tools (BSD-3-Clause) click 8.5.0, 2026-08-26 click-8.5-flag-default-unset
  • Pairs: 0. The new key has one task. Neither sibling I found qualified (see the rejected candidates).
  • Timing:
  • Merge commit: base_commit is the merge's first parent, c58d5d9.
  • Setup: env SETUPTOOLS_SCM_PRETEND_VERSION=7.6.1 uv pip install --exclude-newer=... -e .[testing]. The archive has no .git, so setuptools-scm needs a pretend version.
  • Test command: -n0, because the project's addopts turn on xdist.
  • Install: about 29 MB.
  • Fix: it changes code. get_compile_command now compares a value with option.get_default(...). The fix also adds a click compat module for LazyFile.

Base failing output (containerized, -v)

  • Test: tests/test_utils.py::test_get_compile_command_no_index_not_added_by_default.
  • Click 8.5.0, at the base: fails.
    E           AssertionError: assert 'pip-compile ...quirements.in' == 'pip-compile requirements.in'
    E             - pip-compile requirements.in
    E             + pip-compile --no-index requirements.in
    
    The output also has LazyFile/safecall DeprecationWarnings. They are warnings only.
  • Click 8.5.0, at the fix: passes.
  • Click 8.4.2, at the base: passes.
  • check ran through a helper that calls repos.materialize, prepare and run_tests with container.run, the same steps agent_eval.py check runs. Containers ran one at a time, none were left behind, and --on-host was never used.

Cause-word checks

  • Cause words: sentinel, default is unset, default is now unset, default stays unset, `unset and 8.5. They name the mechanism: since click 8.5, Option.default stays the UNSET sentinel.
    • Bare unset is left out (review fix). It is ordinary English, and a fix that only treats the symptom says it ("skip options left unset").
    • `unset has a leading backtick, so it matches UNSET written as code.
  • Neither "unset" nor "sentinel" appears in the base piptools/utils.py or piptools/scripts/compile.py (grepped at c58d5d9).
  • I checked them with grading v2's mentions (word start, lowercase) against:
    • the whole captured base output;
    • the whole laid-over tests/test_utils.py at the fix sha (828 lines);
    • the symptom words, in both directions;
    • the names get_compile_command and the test's name;
    • the words a symptom-only fix would use.
  • No hits.
  • All but 8.5 are non-version words. 8.5 is one under is_version_word, so it is added to the expected set in test_the_cause_words_grader_v2_skips_are_exactly_the_versions. Added version words: 8.5.
  • Leak review of the laid-over file:
    • The new test's docstring states only the symptom ("--no-index must not show up in the recorded command unless it was actually passed. See GH-2472.").
    • It does point at the issue, which states the cause. The record's comment says so, and notes that eval sessions have no web tools.
    • No other comment, docstring or test name mentions click versions, defaults or sentinels.

Rejected candidates (this batch, both runs)

Why

Ticket: MIT-618 (third batch), the GitHub-task eval. These are real post-cutoff tasks for the arms run.

How it was tested

  • Containerized before/after/previous-version runs for the new task, as described above.
  • server/tests/test_eval_repos.py and test_eval_grader.py pass after merging origin/feature/eval-setup (grading v2).
  • make check passes.

Learned

  • uv pip install of a project versioned by setuptools-scm fails from a git archive tree (no .git). Prefix the setup with env SETUPTOOLS_SCM_PRETEND_VERSION=<version>; shlex.split keeps it one command.
  • Projects whose addopts turn on xdist (--numprocesses=auto) need -n0 in the test command. -p no:xdist makes pytest reject the addopts.
  • duckdb 2.0 (2026-10-21) has many downstream fixes, but most laid-over tests contain the fix (fetchall(), con.sql) or a docstring stating the cause. Its novel changes (an open result owns the connection, a plain string in an expression is a value) are the ones worth mining.
  • python-dateutil 3.0 (2026-10-21) and 4.0 (2026-11-01) are new, but few downstream projects have upgraded yet, because botocore caps dateutil below 3.
  • GitHub search with several bare words (dateutil fold gap) returns noise. Quoted phrases plus in:title work better, and issue search finds reporter analyses that point at the fix PR.
  • Worktree isolation refuses for loops over gh and sleep-then-read. Put loops in a .scratch/ helper and use background runs.

🤖 Generated with Claude Code

https://claude.ai/code/session_01Qc1CQTb8r67J32HpkhS43y

ZachFara and others added 4 commits November 8, 2026 15:40
MIT-618: verified in containers, fails at the base on click 8.5.0, passes
with the fix, and the base passes on click 8.4.2.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Qc1CQTb8r67J32HpkhS43y
MIT-618: the pip-tools task's cause words include the Click version
"8.5", which grading v2 never counts toward cause_right; its other cause
words, "unset" and "sentinel", are not versions.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Qc1CQTb8r67J32HpkhS43y
MIT-618: bare "unset" is also what a symptom-only fix says ("skip
options left unset"). The cause words are now "sentinel", phrases about
the option's default staying unset, "`unset" for UNSET written as code,
and "8.5". The record's comment says why, and that the issue the test
cites states the cause while eval sessions have no web tools.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Qc1CQTb8r67J32HpkhS43y
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