Skip to content

refactor(schema): reuse plugin script config#9647

Merged
jdx merged 1 commit intojdx:mainfrom
risu729:codex/schema-plugin-script-def
May 7, 2026
Merged

refactor(schema): reuse plugin script config#9647
jdx merged 1 commit intojdx:mainfrom
risu729:codex/schema-plugin-script-def

Conversation

@risu729
Copy link
Copy Markdown
Contributor

@risu729 risu729 commented May 6, 2026

Why

#9582 lets us safely reuse schema fragments through applicators and unevaluatedProperties. That makes duplicated object definitions more expensive to keep around: every duplicate has to be kept in sync when Tombi behavior, draft 2020-12 structure, or plugin-script fields change.

The plugin schema had the same script config shape repeated for list-bin-paths and exec-env. Reusing one definition makes those script hooks share the same validation contract, so future schema changes do not accidentally update one hook but not the other.

What changed

  • Adds a shared plugin script config definition for script hooks that support cache-key.
  • Reuses it from both list-bin-paths and exec-env.
  • Preserves the existing accepted properties and closed-object behavior.

Validation

  • jq empty schema/mise.plugin.json
  • git diff --check

This PR was generated by an AI coding assistant.

@greptile-apps
Copy link
Copy Markdown
Contributor

greptile-apps Bot commented May 6, 2026

Greptile Summary

This PR refactors schema/mise.plugin.json to eliminate duplicated inline schema definitions for list-bin-paths and exec-env by introducing a shared $defs.plugin-script-config entry, then referencing it via $ref.

  • A new $defs.plugin-script-config object schema (with unevaluatedProperties: false and a cache-key array property) is added at the top level.
  • Both list-bin-paths and exec-env now use "$ref": "#/$defs/plugin-script-config" instead of repeating the inline definition. As a side effect, this also corrects a copy-paste error in the old list-bin-paths cache-key description that incorrectly referenced bin/exec-env.

Confidence Score: 5/5

This is a safe, purely structural refactor of a JSON Schema file with no runtime logic changes.

The change only affects schema/mise.plugin.json, replacing two identical inline object definitions with a shared $defs entry. The resulting schema is semantically equivalent to the original for both properties, the $ref usage is valid per JSON Schema 2020-12 (which the file already declares), and the only behavioral difference is fixing a stale copy-paste error in a description string.

No files require special attention.

Reviews (4): Last reviewed commit: "refactor(schema): reuse plugin script co..." | Re-trigger Greptile

Copy link
Copy Markdown
Contributor

@gemini-code-assist gemini-code-assist Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request updates the JSON schemas to use "unevaluatedProperties: false" instead of "additionalProperties: false", taking advantage of a fix in Tombi v0.9.19. It refactors task definitions in "mise.json" and "mise-task.json" to use a shared "task_props" definition via "allOf" and "$ref". The schema generation script in "xtasks/render/schema.ts" was also updated. A critical issue was identified in "schema/mise.json" where "task_props" is referenced but not defined in the "$defs" section, which will cause validation failures.

Comment thread schema/mise.json
@risu729 risu729 marked this pull request as draft May 6, 2026 13:21
@risu729

This comment was marked as outdated.

@risu729 risu729 force-pushed the codex/schema-plugin-script-def branch from 55a640f to 808a9bb Compare May 6, 2026 23:44
@risu729 risu729 marked this pull request as ready for review May 6, 2026 23:50
@jdx jdx merged commit 4275951 into jdx:main May 7, 2026
35 checks passed
@risu729 risu729 deleted the codex/schema-plugin-script-def branch May 7, 2026 00:34
mise-en-dev added a commit that referenced this pull request May 7, 2026
### 🚀 Features

