Skip to content

[Triage] cache-tasks depends on lm_eval.tasks.get_task_dict, deprecated in lm-eval 0.4.12+, with the declared cap at <1.0.0 (CR-A15-062) #824

Open

Description

@cemililik

Needs triage. Reviewers disagreed on this finding, so it is not counted in the backlog. Decide whether it is a real defect: if yes, set severity and wave; if not, close it with the reason.

CR-A15-062 — cache-tasks depends on lm_eval.tasks.get_task_dict, deprecated in lm-eval 0.4.12+, with the declared cap at <1.0.0

severity Low · confidence disputed · single reviewer · not reproduced (code trace)

What happens. In lm-eval 0.4.13 (2026-08-31), get_task_dict is wrapped in @​deprecated('Use TaskManager.load() instead'). The 0.4.12 release notes call it, together with load_task_or_group, a 'deprecated shim' returning the legacy nested shape. TaskManager.load now returns a flat {tasks, groups} dict. Each call emits a DeprecationWarning, and the shim can be removed in a later 0.x or 0.5 release, which the <1.0.0 cap still allows. The Task and ConfigurableGroup shapes also moved (ConfigurableGroup is now a deprecated wrapper), and _prepare_one_task's duck-typing of .dataset was written against the old shape. The eval extra declares lm-eval>=0.4.4, but 0.4.4 through 0.4.8 construct tasks with datasets.load_dataset(..., trust_remote_code=...), which datasets>=4 (core floor 4.7.0) no longer accepts. Whether the floor combination works was not tested.

Where.

Evidence.

  • lm-eval v0.4.13 lm_eval/tasks/init.py:136 '@​deprecated("get_task_dict is deprecated. Use TaskManager.load() instead.")'. GitHub release v0.4.12 body (TaskManager refactor). PyPI requires_dist: 0.4.9.1 pins datasets<4.0; 0.4.4 to 0.4.8 only require datasets>=2.16.0.

Recommended fix. Prefer TaskManager().load(...) where available, with the legacy path as a fallback. Raise the eval floor to a release known to work with datasets>=4, and add a CI job against lm-eval latest.


Found by the October 2026 ForgeLM code and documentation review against commit cab2947. Code links point at that commit; line numbers may have moved since. Finding IDs (CR-…, DOC-…, TECH-…) are stable references for this backlog.

Activity

  1. added
    bugSomething isn't working
    needs-triageNot triaged yet: every new issue starts with it; only a maintainer removes it
    source: review-2026-10Found by the October 2026 code and documentation review
    on Oct 9, 2026
  2. cemililik commented on Oct 20, 2026

    @cemililik
    CollaboratorAuthor

    Confirmed in part. get_task_dict is deprecated upstream (decorated with @deprecated at lm_eval/tasks/init.py:136 in v0.4.13; the v0.4.12 notes call it a shim) and cache-tasks still calls it at forgelm/cli/subcommands/_cache.py:454.

    It works today, and the command already fails with an error and an audit event if the returned shape cannot be walked, so this is technology currency rather than a live bug.

    The fix is to prefer TaskManager.load() and keep the legacy call only as a fallback, or to raise the eval floor to 0.4.12; that depends on the floor decision in #527. The same item appears as TECH-T05-010 in #120; this issue stays open as the focused one for the migration.

    Triage result: dependencies, area: operator-cmds, urgency: next-release, wave: 2 (the bug label is removed: nothing is broken yet).

    Triage round 1, checked against development on 2026-10-20.

  3. added
    dependenciesDependency or ecosystem currency
    urgency: next-releaseTechnology currency: fix in the next release
    wave: 2Roadmap wave 2: high severity, larger effort; next-release tech
    on Oct 20, 2026
  4. removed
    needs-triageNot triaged yet: every new issue starts with it; only a maintainer removes it
    on Oct 20, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    area: operator-cmdsCode area: operator-cmdsdependenciesDependency or ecosystem currencysource: review-2026-10Found by the October 2026 code and documentation reviewurgency: next-releaseTechnology currency: fix in the next releasewave: 2Roadmap wave 2: high severity, larger effort; next-release tech

    Type

    No type

    Projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions