Skip to content

chore: clear the pre-existing mise run check failures - #34

Merged
replygirl merged 10 commits into
mainfrom
worktree-post-parity-chores
Sep 8, 2026
Merged

chore: clear the pre-existing mise run check failures#34
replygirl merged 10 commits into
mainfrom
worktree-post-parity-chores

Conversation

@replygirl

Copy link
Copy Markdown
Contributor

Summary

This PR clears three pre-existing mise run check failures via three
self-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.0 resolves in CI) emits a deprecation warning for
experimental_monorepo_root on every invocation. That warning lands on
stderr, which fails e2e/release/set-version.test.ts's
expect(stderr).toBe('') assertion and makes mise run check red on a clean
checkout.

Change: renamed experimental_monorepo_root = true to
monorepo_root = true in the root mise.toml — the only file that sets the
key.

min_version bump rationale: raised min_version from "2026.4.1" to
"2026.7.7", the release where the key was promoted out of experimental, so
the 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.ts failed because
packages/bench/scenarios/hidden/build/ didn't exist — the root
.gitignore's unanchored build/ rule silently swallowed the suite when the
rest of the hidden suites landed, leaving build (already specified by
packages/bench/scenarios/build.ts) as the one scenario with no held-out
tests.

Change: added a !packages/bench/scenarios/hidden/build/ negation to
.gitignore (alongside the existing !openspec/schemas/build/ negation) so
the directory can be tracked at all, and added
packages/bench/scenarios/hidden/build/build.test.ts with 4 cases against the
fixtures/build-script fixture (build exits 0, dist/index.js is emitted,
the built bundle still runs, scripts.build is present and non-empty). No new
scenario behavior — this only backfills the escaped-defect signal for a
scenario that already existed.

3. mise-lock-platform-rows (ci)

Before: a reported mise install rewrite of mise.lock (~230 lines)
could not be reproduced — mise.toml/mise.lock were last updated together
in the same commit, all 13 pinned tools match between them, and a bare
mise install is 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 (after setup-mise) that runs mise install then
git diff --exit-code mise.lock, failing the job if mise install rewrites
the lockfile. mise.lock itself is left untouched; the goal is to make future
toml/lock drift surface automatically in CI instead of being rediscovered by
hand.

mise run check result

Full gate is green on this branch:

  • typecheck, lint (oxlint), format:check (oxfmt), generate:check,
    agents:check, vendor:openspec:check, openspec:schema:validate,
    cospec-validate-all — all pass
  • unit tests: 659 pass / 0 fail
  • bench unit tests: 339 pass / 0 fail (includes the new hidden build suite)
  • contract tests: 35 pass / 0 fail
  • e2e release tests: 13 pass / 0 fail in CI

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 up
to the parent checkout's own, untouched mise.toml (still on
experimental_monorepo_root) and warns from that file — CI never sees that
outer file, so CI is the authoritative result.

🤖 Generated with Claude Code

replygirl and others added 10 commits September 4, 2026 15:21
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>
Copilot AI lite review requested due to automatic review settings September 5, 2026 17:23

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

@replygirl
replygirl merged commit 5cee673 into main Sep 8, 2026
11 checks passed
@replygirl
replygirl deleted the worktree-post-parity-chores branch September 8, 2026 19:44
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