Repository navigation
Conversation
Contributor
Contributor
Author
|
@claude review always |
This comment was marked as outdated.
This comment was marked as outdated.
vibhavgo
added a commit
that referenced
this pull request
Nov 3, 2026
Review finding on #10118: a TLOG-409-errored package usually landed on npm anyway (the error is a duplicate-provenance false negative), but it got no success line, so it skipped the propagation wait and the settle bumped it - and its dependents - needlessly. The wait list is now every package lerna dispatched (lerna verb publish lines), with published names unioned in as a guaranteed superset; only never-dispatched packages from an aborted wave skip the wait. Also: readable logs with zero recognized lines now warn once and fail open (format-drift signal), the short-poll cap's whole-settle scope is documented, and the lerna logs upload as an artifact when any step fails (placed after Verify so a Verify-only failure still captures them). Ticket: WCI-2113
This comment was marked as outdated.
This comment was marked as outdated.
vibhavgo
force-pushed
the
WCI-2113-beta-release-hardening
branch
from
November 3, 2026 10:08
4f5df83 to
5b0828e
Compare
Contributor
Author
|
@claude review |
This comment was marked as outdated.
This comment was marked as outdated.
A storm-aborted lerna wave publishes only a fraction of the tree, but continue-on-error paints the step green, so Verify's 15-minute wait was spent on versions that never existed and the failure was invisible until someone read 20k log lines. Both lerna steps now tee their output and Verify waits only for what lerna reached: every dispatched package (lerna verb publish), published or errored — a TLOG 409 usually means the registry write completed anyway, so an errored package still gets the wait instead of a needless bump plus dependent-bump cascades — with published names unioned in as a guaranteed superset. Only never-dispatched packages from an aborted wave skip the wait. Fail-open: unreadable logs, or readable logs with no recognized lines (format drift), revert to the full wait with a warning. Failed-but-continued steps raise ::warning:: annotations keyed on outcome (conclusion is masked by continue-on-error). Mass-stall days cap per-package conflict polls at ~30s so the settle cannot run packages × 5 minutes against the job cap; the bump that cap can cost is the documented, accepted trade. The EUNCOMMIT skip on the bitgo step is documented as the desirable storm-day path, and the lerna logs upload as an artifact when any step fails (placed after Verify so a Verify-only failure still captures them). Ticket: WCI-2113
vibhavgo
force-pushed
the
WCI-2113-beta-release-hardening
branch
from
November 3, 2026 10:31
5b0828e to
896a08e
Compare
vibhavgo
marked this pull request as ready for review
November 3, 2026 10:42
There was a problem hiding this comment.
Claude Code Review
This repository is configured for manual code reviews. Comment @claude review for a one-time review, or @claude review always to subscribe this PR to a review on every future push.
Tip: disable this comment in your organization's Code Review settings.
vibhavgo
requested review from
davidkaplanbitgo,
ranga-r2 and
rishikeshdadam136
and removed request for
ranga-r2
November 3, 2026 10:42
This branch has not been deployed
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.
Summary
Surfaces the real outcome of the lerna publish steps (tee'd logs +
::warning::annotations keyed onoutcome, whichcontinue-on-errordoes not mask) and uses what lerna actually published to trim Verify Publish's propagation wait — a storm-aborted wave publishes only a fraction of the tree, and waiting 15 minutes for versions that never existed was pure loss. Also caps per-package conflict polls at ~30s on mass-stall days so the settle pass cannot run packages × 5 minutes against the job timeout.Linear: WCI-2113
Changes
publish.yml: both lerna steps getid:+shell: bash(opts into-eo pipefail— the default run shell has no pipefail, and acmd | teepipeline without it masks lerna's failure) +2>&1 | tee /tmp/lerna-{siblings,bitgo}-publish.log; two::warning::steps keyed onsteps.<id>.outcome == 'failure'; log paths passed to Verify; timeout-floor comment with empirical evidence (healthy 43 min, storm 78 min — do not trimtimeout-minutes: 100); EUNCOMMIT on the bitgo step documented as the desirable storm-day path (document-don't-fix: fixing it would run a 20-min prepack against missing dependencies; the healthy-day Nov 3 run proves the step publishes bitgo fine).verify-release.ts:parseLernaPublishedPackages+parseLernaAttemptedPackages(version-anchored regexes — excludes lerna'spublished N packagessummary lines;lerna verb publish <name>marks every dispatched package, verified against lerna 10.0.1 output: 114 unique names in a healthy log = exactly the candidates),readLernaPublishSets(unions both logs into published + attempted sets with published ⊆ attempted; fail-open: unreadable logs or readable logs with no recognized lines — format drift — revert to waiting for every package with a one-line warning),shouldShortPollConflict(mass-invisible OR aborted-wave trigger, keyed on how many packages lerna reached),VerifyPackageOptionsgains sleep/now/conflictPollTimeoutMspassthrough intopublishWithRecovery, andverify()builds its wait-list from the attempted set — errored packages (TLOG 409 usually means the write landed anyway) get the wait instead of a needless bump plus dependent cascades; only never-dispatched packages skip it — and threads the 30s cap on mass-stall days.Test Plan
npx mocha --require tsx ./scripts/tests/generate-bitgo-shrinkwrap.test.ts ./scripts/tests/verify-release.test.ts— 57 passing;tsc --noEmitclean on changed files; workflow YAML validated.::warning::visible on the run summary and the "Lerna published N of M packages" line in Verify's log confirming the trimmed wait.