Repository navigation
Improvement: the checks catch what reviews kept catching - #1009
Merged
Merged
Conversation
module:doctor requires a USB package of every Octatrack module listed from 2 October 2026, checks a draft in place with --draft <id>, has the compatibility gate compare an unlisted folder (--with <id>) and shows the thrown message on its rules line. pr:ready refuses a module pull request that edits a check which judges modules, and says which packages CI rebuilds and how to reproduce them first. The Analog Rytm MKII and the Analog Four MKII get starter prompts of their own, every elemod prompt points at the machine's Modwerk stack section, and machines:check requires that heading. The guides add that a module owns what it saves, that a check is never edited to pass, and that a check is preferred to a sentence. 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.
What was wrong or hard: The owner's reviews this week kept catching the same things by hand, each after the pull request was open: a new Octatrack module without its USB package (Module/track mutes (MPC style) #931, Module/play start (PERSONALIZE PLAY START) #947) while
module:doctorwas green, a contributor's agent editing the compatibility gate to turn a check green (Module/track mutes (MPC style) #931), a mod storing its state in another mod's saved bytes (Digitakt: Digi Perform performance macros (0.1.0-experimental) #980), stale compiled packages that only CI's Docker job sees (Digitakt: Digi Perform performance macros (0.1.0-experimental) #980, FRACT three-grain track machine (source and native FLEX support) #926), and the Analog Rytm MKII getting the Digitakt's starter prompts (SRC machine slots 4–7, Digi EQ) because every elemod machine shared one list. A draft undersdk/drafts/could not be doctored without copying it by hand, and the compatibility gate never compared it at all, so its clashes first showed in CI.What this changes:
npm run module:doctoradds ausb packageline: required of every Octatrack module listed from 2 October 2026 (every module listed since then already has one; the five earlier card-only modules get an info line). It checks a draft in place with--draft <id>(copies the folder undersdk/octabam/modules/for the run and removes it), passes--with <id>to the compatibility gate on every single run so an unlisted folder, a draft or a paused module is compared, and itsmodule rulesline now shows the thrown message instead of Node's version trailer.npm run modules:compat -- --with <id>compares a folder the catalogue does not list.npm run pr:readyrefuses a module pull request that also edits a check which judges modules (the compat and pair gates, the DSP source gates, the module rules, the doctor, the qualification and changelog checks, their tests,compatibility.json, the workflows), naming the files and the route: a wrong check is its ownFix:pull request. Everything a module release legitimately carries (the package builder's list, assets, native comparisons, test lists) passes. It also says which packages CI rebuilds in Docker and the commands to reproduce them before the push.npm run machines:checkrequires the## Modwerk stackheading, not only the recipe link.How I checked it:
tsc -b, eslint on the changed files,npm run machines:check, the Python gate tests (sdk/tests/test_module_compat.py, 17 passed), vitest forscripts/pr-ready.test.mjs,scripts/module-doctor.test.mjs(now also runs--draftand asserts no copy is left),src/community/starter-prompts.test.ts,scripts/docs.test.mjs,scripts/change-scope.test.mjs,src/catalog/module-guides.test.ts,src/catalog/docs-links.test.ts;module:doctor -- --draft play-startby hand (the USB line, the draft's clash from the gate, the copy removed); the document size check againstorigin/main. The pieces ofnpm run checkran one at a time on this machine (the parallel run is not safe beside other sessions here), so CI is the full run.What the guides lacked or got wrong, and where I fixed it: They had every rule the reviews enforced but nothing that checked them, so the lesson is the policy itself: prefer a check to a sentence (AGENTS.md, "Fold what you learn back"; DEVELOPER_WORKFLOW.md, "Share what you learn"). The draft-check bullet in "Make it mergeable" described a manual copy and now names the flag; the gate-edit stumbling block is new there. The state-ownership rule was missing from the module guide index and the Digitakt guide.
🤖 Generated with Claude Code