Skip to content

Improvement: the checks catch what reviews kept catching - #1009

Merged
repeat98 merged 1 commit into
mainfrom
claude/checks-for-review-catches
Oct 28, 2026
Merged

repeat98 merged 1 commit into
mainfrom
claude/checks-for-review-catches

Conversation

@repeat98

Copy link
Copy Markdown
Owner
  • 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:doctor was 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 under sdk/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:doctor adds a usb package line: 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 under sdk/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 its module rules line 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:ready refuses 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 own Fix: 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.
    • The Analog Rytm MKII and the Analog Four MKII get starter prompts of their own (no SRC machine, effects on the digital path), and every prompt for a machine still getting the Octatrack's stack marks the machine guide "its Modwerk stack section first". Every starter, not only the first per machine, now stays under the 6000-character cap, which trimmed two workflow tasks.
    • npm run machines:check requires the ## Modwerk stack heading, not only the recipe link.
    • Guides: AGENTS.md says never to edit a check to pass it and to prefer a check to a sentence when folding a lesson back; the module guide index adds "a module owns what it saves"; the Digitakt guide and the maintenance checklist carry the same, plus the held CI runs of a first-time contributor; the release-notes section says a first release lists only the version it ships; the pull request template says a first release leaves the author boxes unticked.
  • 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 for scripts/pr-ready.test.mjs, scripts/module-doctor.test.mjs (now also runs --draft and 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-start by hand (the USB line, the draft's clash from the gate, the copy removed); the document size check against origin/main. The pieces of npm run check ran 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

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>
@github-actions github-actions Bot added the enhancement New feature or request label Oct 28, 2026
@repeat98
repeat98 merged commit 98c0614 into main Oct 28, 2026
9 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant