fix(release): 0.1.0 уехала без провенанса — починить и проверять факт, а не намерение - #5
Merged
Merged
Conversation
…, а не намерение Опубликованная 0.1.0 не несёт аттестации, хотя шаг называется «with provenance», а preflight требует provenance: true. Реестр это подтверждает: у @trdlabs/engine@0.1.0 attestations пусты. Причин две, и обе молчаливые. 1. В манифесте не было поля repository. npm документирует публичный repository, совпадающий с источником публикации, как ПРЕДУСЛОВИЕ провенанса. Без него publish всё равно успешен — просто без аттестации. 2. pnpm publish сначала пробует собственный OIDC-обмен; тот вернул 404 (trusted publisher для пакета не настроен), pnpm откатился на токен и пропустил генерацию провенанса, напечатав при этом «✅ Published». Починено: добавлен repository; publish переведён на `npm publish --provenance` (npm CLI берёт Sigstore-идентичность прямо из id-token: write); preflight теперь требует repository. Но главный урок не в этих двух строках: шаг УТВЕРЖДАЛ провенанс, и ничто это не проверяло. Поэтому после публикации workflow спрашивает сам реестр — единственную инстанцию, которая знает, что реально прикрепилось, — и падает, если аттестации нет, прямо говоря, что версия в npm неизменяема и чинится только следующим патчем. Версия поднята до 0.1.1: 0.1.0 исправить в реестре нельзя.
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.
Опубликованная
0.1.0не несёт аттестации, хотя шаг называется «with provenance», а preflight требуетprovenance: true. Реестр подтверждает: attestations у@trdlabs/engine@0.1.0пусты.Две молчаливые причины
repository. npm документирует публичныйrepository, совпадающий с источником публикации, как предусловие провенанса. Без него publish всё равно успешен — просто без аттестации.pnpm publishпропустил генерацию. Он сначала пробует собственный OIDC-обмен; тот вернул404(trusted publisher для пакета не настроен), pnpm откатился на токен и провенанс не сгенерировал, напечатав при этом✅ Published.Починено
repository.npm publish --access public --provenance— npm CLI берёт Sigstore-идентичность прямо изid-token: write. Это ровно то, чем публикуется@trdlabs/sdk, у которого аттестации на месте.repository, иначе падает (проверено от обратного).Главное — не эти две строки
Шаг утверждал провенанс, и ничто это не проверяло. Поэтому после публикации workflow спрашивает сам реестр — единственную инстанцию, которая знает, что реально прикрепилось, — и падает, если аттестации нет, прямо сообщая, что версия в npm неизменяема и чинится только следующим патчем. Ограниченный ретрай, потому что чтение свежей публикации отстаёт (мы это уже наблюдали: пакет появился в реестре через ~2 минуты после publish).
Версия поднята до 0.1.1:
0.1.0исправить в реестре нельзя.Смежная находка (вне этого PR)
У
@trdlabs/backtester-sdkаттестаций нет ни в одной версии — 0.3.0, 0.4.0, 0.8.0 — хотя его workflow публикует с--provenance, а комментарий в нём утверждает, что «the published version carries a verifiable build attestation». У@trdlabs/sdkпровенанс есть. Причину там не искал, чтобы не расширять скоуп; вынес отдельно.Проверено
Preflight
@trdlabs/engine@0.1.1 is publishable, typecheck чист, 100 тестов, clean-consumer OK, workflow gate OK.🤖 Generated with Claude Code