- **(aqua)** support registry libc variants by @jdx in
[#9652](#9652)
- **(bin-paths)** add executable names output by @risu729 in
[#9617](#9617)

### 🐛 Bug Fixes

- **(aqua)** preserve configured file extensions by @risu729 in
[#9611](#9611)
- **(aqua)** support registry file links by @risu729 in
[#9610](#9610)
- **(backend)** reject bare package backend names by @risu729 in
[#9608](#9608)
- **(backend)** apply inline tool option overrides by @risu729 in
[#9306](#9306)
- **(backend)** skip versions host for local tool opts by @risu729 in
[#9568](#9568)
- **(github)** chmod explicit archive bin by @risu729 in
[#9609](#9609)
- **(install)** skip remote-versions refresh in prefer-offline mode by
@jdx in [#9627](#9627)
- **(lock)** scope targets to active project root by @risu729 in
[#9319](#9319)
- **(lockfile)** respect existing platforms during auto-lock by @jdx in
[#9621](#9621)
- **(pipx)** filter yanked pypi releases by @risu729 in
[#9607](#9607)
- **(pipx)** declare python as a backend dependency by @jdx in
[#9678](#9678)
- **(schema)** update refs to $defs in mise-registry-tool.json by
@risu729 in [#9671](#9671)
- **(task)** terminate parallel siblings on failure via process groups
by @jdx in [#9655](#9655)
- **(task)** stable MISE_PROJECT_ROOT for monorepo tasks, add
MISE_MONOREPO_ROOT by @jdx in
[#9657](#9657)
- **(trust)** run enter hooks after trusting config by @risu729 in
[#9634](#9634)
- **(ui)** stop clearing screen for prompts by @jdx in
[#9619](#9619)
- use /bin/cp on macos by @pdehlke in
[#9656](#9656)

### 🚜 Refactor

- **(aqua)** store aqua var defaults as strings by @risu729 in
[#9645](#9645)
- **(config)** support structured TOML values in registry backend
options by @risu729 in [#9584](#9584)
- **(deps)** remove serde_derive dependency by @risu729 in
[#9670](#9670)
- **(deps)** remove anyhow dependency by @risu729 in
[#9661](#9661)
- **(deps)** use std::sync::LazyLock instead of once_cell::Lazy by
@risu729 in [#9668](#9668)
- **(schema)** generate task schema from mise schema by @risu729 in
[#9581](#9581)
- **(schema)** reuse task props with unevaluatedProperties by @risu729
in [#9582](#9582)
- **(schema)** reuse registry common types by @risu729 in
[#9648](#9648)
- **(schema)** reuse plugin script config by @risu729 in
[#9647](#9647)
- **(schema)** use $defs in schema files by @risu729 in
[#9646](#9646)

### 📚 Documentation

- **(node)** add tips for enabling node idiomatic by @fu050409 in
[#9675](#9675)

### 🧪 Testing

- **(cli)** remove nondeterministic tool depends assertion by @risu729
in [#9633](#9633)
- **(e2e)** pin uv to 0.11.8 around astral-sh/uv#19278 by @jdx in
[#9618](#9618)
- **(e2e)** wait for docker env cleanup by @risu729 in
[#9631](#9631)
- **(zig)** use official zig instead of mach mirror by @jdx in
[#9659](#9659)

### 📦️ Dependency Updates

- fall through to hash check when providers have no outputs by @jdx in
[#9622](#9622)
- bump Cargo.lock by @jdx in
[#9625](#9625)

### 📦 Registry

- remove registry depends by @risu729 in
[#9571](#9571)
- add code-review-graph (pipx:code-review-graph) by @chautruonglong in
[#9673](#9673)

### Chore

- **(ci)** split large registry test-tool changes by @risu729 in
[#9628](#9628)
- **(ci)** make perf script robust to runner noise by @jdx in
[#9635](#9635)
- **(ci)** skip hyperfine comments without permission by @risu729 in
[#9629](#9629)

### New Contributors

- @chautruonglong made their first contribution in
[#9673](#9673)
- @pdehlke made their first contribution in
[#9656](#9656)

## 📦 Aqua Registry Updates

### New Packages (5)

-
[`anthropics/anthropic-cli`](https://github.com/anthropics/anthropic-cli)
- [`crates.io/wasmi_cli`](https://github.com/wasmi-labs/wasmi)
- [`openclaw/gogcli`](https://github.com/openclaw/gogcli)
- `racket-lang.org/racket-minimal`
- [`runs-on/cli`](https://github.com/runs-on/cli)

### Updated Packages (13)

- [`UpCloudLtd/upcloud-cli`](https://github.com/UpCloudLtd/upcloud-cli)
- [`aristocratos/btop`](https://github.com/aristocratos/btop)
- [`dprint/dprint`](https://github.com/dprint/dprint)
- [`j178/prek`](https://github.com/j178/prek)
- [`jdx/hk`](https://github.com/jdx/hk)
- [`jdx/mise`](https://github.com/jdx/mise)
- [`jdx/usage`](https://github.com/jdx/usage)
- [`jreleaser/jreleaser`](https://github.com/jreleaser/jreleaser)
-
[`jreleaser/jreleaser/standalone`](https://github.com/jreleaser/jreleaser)
- [`pnpm/pnpm`](https://github.com/pnpm/pnpm)
- [`suzuki-shunsuke/cmdx`](https://github.com/suzuki-shunsuke/cmdx)
- [`suzuki-shunsuke/ghir`](https://github.com/suzuki-shunsuke/ghir)
- [`twpayne/chezmoi`](https://github.com/twpayne/chezmoi)
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