Skip to content

build(tooling): replace proto with mise and run moon on system binaries - #42

Merged
jmgilman merged 1 commit into
masterfrom
build/proto-to-mise
Jun 28, 2026
Merged

jmgilman merged 1 commit into
masterfrom
build/proto-to-mise

Conversation

@jmgilman

Copy link
Copy Markdown
Contributor

Summary

Replaces Proto tool management with mise, and configures Moon to run every
tool as a system binary that mise puts on PATH. This is PR1 of the
template-go-api session-015 tooling reproduction
(mise → melange/apko → SLSA
L3 reusable attest.yml → skills/docs).

  • mise.toml + committed mise.lock replace .prototools + .moon/proto/* +
    .envrc + .go-version.
  • All 11 pinned tools migrate with integrity enforcement intact: 10 verifying
    aqua: backends (golangci-lint, kubebuilder, setup-envtest, kubectl, helm,
    chainsaw, ko, tilt, ctlptl, kind) + moon; controller-gen uses the canonical
    Go backend (no aqua package exists). melange/apko/cosign are pinned now
    for the later container/release PRs.
  • settings.locked → mise install fails closed if a tool lacks a
    pre-resolved, checksummed entry for the current platform.
  • Moon runs on the system toolchain (toolchains.default: system;
    .moon/toolchains.yml declares no language toolchain). No task bodies changed
    — they already invoked tools directly with no proto run wrapper.
  • CI: moonrepo/setup-toolchain → jdx/mise-action in ci.yml and the Helm
    jobs of release.yml / release-dry-run.yml; cache keys key on mise.lock;
    GOTOOLCHAIN: local pinned on the CI job. setup-go reads go.mod (the
    removed .go-version).

Note: mise lock drops moon's macos-x64 entry (a known mise write quirk), so
it is hand-added in mise.lock from moon's published .sha256.

Testing

  • moon run root:check ✅ — go format, lint, generated/RBAC drift, Helm
    lint/template/install, Chainsaw manifests.
  • moon run root:test ✅ — envtest (k8s 1.35.x assets via the mise
    setup-envtest), controller + chart tests.
  • mise install runs fail-closed (locked = true) across linux-x64/arm64 +
    macos-x64/arm64.

🤖 Generated with Claude Code

Swap Proto (.prototools + .moon/proto/* + .envrc) for mise (mise.toml +
committed mise.lock). moon stays the task runner / CI gate but runs every tool
as a `system` binary that mise puts on PATH (toolchains.default: system in
moon.yml; .moon/toolchains.yml declares no language toolchain).

All 11 pinned tools migrate with integrity enforcement intact: 10 use verifying
aqua backends (golangci-lint, kubebuilder, setup-envtest, kubectl, helm,
chainsaw, ko, tilt, ctlptl, kind) plus moon; controller-gen ships no aqua
package and uses the canonical Go backend. melange/apko/cosign are pinned now so
the full toolset is locked in one place for the later container/release work.
`settings.locked` makes `mise install` fail closed when a tool lacks a
pre-resolved, checksummed entry for the current platform.

CI swaps moonrepo/setup-toolchain for jdx/mise-action (ci.yml plus the Helm jobs
in release.yml and release-dry-run.yml); cache keys key on mise.lock and the job
pins GOTOOLCHAIN=local. setup-go now reads go.mod instead of the removed
.go-version. README/AGENTS dev-setup instructions point at `mise install`.

Verified: `moon run root:check` and `moon run root:test` both green against the
mise-provisioned toolchain.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@jmgilman
jmgilman merged commit f708c83 into master Jun 28, 2026
6 checks passed
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.

1 participant