From da41a6d4dce27b6280587ceb6ea5e22743aef5ee Mon Sep 17 00:00:00 2001 From: Joshua Temple Date: Sat, 13 Jun 2026 19:06:28 -0400 Subject: [PATCH] ci: upload e2e crash evidence artifacts The e2e harness writes the last attempt's raw act stdout/stderr to e2e/_artifacts/-attempt.log when a scenario exhausts its retries, but the E2E workflow never uploaded it, so the stack-trace evidence was lost once the CI log retention window expired. Add an upload-artifact step (if: always(), if-no-files-found: ignore, 14-day retention) so the evidence is recoverable. Pinned to the same SHA convention used elsewhere in the repo. Signed-off-by: Joshua Temple --- .github/workflows/e2e.yaml | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/.github/workflows/e2e.yaml b/.github/workflows/e2e.yaml index 45b3501e..ea6e2f35 100644 --- a/.github/workflows/e2e.yaml +++ b/.github/workflows/e2e.yaml @@ -85,3 +85,19 @@ jobs: -timeout "$E2E_TIMEOUT" \ -parallel "$E2E_PARALLEL" \ ./... + + # On a retry-exhausted scenario the harness writes the last attempt's raw + # act stdout/stderr to e2e/_artifacts/-attempt.log so the + # stack-trace origin survives the CI log retention window. Upload it on + # every run (always()) so the evidence is recoverable whether the job + # failed or a flake was absorbed. The directory may not exist when no + # scenario exhausted its retries; if-no-files-found: ignore keeps that a + # clean no-op rather than a warning. + - name: Upload e2e crash evidence + if: always() + uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 + with: + name: e2e-crash-evidence + path: e2e/_artifacts/ + if-no-files-found: ignore + retention-days: 14