Skip to content

chore: tighten mise toolchain pins and task freshness - #109

Merged
flexdinesh merged 1 commit into
mainfrom
chore/mise-tightening
Oct 24, 2026
Merged

flexdinesh merged 1 commit into
mainfrom
chore/mise-tightening

Conversation

@flexdinesh

Copy link
Copy Markdown
Owner
  • Behavior owner and resulting change: mise.toml toolchain and task config.
    • mise.lock (linux-x64, macos-arm64) records checksums for go, node, pnpm, goreleaser, gh. mise-action installs with --locked automatically.
    • min_version = "2026.8.6" matches the CI pin. GOTOOLCHAIN=local stops Go from silently downloading a toolchain past the mise pin.
    • web:build, web:stage, build, plugins:build declare sources/outputs with content-hash freshness. Repeat check/pre-push runs skip unchanged builds; mise run --force rebuilds.
    • New deps task replaces raw pnpm install --frozen-lockfile in setup and in all 3 workflow steps.
    • Release file tasks pin gh (aqua:cli/cli@2.103.0) instead of relying on the runner's copy.
    • Removes the 35 MB diffx binary committed in refactor: move manual sync recovery into submission #91; /diffx is now ignored.
  • Contracts/invariants affected; local/remote implications: new test/contracts/toolchain.test.ts checks that the Dockerfile golang: tag matches the mise Go pin, and that every mise-action version: and the docs requirement match min_version. Runs locally via test:contracts:rules. No app behavior change.
  • Validation results; remaining risks:
    • mise run check passed; pre-push check:push passed.
    • Clean-data-dir mise install --locked installs all tools.
    • Builds skip when fresh. touch doesn't rebuild; a content change rebuilds web, stage and CLI in order. Staged assets match apps/web/dist. No generated drift.
    • Guard test fails on Dockerfile or CI version drift.
    • Risk: a source path missing from a task's globs can leave a stale local build. CI always builds fresh.
    • Linux arm64, macOS x64 and Windows have no lock entries; add them with mise lock --platform.
    • mise warns the lockfile uses format version 0 (mise lock --upgrade available); left as is.
  • Intentional architecture/design changes and rationale: mise owns dependency install and every tool pin, so pins can't drift between CI, Docker and docs. Documented in docs/development.md.
  • UI evidence: n/a.

- add mise.lock (linux-x64, macos-arm64); CI installs --locked
- require mise 2026.8.6 via min_version; GOTOOLCHAIN=local
- skip web:build, web:stage, build, plugins:build on unchanged sources (content hash)
- add deps task; setup and workflows use it
- pin gh for release file tasks
- contract test: Dockerfile Go, CI mise-action and docs match mise pins
- remove committed root diffx binary; ignore /diffx
@flexdinesh
flexdinesh merged commit 29915eb into main Oct 24, 2026
2 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