You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Fixes task template resolution for tasks defined in TOML files loaded through task_config.includes.
Tasks loaded from included tasks.toml files were parsed and rendered without receiving the collected task_templates map, so a task that only had extends = "template:..." could be loaded without the template's run entries and then exit successfully without doing anything.
Changes
Thread collected task templates through included task-file loading.
Resolve extends for included TOML tasks before rendering them.
Low Risk
Narrow change to task-loading plumbing with a regression e2e; fixes incorrect silent no-op runs, no auth or data-path impact.
Overview Fixes extends for tasks loaded from task_config.includes TOML files (e.g. tasks.toml), where templates were never applied so tasks could run with no run and succeed silently.
The collected task_templates map is now passed through load_file_tasks → load_tasks_includes → load_task_file, and resolve_task_template runs on included TOML tasks before rendering—the same path inline [tasks.*] entries already used. Monorepo subdirectory include loading gets the same threading.
An e2e case covers a template in mise.toml with a task in an included tasks.toml that extends it.
Reviewed by Cursor Bugbot for commit a56da5b. Bugbot is set up for automated code reviews on this repo. Configure here.
Summary by CodeRabbit
Tests
Added validation for task template definitions applied to tasks in included task configuration files.
Chores
Enhanced task template support in the configuration and file task loading pipeline.
This change extends task template support to tasks defined in included TOML files. Task templates are now passed through the entire file loading pipeline—from load_config_and_file_tasks through load_file_tasks and load_tasks_includes to load_task_file—where they are resolved before task rendering, enabling the extends keyword to work in included task definitions.
Changes
Task Template Support in Included Tasks
Layer / File(s)
Summary
E2E validation of task template support in includes e2e/tasks/test_task_templates
New test case validates that tasks in included tasks.toml files can extend templates defined in mise.toml by enabling experimental mode, creating a template, including a tasks.toml, and confirming the task runs with the template's behavior.
Task loading pipeline threading and template resolution src/config/mod.rs
Function signatures for task loading (load_file_tasks, load_tasks_includes, load_task_file) accept templates and forward them through the chain. load_task_file resolves task template extends before rendering. Monorepo subdirectory loading and per-directory task loading forward templates. Existing per-task-vars test updated to pass empty template map to satisfy new signatures.
Estimated code review effort
🎯 3 (Moderate) | ⏱️ ~20 minutes
Possibly related PRs
jdx/mise#10219: Intersects with the task-include TOML loading pipeline in load_tasks_includes and load_task_file, extending directory includes to load .toml files, which shares the same code paths being modified for template threading.
Poem
🐰 Templates flow through tasks so true,
From config down to files anew,
Extends now works in includes grand,
Where configs dance and tasks are planned! 🎯
🚥 Pre-merge checks | ✅ 4 | ❌ 1
❌ Failed checks (1 warning)
Check name
Status
Explanation
Resolution
Docstring Coverage
⚠️ Warning
Docstring coverage is 14.29% which is insufficient. The required threshold is 80.00%.
Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name
Status
Explanation
Description Check
✅ Passed
Check skipped - CodeRabbit’s high-level summary is enabled.
Linked Issues check
✅ Passed
Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check
✅ Passed
Check skipped because no linked issues were found for this pull request.
Title check
✅ Passed
The title clearly and concisely describes the main change: resolving task templates in included task files, which directly matches the PR's core objective.
✏️ Tip: You can configure your own custom pre-merge checks in the settings.
Comment @coderabbitai help to get the list of available commands and usage tips.
jdx
changed the title
[codex] fix included task template resolution
fix included task template resolution
Jun 11, 2026
Fixes silent no-op task runs when a task in an included tasks.toml uses extends to reference a template defined in mise.toml. The root cause was that load_task_file never received the collected task_templates map, so resolve_task_template was never called before render.
templates is now threaded through load_file_tasks → load_tasks_includes → load_task_file, and resolve_task_template is called on each TOML task before rendering — identical to the path already used for inline [tasks.*] entries.
The monorepo subdir no-config path (!found_config branch) also gets the fix, keeping parity across all task-loading entry points.
An e2e regression (assert_fail) confirms that the included task executes the template's run script and no longer exits silently.
Confidence Score: 5/5
Narrow plumbing change — adds a missing parameter to three call sites, no new logic, backed by a regression e2e that catches the original silent-exit behaviour.
The change is strictly additive: every call site that already had templates now forwards it further down the call chain, and the function signatures are updated in lock-step. The inline-task path already used resolve_task_template in exactly the same position, so the new call in load_task_file is a direct copy of proven code. The unit test for load_task_file is updated to pass IndexMap::new() (the correct empty-templates default). The e2e covers the exact reproduction scenario from the linked discussion.
No files require special attention.
Important Files Changed
Filename
Overview
src/config/mod.rs
Threads templates through load_file_tasks → load_tasks_includes → load_task_file and calls resolve_task_template on each TOML task before rendering, mirroring the existing inline-task path
e2e/tasks/test_task_templates
Adds a regression test verifying that a task in an included tasks.toml that extends a template actually executes the template's run (uses assert_fail to confirm non-silent execution)
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
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
Fixes task template resolution for tasks defined in TOML files loaded through
task_config.includes.Tasks loaded from included
tasks.tomlfiles were parsed and rendered without receiving the collectedtask_templatesmap, so a task that only hadextends = "template:..."could be loaded without the template'srunentries and then exit successfully without doing anything.Changes
extendsfor included TOML tasks before rendering them.Validation
mise run test:e2e e2e/tasks/test_task_templatesFixes #8779
Note
Low Risk
Narrow change to task-loading plumbing with a regression e2e; fixes incorrect silent no-op runs, no auth or data-path impact.
Overview
Fixes
extendsfor tasks loaded fromtask_config.includesTOML files (e.g.tasks.toml), where templates were never applied so tasks could run with norunand succeed silently.The collected
task_templatesmap is now passed throughload_file_tasks→load_tasks_includes→load_task_file, andresolve_task_templateruns on included TOML tasks before rendering—the same path inline[tasks.*]entries already used. Monorepo subdirectory include loading gets the same threading.An e2e case covers a template in
mise.tomlwith a task in an includedtasks.tomlthatextendsit.Reviewed by Cursor Bugbot for commit a56da5b. Bugbot is set up for automated code reviews on this repo. Configure here.
Summary by CodeRabbit
Tests
Chores