imccyu
8d6f5164ab
fix(release): make publication retry, space out, and skip what landed
...
A landlock publication failed with `E409 Failed to save packument` on the
second of three packages. The registry answers a write it could not commit that
way, and publishing several packages back to back is what provokes it.
Neither publish path could recover. The native sequence published from a shell
loop of bare `npm publish` calls: no retry, and no way to resume, because the
registry rejects a repeat of an existing version permanently — so a failure
partway through left the release stuck. publish.ts skipped versions already
present, which made a re-run safe, but had no retry either.
Both paths now attempt a tarball up to four times, space writes at least two
seconds apart, and back off 2s/4s/8s between attempts. Every retry re-reads the
registry first, because a reported failure can answer a write that landed
anyway: a version that now exists with this tarball's integrity counts as
published rather than as one to place again. That same re-read is what turns a
mid-run `E403 cannot publish over the previously published versions` into a
skip when the bytes match, and leaves it a hard failure when they do not.
The native sequence gets the registry comparison publish.ts already had, through
its own script rather than shared code — the two sequences keep separate
publication paths. Its publish job now checks out the repository, which the
shell loop did not need.
Verified against a scripted registry: a clean publish, one E409 then success, an
E409 whose write landed anyway, E409 on every attempt (fails after four), and a
version already present with matching integrity (publishes nothing).
2026-08-13 15:31:09 +08:00
..
2026-08-09 14:55:15 +08:00
2026-08-09 14:55:15 +08:00
2026-08-09 14:55:15 +08:00
2026-08-13 05:20:43 +08:00
2026-08-13 05:20:43 +08:00
2026-08-13 05:20:43 +08:00
2026-08-04 17:36:14 +08:00
2026-07-28 23:13:28 +08:00
2026-08-04 17:36:14 +08:00
2026-08-13 00:54:38 +08:00
2026-08-13 00:54:38 +08:00
2026-08-13 00:54:38 +08:00
2026-08-12 12:30:19 +08:00
2026-08-09 21:10:59 +08:00
2026-08-12 12:30:19 +08:00
2026-08-04 17:36:14 +08:00
2026-07-26 23:06:00 +08:00
2026-08-04 17:36:14 +08:00
2026-08-13 00:54:38 +08:00
2026-08-13 00:54:38 +08:00
2026-08-13 00:54:38 +08:00
2026-08-12 12:30:19 +08:00
2026-08-10 17:58:09 +08:00
2026-08-12 12:30:19 +08:00
2026-08-13 13:31:30 +08:00
2026-08-13 13:31:30 +08:00
2026-08-13 13:31:30 +08:00
2026-08-12 11:44:33 +08:00
2026-08-12 11:44:33 +08:00
2026-08-12 11:44:33 +08:00
2026-08-10 13:07:46 +08:00
2026-08-10 13:07:46 +08:00
2026-08-09 12:35:06 +08:00
2026-08-12 09:59:19 +08:00
2026-08-11 15:23:05 +08:00
2026-08-12 09:59:19 +08:00
2026-08-12 09:59:19 +08:00
2026-08-11 15:23:05 +08:00
2026-08-12 09:59:19 +08:00
2026-08-04 17:36:14 +08:00
2026-07-29 14:32:11 +08:00
2026-08-04 17:36:14 +08:00
2026-08-04 18:42:13 +08:00
2026-07-22 23:07:14 +08:00
2026-08-04 18:42:13 +08:00
2026-08-12 09:59:19 +08:00
2026-08-11 15:23:05 +08:00
2026-08-12 09:59:19 +08:00
2026-08-11 17:56:42 +08:00
2026-08-11 17:56:42 +08:00
2026-08-11 17:56:42 +08:00
2026-08-09 11:33:14 +08:00
2026-07-30 19:57:17 +08:00
2026-08-09 11:33:14 +08:00
2026-08-11 15:23:05 +08:00
2026-08-11 15:23:05 +08:00
2026-08-09 11:33:14 +08:00
2026-08-09 11:33:14 +08:00
2026-07-26 15:06:51 +08:00
2026-08-09 11:33:14 +08:00
2026-08-04 17:36:14 +08:00
2026-07-23 03:25:11 +08:00
2026-08-04 17:36:14 +08:00
2026-08-12 12:30:19 +08:00
2026-08-09 17:26:57 +08:00
2026-08-12 12:30:19 +08:00
2026-08-13 00:54:38 +08:00
2026-08-13 00:54:38 +08:00
2026-08-13 00:54:38 +08:00
2026-08-12 12:30:19 +08:00
2026-08-11 01:48:37 +08:00
2026-08-12 12:30:19 +08:00
2026-08-13 00:54:38 +08:00
2026-08-13 00:54:38 +08:00
2026-08-13 00:54:38 +08:00
2026-08-11 17:56:42 +08:00
2026-08-11 17:56:42 +08:00
2026-08-11 17:50:37 +08:00
2026-08-09 11:33:14 +08:00
2026-08-08 04:20:39 +08:00
2026-08-09 11:33:14 +08:00
2026-08-12 17:31:28 +08:00
2026-08-12 16:30:35 +08:00
2026-08-12 17:31:28 +08:00
2026-08-12 12:30:19 +08:00
2026-08-10 16:34:20 +08:00
2026-08-12 12:30:19 +08:00
2026-08-10 17:58:09 +08:00
2026-08-10 17:58:09 +08:00
2026-08-10 17:58:09 +08:00
2026-08-12 18:16:24 +08:00
2026-08-12 18:16:24 +08:00
2026-08-12 18:16:24 +08:00
2026-08-09 11:33:14 +08:00
2026-07-26 15:54:36 +08:00
2026-08-09 11:33:14 +08:00
2026-08-12 12:30:19 +08:00
2026-08-10 14:49:30 +08:00
2026-08-12 12:30:19 +08:00
2026-08-09 11:02:16 +08:00
2026-08-02 03:17:42 +08:00
2026-08-09 11:02:16 +08:00
2026-08-12 12:30:19 +08:00
2026-08-11 01:48:37 +08:00
2026-08-12 12:30:19 +08:00
2026-08-09 11:33:14 +08:00
2026-07-28 14:58:06 +08:00
2026-08-09 11:33:14 +08:00
2026-08-08 19:06:41 +08:00
2026-08-08 19:06:41 +08:00
2026-08-08 19:06:41 +08:00
2026-08-04 17:36:14 +08:00
2026-07-28 01:02:43 +08:00
2026-08-04 17:36:14 +08:00
2026-08-12 12:30:19 +08:00
2026-08-09 15:35:02 +08:00
2026-08-12 12:30:19 +08:00
2026-08-13 00:54:38 +08:00
2026-08-13 00:54:38 +08:00
2026-08-13 00:54:38 +08:00
2026-08-09 14:55:15 +08:00
2026-08-09 14:55:15 +08:00
2026-08-09 14:55:15 +08:00
2026-08-12 12:30:19 +08:00
2026-07-30 21:47:13 +08:00
2026-08-12 12:30:19 +08:00
2026-08-13 00:54:38 +08:00
2026-08-13 00:54:38 +08:00
2026-08-13 00:54:38 +08:00
2026-08-09 11:02:16 +08:00
2026-07-30 19:02:10 +08:00
2026-08-09 11:02:16 +08:00
2026-08-09 11:33:14 +08:00
2026-07-31 02:55:37 +08:00
2026-08-09 11:33:14 +08:00
2026-08-09 11:02:16 +08:00
2026-08-02 03:17:42 +08:00
2026-08-09 11:02:16 +08:00
2026-08-12 12:30:19 +08:00
2026-08-11 15:23:05 +08:00
2026-08-12 12:30:19 +08:00
2026-08-12 12:30:19 +08:00
2026-08-09 21:10:59 +08:00
2026-08-12 12:30:19 +08:00
2026-08-09 14:33:57 +08:00
2026-08-08 01:10:57 +08:00
2026-08-09 14:33:57 +08:00
2026-08-13 14:05:48 +08:00
2026-08-13 14:05:48 +08:00
2026-08-13 14:05:48 +08:00
2026-08-13 00:54:38 +08:00
2026-08-13 00:54:38 +08:00
2026-08-13 00:54:38 +08:00
2026-08-12 12:30:19 +08:00
2026-08-09 00:37:46 +08:00
2026-08-12 12:30:19 +08:00
2026-08-12 12:30:19 +08:00
2026-08-09 15:35:02 +08:00
2026-08-12 12:30:19 +08:00
2026-08-10 18:04:26 +08:00
2026-08-10 18:04:26 +08:00
2026-08-10 18:04:26 +08:00
2026-08-11 01:48:37 +08:00
2026-08-11 01:48:37 +08:00
2026-08-11 01:48:37 +08:00
2026-08-13 00:54:38 +08:00
2026-08-13 00:54:38 +08:00
2026-08-10 16:34:20 +08:00
2026-08-12 12:30:19 +08:00
2026-08-10 16:34:20 +08:00
2026-08-12 12:30:19 +08:00
2026-08-12 12:30:19 +08:00
2026-08-10 16:34:20 +08:00
2026-08-12 12:30:19 +08:00
2026-08-12 12:30:19 +08:00
2026-08-10 16:34:20 +08:00
2026-08-12 12:30:19 +08:00
2026-08-12 12:30:19 +08:00
2026-08-09 10:56:43 +08:00
2026-08-12 12:30:19 +08:00
2026-08-12 12:30:19 +08:00
2026-08-09 14:55:15 +08:00
2026-08-12 12:30:19 +08:00
2026-08-10 23:13:32 +08:00
2026-08-10 23:13:32 +08:00
2026-08-10 23:13:32 +08:00
2026-08-13 15:31:09 +08:00
2026-08-13 15:31:09 +08:00
2026-08-13 15:31:09 +08:00
2026-08-11 16:37:29 +08:00
2026-08-11 16:37:29 +08:00
2026-08-11 16:37:29 +08:00
2026-08-11 20:09:33 +08:00
2026-08-11 20:09:33 +08:00
2026-08-11 20:09:33 +08:00
2026-08-12 14:08:18 +08:00
2026-08-12 14:08:18 +08:00
2026-08-12 14:08:18 +08:00
2026-08-12 02:16:39 +08:00
2026-08-12 02:16:39 +08:00
2026-08-12 02:16:39 +08:00
2026-08-13 14:05:48 +08:00
2026-08-13 14:05:48 +08:00
2026-08-13 14:05:48 +08:00
2026-08-13 14:30:17 +08:00
2026-08-13 14:30:17 +08:00
2026-08-13 14:30:17 +08:00