fix(tasks): respect env precedence for task config#9039
Conversation
Greptile SummaryThis PR adds an e2e test covering The fix is logically sound:
Confidence Score: 5/5Safe to merge — the fix correctly removes double-reversal, the test validates the intended semantics, and CI will pass with both changes included. All findings are P2 (optional inverse-direction test coverage). The core fix is logically correct: DEFAULT_CONFIG_FILENAMES appends envs in MISE_ENV order so .rev() in configs_at_root already places highest-precedence first; removing the three .rev().find_map() chains eliminates the inadvertent double-reversal. No P0/P1 issues found. No files require special attention. Important Files Changed
Flowchart%%{init: {'theme': 'neutral'}}%%
flowchart TD
A["configs_at_root(dir)"] -->|"DEFAULT_CONFIG_FILENAMES.iter().rev()"| B["configs ordered: highest-precedence first\ne.g. [mise.ci.toml, mise.prod.toml, mise.toml]"]
B --> C{"task_includes_for_dir"}
C -->|"configs.iter().find_map()"| D["First match = mise.ci.toml\n(task_config.includes = ['ci-tasks'])"]
D --> E["Only ci-tasks resolved\nprod-tasks ignored"]
B --> F{"load_tasks_in_dir"}
F -->|"configs.iter().find_map()"| G["First match = mise.ci.toml\n(git includes, task_config.dir)"]
G --> H["ci-work dir used\nfor all file tasks"]
style D fill:#d4edda
style E fill:#d4edda
style G fill:#d4edda
style H fill:#d4edda
Reviews (2): Last reviewed commit: "fix(tasks): respect env precedence for t..." | Re-trigger Greptile |
There was a problem hiding this comment.
Code Review
This pull request introduces an end-to-end test to verify the precedence of environment-specific task configurations in mise. The test ensures that when multiple environments are active, task inclusions from the higher-precedence environment are correctly prioritized. I have no feedback to provide.
### 🐛 Bug Fixes - **(docs)** upgrade esbuild to 0.28.0 with es2022 build target by @jdx in [#9047](#9047) - **(env)** skip tools=true module hooks in dependency_env by @jdx in [#9011](#9011) - **(lockfile)** resolve SLSA provenance URLs deterministically for all platforms by @cameronbrill in [#8982](#8982) - **(registry)** test of docuum in registry by @jylenhof in [#8996](#8996) - **(release)** publish extracted mise.exe alongside Windows zip by @zeitlinger in [#8997](#8997) - **(schema)** add missing config fields by @risu729 in [#9044](#9044) - **(task)** support sandbox fields in task templates by @risu729 in [#9046](#9046) - **(tasks)** respect env precedence for task config by @risu729 in [#9039](#9039) - prevent implicit enabling of `self_update` when rustls features are enabled by @salim-b in [#9040](#9040) - allow installing bun and others when downloads folder is on a different mount by @bgeron in [#9032](#9032) ### 📚 Documentation - discourage direnv compatibility PRs and remove issue suggestions by @jdx in [ca78346](ca78346) - tighten direnv compatibility language by @jdx in [ab140c8](ab140c8) - add Tera tip for unsupported version files by @risu729 in [#9048](#9048) ### 📦️ Dependency Updates - update ghcr.io/jdx/mise:deb docker digest to 49fa8a4 by @renovate[bot] in [#8999](#8999) - update ghcr.io/jdx/mise:copr docker digest to 61ba7b6 by @renovate[bot] in [#8998](#8998) - update ghcr.io/jdx/mise:copr docker digest to fa351ff by @renovate[bot] in [#9002](#9002) - update ghcr.io/jdx/mise:alpine docker digest to f3bb475 by @renovate[bot] in [#9001](#9001) - update ghcr.io/jdx/mise:rpm docker digest to d45af2d by @renovate[bot] in [#9005](#9005) - update ghcr.io/jdx/mise:deb docker digest to d7463ac by @renovate[bot] in [#9004](#9004) - update jdx/mise-action digest to 5228313 by @renovate[bot] in [#9007](#9007) - update rust docker digest to e8e2bb5 by @renovate[bot] in [#9008](#9008) - update taiki-e/install-action digest to 97a5807 by @renovate[bot] in [#9010](#9010) - update autofix-ci/action action to v1.3.3 by @renovate[bot] in [#9015](#9015) - update ubuntu:24.04 docker digest to 84e77de by @renovate[bot] in [#9012](#9012) - update actions/checkout action to v4.3.1 by @renovate[bot] in [#9014](#9014) - update ubuntu:26.04 docker digest to cc925e5 by @renovate[bot] in [#9013](#9013) - update rust crate tokio to v1.51.1 by @renovate[bot] in [#9018](#9018) - update rust crate zip to v8.5.1 by @renovate[bot] in [#9019](#9019) - update rust crate ctor to 0.9 by @renovate[bot] in [#9024](#9024) - update ubuntu docker tag to resolute-20260404 by @renovate[bot] in [#9020](#9020) - update dependency vitepress-plugin-tabs to ^0.8.0 by @renovate[bot] in [#9023](#9023) - update rust crate indexmap to v2.14.0 by @renovate[bot] in [#9025](#9025) - update rust crate nix to 0.31 by @renovate[bot] in [#9030](#9030) - update taiki-e/install-action digest to 7a4939c by @renovate[bot] in [#9027](#9027) - update dependency esbuild to v0.28.0 by @renovate[bot] in [#9022](#9022) - update rust crate rand to 0.10 by @renovate[bot] in [#9031](#9031) - update rust crate digest to 0.11.0 by @renovate[bot] in [#9028](#9028) - update rust crate confique to 0.4 by @renovate[bot] in [#9026](#9026) - update rust crate rattler to 0.40 by @renovate[bot] in [#9034](#9034) - lock file maintenance by @renovate[bot] in [#8416](#8416) - disable renovate for aws-config/aws-sdk-* crates by @jdx in [#9052](#9052) - update swatinem/rust-cache digest to e18b497 by @renovate[bot] in [#9009](#9009) ### 📦 Registry - remove broken tool tests by @jdx in [#9017](#9017) - update granted aqua backend repo by @risu729 in [#9033](#9033) - fix atlas-community test expected output by @jdx in [#9054](#9054) ### Chore - use deprecated_at! macro for ubi backend deprecation by @jdx in [#9049](#9049) ### Security - **(ci)** run test-tool inside Docker container by @jdx in [#9055](#9055) - **(ci)** avoid exposing MISE_GH_TOKEN to test-tool scripts by @jdx in [#9053](#9053) ### New Contributors - @bgeron made their first contribution in [#9032](#9032) - @salim-b made their first contribution in [#9040](#9040) ## 📦 Aqua Registry Updates #### Updated Packages (2) - [`cloudnative-pg/cloudnative-pg/kubectl-cnpg`](https://github.com/cloudnative-pg/cloudnative-pg/kubectl-cnpg) - [`gleam-lang/gleam`](https://github.com/gleam-lang/gleam)
Summary
Fixes
task_configprecedence when multipleMISE_ENVvalues are active.configs_at_rootreturns config files highest-precedence first, but the task include resolver reversed that list before selecting the first explicittask_config.includes. WithMISE_ENV=prod,ci, that mademise.prod.tomlwin overmise.ci.toml, contrary to the documented last-env-wins behavior.The fix applies the same precedence order to local includes, remote
git::includes, andtask_config.dirselection. The e2e test now covers both include replacement anddirprecedence.Verification
cargo buildcargo fmt --checkgit diff --checke2e/run_test tasks/test_task_includes_env_precedencee2e/run_test config/test_config_enve2e/run_test env/test_env_profilese2e/run_test tasks/test_task_mise_env_profiles