Keep the blocker beside the rerun
A second release attempt is safer when it starts with the last failed boundary still visible, instead of pretending a fresh run erased the earlier reason to stop.
A rerun can feel like relief. The first build failed, the rollout paused, or the store handoff broke in some ordinary but expensive way. The team fixes something, presses the button again, and the release surface shows a fresh attempt with a fresh timestamp. That clean start is useful. It can also hide the most important context if the product is not careful.
We think the rerun should begin with the blocker still visible. If the earlier attempt failed because artifact identity was unclear, the next run should carry that fact forward until identity is proven. If the first store submission failed on a signing boundary, the second attempt should start with that boundary in view. The team has already paid for that lesson once. The release record should not make them buy it again through memory alone.
A fresh attempt can accidentally wipe the expensive lesson
Many release tools are better at tracking motion than inherited risk. New run, new logs, new status line. The earlier failure is still somewhere in history, but it is no longer sitting beside the decision the team is making now. That separation sounds small. In practice, it weakens judgement. People see the new attempt and unconsciously read it as a cleaner state than it really is.
Suppose the first release failed because the uploaded binary did not match the artifact attached to approval. The second run may indeed build successfully. That does not mean the earlier confidence problem vanished. The important next question is whether the new artifact now has the proof the old one lacked. If the rerun screen behaves as though success started from zero, the product removes the exact context the reviewer most needs.
We would rather keep the blocker plainly attached. Previous attempt failed on artifact identity. Previous attempt failed on App Store credential state. Previous attempt failed after tester crash evidence crossed the stop line. Those are not stale details. They are the inherited boundary the rerun is supposed to clear.
New timestamps do not create new trust by themselves
A rerun often looks healthier because it is newer, not because it is safer. Fresh logs, fresh checks, fresh status labels. None of those prove that the original reason to stop has been answered. They only prove that the team tried again. The difference matters most in busy release windows, where new activity can create a false sense that the problem is already behind the team.
The stronger question is narrower. Did this attempt produce the evidence that the blocker required. If the previous run failed on proof, show the new proof. If it failed on store state, show the corrected store response. If it failed on rollout health, show the recovery slice that restored confidence. That makes the rerun readable as a response to the earlier failure, not a replacement for it.
Once the system keeps that link visible, review gets calmer. The approver no longer has to reconstruct the entire release story from chat or memory. The product can say what went wrong last time, what changed this time, and whether the relevant boundary is now clear.
Inherited blockers make handoffs less fragile
Release work moves between people. One engineer retries the build. Another checks the store path later. A third approves the rerun after waking up in a different time zone. Those handoffs get weaker when the rerun only shows its own success states and hides the blocker that shaped the attempt. Someone arriving later sees green and still has to ask the most important question out loud: green against what concern.
We want the release record to answer that question before the handoff begins. Rerun after failed TestFlight submission. Rerun after artifact mismatch. Rerun after halted rollout from crash signal. Those labels are not decoration. They explain why this attempt exists and what evidence it must now carry. The next reviewer can move faster because the boundary is already sitting beside the work.
This also helps the team improve the pipeline itself. If the same blocker keeps appearing across reruns, the product can make that repetition visible. The lesson stops living only inside incident memory and starts becoming release evidence the team can design against.
We build for continuity, not amnesia
Ubriot is built around release memory because the second attempt is part of the same release story, not a brand new one. A rerun should absolutely have its own logs, own artifact, and own approval trail. It should also inherit the reason the team had to rerun at all. Without that continuity, a cleaner screen can create a weaker decision.
Keeping the blocker beside the rerun does not make the workflow heavier. It makes the workflow more honest. The team can see the failed boundary, the new evidence, and the remaining doubt in one place. That is what turns a second attempt into a safer one.