Skip to content

refactor(schema): generate task schema from mise schema#9581

Merged
jdx merged 8 commits intojdx:mainfrom
risu729:codex/schema-task-generation
May 5, 2026
Merged

refactor(schema): generate task schema from mise schema#9581
jdx merged 8 commits intojdx:mainfrom
risu729:codex/schema-task-generation

Conversation

@risu729
Copy link
Copy Markdown
Contributor

@risu729 risu729 commented May 3, 2026

Summary

  • Generate schema/mise-task.json entirely from schema/mise.json in xtasks/render/schema.ts.
  • Crawl transitive $defs references when building the task-only schema so missing refs fail during generation/AJV validation.
  • Mark schema/mise-task.json as generated, and move schema formatting/validation into hk.pkl while keeping render:schema output formatter-clean.

Test plan

  • mise run render:schema
  • hk check schema/mise.json schema/mise-task.json schema/miserc.json
  • mise task info lint-fix --json

This PR was generated by an AI coding assistant.

@gemini-code-assist
Copy link
Copy Markdown
Contributor

Warning

You have reached your daily quota limit. Please wait up to 24 hours and I will start processing your requests again!

@greptile-apps
Copy link
Copy Markdown
Contributor

greptile-apps Bot commented May 3, 2026

Greptile Summary

This PR refactors schema/mise-task.json to be fully generated from schema/mise.json rather than partially hand-maintained. It adds a crawlReferencedDefs BFS traversal in xtasks/render/schema.ts to collect the transitive closure of all $defs reachable from the task root, replaces subprocess-based formatting (jq + prettier child processes) with inline JSON.stringify(value, null, 2), and moves schema validation/formatting into hk.pkl as a first-class linter step.

  • xtasks/render/schema.ts: removes child_process usage; adds buildTaskSchema + crawlReferencedDefs to generate mise-task.json from mise.json with full transitive-ref crawling; writeFormattedJson now writes properly indented JSON directly.
  • hk.pkl: moves the schema linter to the top of the map, adds a fix step (jq . + ajv compile), and adds depends = List("schema") to the prettier linter so prettier always runs after schema formatting during hk fix.
  • schema/mise-task.json and .gitattributes: file is now marked as linguist-generated and its content is fully derived from mise.json.

Confidence Score: 5/5

Safe to merge — the change replaces fragile subprocess-based schema generation with a deterministic in-process BFS crawl, and all previously raised concerns are addressed in this revision.

The crawlReferencedDefs BFS correctly discovers the full transitive closure of all ref entries before writing the schema. writeFormattedJson produces indented output that prettier can round-trip without modification. The schema linter is ordered before prettier in hk.pkl with an explicit depends edge, so hk fix formats with jq first and prettier second, leaving files in a consistent prettier-formatted state. No dangling refs, no silent data loss, and no behavioral regression in existing tooling.

No files require special attention.

Reviews (10): Last reviewed commit: "Merge branch 'main' into codex/schema-ta..." | Re-trigger Greptile

Comment thread xtasks/render/schema.ts Outdated
Comment thread xtasks/render/schema.ts Outdated
Comment thread xtasks/render/schema.ts Outdated
Comment thread xtasks/render/schema.ts
Comment thread xtasks/lint-fix.sh
Copy link
Copy Markdown
Contributor Author

risu729 commented May 4, 2026

For the Greptile note on wait_for=["render"]: I verified render is a registered task. mise task info render --json reports it from tasks.toml with description Run all render tasks and depends: ["render:*"]; mise task info lint-fix --json reports wait_for: ["render"]. This matches the requested behavior for lint-fix to wait for the full render task, not only render:schema.

This comment was generated by an AI coding assistant.

@risu729 risu729 force-pushed the codex/schema-task-generation branch from 2f0cd6a to 1c6839b Compare May 5, 2026 07:53
@risu729
Copy link
Copy Markdown
Contributor Author

risu729 commented May 5, 2026

CI finished on 1c6839b8. The remaining failures look unrelated to this schema PR:

  • e2e-0: shell/test_xonsh
  • e2e-3: cli/test_activate_multiple_xonsh, sync/test_sync_python_uv
  • e2e-4: cli/test_deactivate_xonsh (cli/test_tool_depends appeared on the first attempt only; the final retry did not fail there)
  • test-ci: aggregate failure from the e2e shards

The persistent failures all fail while installing aqua:astral-sh/uv@latest, before the test assertions, with GitHub artifact attestation verification failing because the expected astral-sh/uv/.github/workflows/release.yml provenance/certificate is missing. The PR diff is limited to .gitattributes, hk.pkl schema fix formatting, and xtasks/render/schema.ts schema generation.

Greptile reviewed the current head and passed with no actionable findings. The earlier wait_for comment is superseded; xtasks wait_for changes are no longer in this branch.

This comment was generated by an AI coding assistant.

Comment thread hk.pkl Outdated
@risu729 risu729 force-pushed the codex/schema-task-generation branch from b39b9f6 to d0aa036 Compare May 5, 2026 12:54
@risu729

This comment was marked as outdated.

@risu729 risu729 marked this pull request as ready for review May 5, 2026 19:11
@jdx jdx merged commit 1ee3fab into jdx:main May 5, 2026
34 checks passed
@risu729 risu729 deleted the codex/schema-task-generation branch May 5, 2026 20:17
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