@@ -280,16 +280,18 @@ The repository maintains four independently auditable workflows:
280280 job. That job has no Environment and no OIDC permission. It validates the
281281 exact source job and treats a preparation run whose result-upload step was
282282 skipped as release-inert. For a release run, it requires the unique
283- attempt-qualified result, immutable bot-authored Release, tag commit, ` main `
284- ancestry, and the dispatch contract stored in the tag, then uses its sole
283+ attempt-qualified result, immutable bot-authored Release, tag commit, exact
284+ current ` main ` identity, and the dispatch contract stored in the tag, then
285+ uses its sole
285286 ` actions: write ` permission to dispatch the same workflow with ` ref=v<version> ` .
286287 The ` verify ` , ` live-smoke ` , and ` publish ` jobs accept only
287288 that tag-bound ` workflow_dispatch ` ; they are unreachable from the original
288289 main-context ` workflow_run ` . A successful manual Release Please preparation
289290 run is release-inert and cannot enter the handoff.
290291
291292 The tag run independently revalidates the source run and result artifact,
292- exact tag and immutable Release, package metadata, and ` main ` ancestry. The
293+ exact tag and immutable Release, package metadata, and exact current ` main `
294+ identity. The
293295 normal operation packs and tests one attempt-qualified artifact, runs a fresh
294296 bounded live smoke, and sends that same file to npm OIDC; the one-time
295297 recovery operation downloads and retests the already live-verified tarball
@@ -573,6 +575,8 @@ The repository maintains four independently auditable workflows:
573575 immediately before registry mutation and fails if a run was created, rerun, or
574576 remains active while the recovery was waiting. This makes the operator freeze
575577 observable rather than relying only on timing.
578+ The one-time recovery accepts only the first workflow attempt; a rerun or a
579+ second dispatch is forbidden even when all other inputs match.
576580
577581 If the npm publish request may have reached the registry but its response or
578582 the remaining workflow result was lost, do not infer success or a safe retry
0 commit comments