ci(organization): check that every enabled repository carries mise.toml, mise.lock, and its verify gate (ADR-0043) - #118
Merged
Conversation
…ml, mise.lock, and its verify gate Implements ADR-0043's decision that the organization gate checks presence (never versions) of each fleet_state: enabled repository's mise.toml, mise.lock, and Go/Node verify-gate targets. Adds scripts/check-fleet-conventions.mjs (npm run check:fleet), a fleet-conventions CI job, and names both in quality-loop.md and AGENTS.md. Closes #117.
This was referenced Aug 24, 2026
…ck:fleet and check:scripts)
bketelsen
marked this pull request as ready for review
August 24, 2026 23:55
This was referenced Aug 24, 2026
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
scripts/check-fleet-conventions.mjs(+scripts/lib/fleet-conventions.mjs), which reads everyfleet_state: enableddeclaration underorganization/repositories/**and checks its GitHub default branch formise.toml(a[tools]table), a non-emptymise.lock, and either a GoMakefilewithverify:/check:/ci:targets or a Nodepackage.jsonwithscripts.verify/scripts.check— presence only, never a version compare (ADR-0043).npm run check:fleet, its own CI jobfleet-conventions(network-dependent, so intentionally not part ofnpm run check/verify), SHA-pinned actions,permissions: contents: read,persist-credentials: false, and (via the workflow's existing top-level trigger)merge_group.docs/design/quality-loop.mdand adds thenpm run check:fleetline besidecheck:organizationinAGENTS.md.test/fleet-conventions.test.mjs: a fake fetcher proves (a) a conformant Go repo and a conformant Node repo pass, (b) a repo missingmise.lockfails naming it, (c) a Makefile lackingverify:fails naming the target, (d) a disabled declaration is never fetched.Fleet-conventions job result on this PR
Updated 2026-08-24 23:40Z (head
a6b39f4): the job is green — CI run 32790378452 printsokfor all seven enabled declarations (clix,core,firn,snowcat,snowcat-cockpit,std,updex).History, kept for the record: the first run on head
55d2bcb(20:43Z) found two of seven non-conformant —FAIL frostyard/clix: Makefile missing ci: targetandFAIL frostyard/firn: Makefile missing ci: target— real ADR-0043 drift the check exists to catch, not a bug in the check. Those repositories added theirci:targets the same evening (frostyard/clix#85, frostyard/firn#77, both merged);a6b39f4mergesmain(resolving apackage.jsonscripts conflict with #115) and its run is the green one above.Verification
Test plan
npm run checkat the repository root — all pass, no networknode --test test/fleet-conventions.test.mjs— 4/4 passnpm run check:fleetagainst the live fleet (with a token, to avoid unauthenticated rate limiting) — 7/7 ok ona6b39f4; on the first head it correctly failedclix/firnnaming the missingci:targetdocs-gate,fleet-conventions(7oklines), andscaffold-e2eall green ona6b39f4(run 32790378452)🤖 Generated with Claude Code