fix(package): везти NOTICE в тарболе + clean-consumer гейт перед публикацией - #3
Merged
Merged
Conversation
…икацией Пробный pack перед выпуском показал две вещи, которые нельзя было увидеть из зелёного набора тестов. 1. NOTICE не попадал в тарбол. `files: ["dist"]` авто-добавляет только LICENSE и README, а Apache-2.0 §4(d) требует распространять NOTICE вместе с работой. Формально — дефект соответствия лицензии в самом первом выпуске. 2. Набор тестов импортирует src/, а потребитель получает ТАРБОЛ. Они расходятся при любом дрейфе `files`, `exports` или вывода сборки: пакет может быть полностью зелёным в репо и всё равно устанавливаться в сломанный импорт. Поэтому добавлен clean-consumer гейт (порт проверки, которую карточка прямо называет в prerequisites): пакует настоящий артефакт, ставит его в одноразовый проект ВНЕ workspace — без хойстинга и workspace-линков, которые замазали бы пропущенную зависимость, — импортирует через публичный вход и прогоняет реальный simulate(). Импорт, который резолвится, но бросает на первом же вызове, — это тоже сломанный релиз. Гейт заведён и в CI, и в release-workflow ДО publish: npm иммутабелен по версии, и ловить такое после публикации уже нечем. Проверен от обратного — без NOTICE падает с exit 1 и называет пропавший файл.
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.
Пробный
pnpm packперед выпуском показал две вещи, которых зелёный набор тестов увидеть не мог.1.
NOTICEне попадал в тарболfiles: ["dist"]авто-добавляет толькоLICENSEиREADME. Apache-2.0 §4(d) требует распространятьNOTICEвместе с работой — то есть это дефект соответствия лицензии, и он уехал бы в самом первом выпуске.2. Тесты импортируют
src/, а потребитель получает тарболОни расходятся при любом дрейфе
files,exportsили вывода сборки: пакет может быть полностью зелёным в репо и всё равно устанавливаться в сломанный импорт.Добавлен clean-consumer гейт — порт проверки, которую карточка прямо называет в «Environment / operations prerequisites». Он пакует настоящий артефакт, ставит его в одноразовый проект вне workspace (без хойстинга и workspace-линков, которые замазали бы пропущенную зависимость), импортирует через публичный вход и прогоняет реальный
simulate()— импорт, который резолвится, но бросает на первом вызове, это тоже сломанный релиз.Гейт заведён и в обычный CI, и в release-workflow до
publish: npm иммутабелен по версии, ловить такое после публикации уже нечем.Проверено от обратного
Без
NOTICEвfilesгейт падает с exit 1 и называет пропавший файл — то есть это проверка, а не декорация. С правкой:clean consumer: import + simulate() OK, typecheck чист, 100 тестов зелёные.🤖 Generated with Claude Code