fix(ci): the install-register classifier and its enumeration cover npm publish - #522
Merged
KnockOutEZ merged 2 commits intoAug 29, 2026
Merged
Conversation
…ressed root npm publish Red against the tip classifier: its alternation enumerates install verbs, so a planted un-suppressed `npm publish` at the repo root is classified as not prepare-firing and the sweep reports an empty set. The arm plants the shape in a scratch workflow directory under $TMPDIR and runs the real parser over it, because every other arm in this block can only agree with the workflows that already exist.
…m publish `npm publish` packs, and packing fires the root `prepare` hook, so the release publish step is a root prepare-firing step — but the sweep's alternation listed only install verbs, so the step never entered the affected set and the list a reader takes as "every root step that fires the hook" omitted it. Adds `publish` to the alternation and the release publish step to the expected set. Deleting its `WIGOLO_SKIP_PREPARE` now reds two arms naming the step instead of one, and the enumeration no longer implies the publish path is exempt. Corrects the pack/publish block's claim that the install sweep cannot see the shape. No change to the workflow.
|
Important Review skippedAuto reviews are disabled on base/target branches other than the default branch. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Plus Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
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.
Closes
KnockOutEZ/wigolo-studio-run#195(PX0 exit-9, SEC MED).npm publishpacks, and packing fires the rootpreparehook — sorelease.yml'spublish step is a root prepare-firing step, and its
WIGOLO_SKIP_PREPARE: '1'is whatmakes the shipped tarball contain the
dist/every gate validated instead of a rebuildproduced at publish time (#171). The install register's classifier in
tests/unit/prepare-build.test.tsenumerated install verbs (ci|pack|install|i), sothat step never entered
affected()and never appeared in the expected-affected list.The issue's stated failure mode does not reproduce on tip
d19c4271. Deleting theenv line already reds one arm: the pack/publish register added by
44b17e6f(2026-08-28) classifies
npm publishand names the step. Measured below rather thanargued. What was real is narrower and still worth closing: the install sweep's
expected-affected list is the enumeration a reader takes as every root step that fires
the hook, and it said the publish path was exempt — so a tidy-up deleting the
pack/publish block as "a duplicate of the sweep above" would have left the publish path
with no arm at all.
Mutation table — env block × guard verdict, before and after
Subject:
release.yml / release / Publish wigolo (npm),WIGOLO_SKIP_PREPARE: '1'deleted then restored by reverse-edit (never
git checkout). Command:npx vitest run tests/unit/prepare-build.test.ts, exit code read directly, neverthrough a pipe.
fires on exactly these stepsevery one of them suppresses the hookthe shipped dist/ is the validated one[]1 failed | 28 passed (29)1 failed | 27 passed (28)¹29 passed (29)2 failed | 27 passed (29)¹ measured on tip before the new arm existed, hence 28 tests.
Both post-fix failures print the same name:
Red-first
a9111be5(arm) is the direct parent of7f87cc3e(fix). Against the tip classifier thenew arm reds with
AssertionError: expected [] to deeply equal [ …(2) ]— anun-suppressed root
npm publishplanted in a scratch workflow is classified as notprepare-firing, so the sweep reports nothing at all.
The arm is an outside signal by construction: every other arm in that block can only
agree with the workflows that happen to exist, and a shape the classifier cannot see is a
shape no real workflow can red it with. So it plants the shape — an unguarded root
publish, a guarded root publish, and a sub-package publish with its own
working-directory— in a workflow directory under$TMPDIR, and runs the realparser and the real classifier over it.
steps()gained a directory parameter forexactly this and nothing else; its default is unchanged.
Also
npm publish, by design, and neither block alone isload-bearing. The pack/publish block keeps the two arms that exist only there — a
sub-package publish is a different root, and the explicit root build the opt-out
depends on still precedes the publish. Recorded as
A-195-1with its reversalcondition (the registers' verdicts diverging for one step).
npm publishis "the one shape the installregister's alternation cannot see". True when written, false after this commit, so it
is corrected in the same commit.
Non-goals held
No change to the publish flow or to any workflow —
.github/workflows/release.ymlisbyte-identical to tip (read-only reference; the mutations were applied and reversed). No
new gates. The
install|iend-of-line anchoring blindness stays in its two existingknown-issues.mdrows.Verification
npm run build— exit 0npm test— 12091 passed | 20 skipped | 7 todo (12118), 955 files passed / 5 skipped, zero×, exit 0. The suite is 12090 → 12091, exactly the one new arm.npx tsc --noEmit— exit 0npm run gate:studio— exit 0 (tests/type-check debt holds at baseline 363)CI deferred — quota (CEO 2026-08-28); merged on local green.