Skip to content

fix(config): deprecate experimental monorepo root key - #11052

Merged
jdx merged 3 commits into
jdx:mainfrom
risu729:codex-20260717-001556-a1c6f7
Jul 16, 2026
Merged

jdx merged 3 commits into
jdx:mainfrom
risu729:codex-20260717-001556-a1c6f7

Conversation

@risu729

@risu729 risu729 commented Jul 16, 2026 •

Copy link
Copy Markdown
Contributor

Summary

  • deprecate experimental_monorepo_root immediately and schedule removal for 2027.12.0
  • retain compatibility by normalizing the legacy key into monorepo_root during deserialization
  • prefer the canonical key when both spellings are configured

Why

Monorepo support graduated from experimental in June 2026, but the old configuration key remained a silent compatibility alias. Since the old key was explicitly experimental, it can begin warning immediately while retaining compatibility until December 2027.

Review notes

Deprecation warnings intentionally deduplicate globally by deprecation ID. The warning signals that the legacy key must be migrated; it is not intended to enumerate every config file containing it. Emitting it once also avoids warning spam when mise loads many config files.

Performance

This does not parse TOML a second time. It adds one optional boolean field and normalizes it during the existing config deserialization path, so canonical configurations have only a negligible branch at load time and no recurring runtime cost.

Validation

  • mise run lint-fix
  • mise run test:e2e e2e/tasks/test_task_monorepo_validation
  • git diff --check

Summary by CodeRabbit

  • Bug Fixes
    • Improved compatibility with legacy configuration files that use experimental_monorepo_root.
    • When experimental_monorepo_root is detected, the system now shows a deprecation notice.
    • If monorepo_root is not set, the legacy value is migrated into monorepo_root without overriding any explicitly configured setting.

@coderabbitai

coderabbitai Bot commented Jul 16, 2026 •

Copy link
Copy Markdown
Contributor

Review Change Stack

Warning

Review limit reached

@risu729, you've reached your PR review limit, so we couldn't start this review.

Next review available in: 33 minutes

Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available.
You're only billed for reviews past your plan's rate limits ($0.25/file).

How can I continue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews.

How do review limits work?

CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability.

For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window.

Please refer docs for additional details.

Review details
⚙️ Run configuration

Configuration used: Central YAML (base), Organization UI (inherited)

Review profile: CHILL

Plan: Pro Plus

Run ID: c8797edb-f826-4e10-a453-ae46bb3c2fb0

📥 Commits

Reviewing files that changed from the base of the PR and between 086b8f3 and 203c19b.

📒 Files selected for processing (1)
  • src/config/config_file/mise_toml.rs
📝 Walkthrough

Walkthrough

MiseToml separately models experimental_monorepo_root, warns when parsing it, maps it to monorepo_root when unset, and preserves it during cloning.

Changes

Legacy monorepo root support

Layer / File(s) Summary
Legacy field contract
src/config/config_file/mise_toml.rs
Defines experimental_monorepo_root as a separate field from monorepo_root.
Parsing and clone behavior
src/config/config_file/mise_toml.rs
Warns on the legacy field, maps it when monorepo_root is unset, consumes it, and copies it during cloning.

Estimated code review effort: 2 (Simple) | ~10 minutes

Poem

I’m a bunny with a config to tune,
Guiding old roots beneath the moon.
A warning hops, the values align,
Cloned fields follow the same design.
Legacy paths now know their way—
Carrot-powered parsing saves the day!

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
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.
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly matches the main change: deprecating the experimental monorepo root config key.

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@greptile-apps

greptile-apps Bot commented Jul 16, 2026 •

Copy link
Copy Markdown
Contributor

Greptile Summary

This PR deprecates the experimental_monorepo_root config key by replacing the serde alias with an explicit field and a post-deserialization migration step. The legacy key is normalized into monorepo_root during parsing (with get_or_insert so an explicit monorepo_root always wins), and a deprecated_at! warning fires immediately for any config file that still uses the old key.

  • Deserialization and migration logic are correct: both the single-key and dual-key cases behave as intended.
  • The remove_at date in the macro (2027.12.0) does not match the removal date stated in the PR description (2027.7.7); the user-facing "This will be removed in mise …" message will reflect whichever value is in the code.
  • The e2e test comment still calls the key a "hidden compatibility alias", which is no longer accurate now that a deprecation warning is emitted.

Confidence Score: 5/5

The change is safe to merge; it replaces a serde alias with an explicit field and a trivially correct migration step, with no behavioral change for configs that already use monorepo_root.

The core migration logic (get_or_insert, take, deprecated_at!) is correct for all combinations of old/new key presence. The only issues are a date mismatch between the PR description and the remove_at argument, and a stale comment in the e2e test.

The remove_at date discrepancy in src/config/config_file/mise_toml.rs is the only item worth a second look before merge.

Important Files Changed

Filename Overview
src/config/config_file/mise_toml.rs Replaces the serde alias with an explicit field plus a post-deserialization migration step; logic is correct, but the PR description advertises removal in 2027.7.7 while the code specifies 2027.12.0
e2e/tasks/test_task_monorepo_validation Adds a test case for the legacy key compatibility; comment on line 26 describes the key as a "hidden compatibility alias" but it now emits a deprecation warning

Reviews (3): Last reviewed commit: "fix(config): extend experimental key rem..." | Re-trigger Greptile

Comment thread src/config/config_file/mise_toml.rs Resolved
Comment thread src/config/config_file/mise_toml.rs Resolved
@risu729
risu729 marked this pull request as ready for review July 16, 2026 14:55
@jdx
jdx merged commit 33440d6 into jdx:main Jul 16, 2026
33 checks passed
@risu729
risu729 deleted the codex-20260717-001556-a1c6f7 branch July 16, 2026 20:13
This was referenced Jul 16, 2026
@coderabbitai coderabbitai Bot mentioned this pull request Aug 20, 2026
17 of 22 tasks
scottschreckengaust added a commit to aws-samples/sample-autonomous-cloud-coding-agents that referenced this pull request Sep 14, 2026
…ver published

The `monorepo_root` key first landed in the 2026.7.9 tag (jdx/mise#11052),
but 2026.7.8, 2026.7.9, and 2026.7.10 were tagged and never published to the
release/install channels (release-pipeline issue); their changes shipped in
2026.7.11 (published 2026-07-20). Pinning the floor to a version nobody can
`mise use`/install would just trade a warning for an unsatisfiable requirement,
so raise it to 2026.7.11 — the first *installable* release that recognizes
`monorepo_root`.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
ClintEastman02 pushed a commit to ClintEastman02/sample-autonomous-cloud-coding-agents that referenced this pull request Sep 15, 2026
…t key (aws-samples#888)

* fix(tooling): bump mise min_version to 2026.7.9 for the monorepo_root key

PR aws-samples#874 renamed `experimental_monorepo_root` -> `monorepo_root`, but that
key did not exist until mise 2026.7.9 (jdx/mise#11052, 2026-07-16). Any
contributor on `2026.2.6 <= mise < 2026.7.9` therefore got a per-prompt
`unknown field: monorepo_root` warning. Raise the floor to match the config
the repo actually requires, turning a silent warning into a clear upgrade gate.

Closes aws-samples#887

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

* fix(tooling): raise child mise.toml floors to 2026.7.9 for consistency

The four workspace configs (cdk/agent/cli/docs) declare the same
`min_version` floor as the root and are meant to move together. Keep all
five uniform at 2026.7.9 so the monorepo presents one coherent floor.

Refs aws-samples#887

* fix(tooling): correct floor to 2026.7.11 — 2026.7.8–2026.7.10 were never published

The `monorepo_root` key first landed in the 2026.7.9 tag (jdx/mise#11052),
but 2026.7.8, 2026.7.9, and 2026.7.10 were tagged and never published to the
release/install channels (release-pipeline issue); their changes shipped in
2026.7.11 (published 2026-07-20). Pinning the floor to a version nobody can
`mise use`/install would just trade a warning for an unsatisfiable requirement,
so raise it to 2026.7.11 — the first *installable* release that recognizes
`monorepo_root`.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

---------

Co-authored-by: scottschreckengaust <345885+scottschreckengaust@users.noreply.github.com>
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
Co-authored-by: ayushtr-aws <ayushtr@amazon.com>
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.

2 participants