chore: clear the pre-existing mise run check failures - #34
Merged
Conversation
mise promoted `experimental_monorepo_root` to `monorepo_root` in 2026.7.7 and
now emits a deprecation warning on stderr for the old key, which tripped
`e2e/release/set-version.test.ts`'s `expect(stderr).toBe('')` assertion and
broke `mise run check`.
Rename the key and raise `min_version` to the release that promoted it, so the
config cannot be read by a mise too old to understand the new spelling. No
other `mise.toml` in the repo declares the key.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
`scoreHiddenTests` keys a scenario's held-out suite by scenario id, so the `build` scenario's suite must live at `scenarios/hidden/build/`. Two unanchored `build` ignore rules silently swallowed that directory, so the suite was authored but never tracked and never linted — leaving `build` the only scenario in `SCENARIOS` without an escaped-defect signal (`hiddenTests: null`). Negate both rules: `!packages/bench/scenarios/hidden/build/` in `.gitignore` beside the existing `!openspec/schemas/build/`, and `!packages/bench/scenarios/hidden/build` in `.oxlintrc.json`'s `ignorePatterns`, which otherwise made `oxlint <that file>` exit non-zero with "No files found to lint" under hk's staged-file lint step. The suite's four cases: a non-empty `scripts.build` field, `bun run build` exiting 0, `dist/index.js` existing, and the built bundle's `formatGreeting` behaving. All four fail against the unmodified `fixtures/build-script` fixture and pass after `REFERENCE_FIXES.build`, as `test/unit/hidden.test.ts` verifies in both directions. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
`mise install` rewriting `mise.lock` is only ever noticed by hand, and by then the lockfile has usually been stale across several commits. Add a step to the `ci-bun` job that runs `mise install` then `git diff --exit-code mise.lock`, so a `mise.toml` tool bump landed without a regenerated lockfile fails the PR instead of drifting silently. Verified in both directions locally: no-op on the unmodified checkout (zero diff lines), and exit 1 with 44 removed lockfile rows after bumping a pinned tool version in `mise.toml` without regenerating. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
docs/bench.md now names the concrete failure mode behind the missing `build` hidden suite — suite dirs are keyed by scenario id, and both `.gitignore` and `.oxlintrc.json` carry an unanchored `build` entry — so the next colliding scenario id is caught at authoring time rather than by a silently null `hiddenTests`. .agents/shared.md's Dependencies discipline now states that `mise.toml` tool pins are lockfile-backed and that CI gates on `mise.lock` drift; synced into CLAUDE.md and AGENTS.md via `mise run agents:sync`. No doc states a minimum mise version, so the `min_version` bump to 2026.7.7 needs no user-facing doc change. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
This PR clears three pre-existing
mise run checkfailures via threeself-hosted cospec changes (each authored, applied, and archived on this
branch).
1.
mise-monorepo-root-key(chore)Before: current-generation mise (2026.9.0 locally, and whatever
mise-action@v4.2.0resolves in CI) emits a deprecation warning forexperimental_monorepo_rooton every invocation. That warning lands onstderr, which fails
e2e/release/set-version.test.ts'sexpect(stderr).toBe('')assertion and makesmise run checkred on a cleancheckout.
Change: renamed
experimental_monorepo_root = truetomonorepo_root = truein the rootmise.toml— the only file that sets thekey.
min_versionbump rationale: raisedmin_versionfrom"2026.4.1"to"2026.7.7", the release where the key was promoted out of experimental, sothe config cannot be loaded by a mise version that doesn't understand the new
name. Both keys can't coexist as a transition shim: mise accepts the pair but
still warns for the deprecated one, so it had to be removed outright, which
makes the version floor load-bearing.
2.
bench-hidden-build-suite(test)Before:
packages/bench/test/unit/hidden.test.tsfailed becausepackages/bench/scenarios/hidden/build/didn't exist — the root.gitignore's unanchoredbuild/rule silently swallowed the suite when therest of the hidden suites landed, leaving
build(already specified bypackages/bench/scenarios/build.ts) as the one scenario with no held-outtests.
Change: added a
!packages/bench/scenarios/hidden/build/negation to.gitignore(alongside the existing!openspec/schemas/build/negation) sothe directory can be tracked at all, and added
packages/bench/scenarios/hidden/build/build.test.tswith 4 cases against thefixtures/build-scriptfixture (build exits 0,dist/index.jsis emitted,the built bundle still runs,
scripts.buildis present and non-empty). No newscenario behavior — this only backfills the escaped-defect signal for a
scenario that already existed.
3.
mise-lock-platform-rows(ci)Before: a reported
mise installrewrite ofmise.lock(~230 lines)could not be reproduced —
mise.toml/mise.lockwere last updated togetherin the same commit, all 13 pinned tools match between them, and a bare
mise installis a verified byte-for-byte no-op on this checkout.Why a drift gate instead of regenerating the lockfile: since there was no
diff to justify committing a regenerated lockfile, this change adds a cheap
CI guard instead — a lockfile drift step in the existing gate job in
.github/workflows/ci.yml(aftersetup-mise) that runsmise installthengit diff --exit-code mise.lock, failing the job ifmise installrewritesthe lockfile.
mise.lockitself is left untouched; the goal is to make futuretoml/lock drift surface automatically in CI instead of being rediscovered by
hand.
mise run checkresultFull gate is green on this branch:
agents:check, vendor:openspec:check, openspec:schema:validate,
cospec-validate-all — all pass
buildsuite)Note: a local run of this worktree (nested under the main checkout's
directory tree) still shows the mise deprecation warning on
e2e/release/set-version.test.ts, because mise's config resolution walks upto the parent checkout's own, untouched
mise.toml(still onexperimental_monorepo_root) and warns from that file — CI never sees thatouter file, so CI is the authoritative result.
🤖 Generated with Claude Code