Skip to content

feat(ci): turn pre-publish layer 2 on by default - #36

Merged
NSchatz merged 1 commit into
mainfrom
prepublish-install-layers-default-on
Aug 5, 2026
Merged

feat(ci): turn pre-publish layer 2 on by default#36
NSchatz merged 1 commit into
mainfrom
prepublish-install-layers-default-on

Conversation

@NSchatz

@NSchatz NSchatz commented Aug 5, 2026

Copy link
Copy Markdown
Contributor

PREPUBLISH-INSTALL-LAYERS, final step. run-prepublish-install now defaults to true.

Both layers shipped finished and measured in #35. Layer 2 shipped default OFF on purpose: turning it
on for thirteen repos at once is a policy call with a real blast radius, not a build. That call was
made on 2026-08-05.
This PR is the flip and nothing else.

Blast radius

As of the flip no caller passes run-prepublish-install, and none passes expect-unpublished-deps
either
, so the default is the whole story: all thirteen callers pick up layer 2 and the default
allowance with no change on their side. There is nothing for a caller to adopt.

Measured on 2026-08-05 against the live registry with the default allowance: 11 pass, 2
blocked-peer (transform, synth, on @cosyte/fhir), 0 red.
Both blocked-peer results exit
0, so the flip reds nobody. Re-measured independently during review and it reproduced: 11 install
clean, exactly 2 fail (transform E404, synth ERESOLVE), both on @cosyte/fhir, which the
default allowance declares =blocked.

That is recorded in the workflow comment and in the README as a dated measurement, not a standing
guarantee
. The registry is not ours.

What this does not claim

blocked-peer establishes less than "fully explained". npm short-circuits, so a second defect
hiding behind a declared absence is invisible. That gap is pre-existing, already set out under "The
verdicts", and this change neither widens nor narrows it. The README wording was tightened so the
adoption note cannot be read as the stronger claim.

=blocked and =private stay in different words, untouched: =blocked excuses, =private
(assets, docs) excuses nothing in either gate.

Docs follow code, in the same PR

The layer table reads on, the adoption note becomes an opt-out example, and the paragraph
telling a caller to add run-prepublish-install: true is gone.

Test

The test that pins the two defaults is flipped with them and re-anchored at the six-space
declaration, because the new comment block spells run-prepublish-install: false while explaining
how to opt out. Unanchored, a search matches that decoy first and then scans forward into the real
declaration, reading the right value from the wrong place. Mutation-checked during review: flipping
either default back, or deleting the declaration while leaving the decoy, all fail the test.

Gate: actionlint exit 0, node --test "test/*.test.mjs" 285/285.

`run-prepublish-install` now defaults to `true`. The mechanism shipped
finished and measured in #35; what remained was a policy call with a real
blast radius, and it was made on 2026-08-05.

As of that date no caller passes `run-prepublish-install`, and none passes
`expect-unpublished-deps` either, so the default is the whole story: all
thirteen callers pick up layer 2 and the default allowance with no change on
their side. Measured the same day against the live registry with that
allowance: 11 pass, 2 blocked-peer (`transform`, `synth`, on `@cosyte/fhir`),
0 red. Both blocked-peer results exit 0, so the flip reds nobody. It is
recorded as a dated measurement rather than a standing guarantee, in the
workflow comment and in the README both, because the registry is not ours and
an answer that holds today can change under us.

`blocked-peer` still establishes less than "fully explained": npm
short-circuits, so a second defect hiding behind a declared absence stays
invisible. That gap is pre-existing, already set out under "The verdicts", and
this change neither widens nor narrows it.

The README follows the code in the same commit. The layer table reads `on`,
the adoption note becomes an opt-OUT example, and the paragraph that told a
caller to add `run-prepublish-install: true` is gone, because after the flip
there is nothing to adopt.

The test that pins the two defaults is flipped with them and re-anchored at
the six-space declaration. The new comment block spells
`run-prepublish-install: false` while explaining how to opt out, and an
unanchored search would match that decoy first and then scan forward into the
real declaration, reading the right value from the wrong place.
@NSchatz
NSchatz merged commit 90936ea into main Aug 5, 2026
2 checks passed
@NSchatz
NSchatz deleted the prepublish-install-layers-default-on branch August 5, 2026 22: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.

1 participant