Repository navigation
Description
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.
Metadata
Metadata
Assignees
Labels
Type
Projects
- StatusShow more project fieldsTodo
Activity
cemililik commentedon Oct 20, 2026
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(thebuglabel is removed: nothing is broken yet).Triage round 1, checked against
developmenton 2026-10-20.