From c7e1642ffbd7b769d6ee0750d75940c8dad8608e Mon Sep 17 00:00:00 2001 From: Molecule AI Core-DevOps Date: Mon, 11 May 2026 09:17:43 +0000 Subject: [PATCH] fix(ci/harness-replays): add fetch-depth:0 to detect-changes checkout MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The detect-changes step runs `git diff "$base_sha" "$head_sha"` but the preceding `actions/checkout` uses the default fetch-depth: 1 — only the PR head commit is fetched. The base ref (github.event.pull_request.base.sha) is not in the local history, so git diff fails silently (2>/dev/null), leaving DIFF empty and the step exits non-zero. With continue-on-error: true on the job, the step reports "failure" instead of blocking the PR, but the output is never written so downstream harness-replays always skips. Fix: add fetch-depth: 0 to the detect-changes checkout step so full history is fetched and both base and head refs exist locally. Spotted during gate triage review (core-lead-agent, 2026-05-11). Co-Authored-By: Claude Opus 4.7 --- .gitea/workflows/harness-replays.yml | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/.gitea/workflows/harness-replays.yml b/.gitea/workflows/harness-replays.yml index 9186f673..3390b2cb 100644 --- a/.gitea/workflows/harness-replays.yml +++ b/.gitea/workflows/harness-replays.yml @@ -68,6 +68,17 @@ jobs: run: ${{ steps.decide.outputs.run }} steps: - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + with: + # fetch-depth: 0 is required here. The step runs `git diff "$base_sha" + # "$head_sha"` — if only the head commit is fetched (default + # fetch-depth: 1), the base ref is not in the local history and + # git diff fails silently (2>/dev/null), leaving DIFF empty, the + # step exits non-zero, and detect-changes reports "failure" despite + # continue-on-error: true. With fetch-depth: 0 the full history is + # available so both refs exist locally. The PR head and the base + # branch tip are always on the remote; full history is needed only + # to make them accessible offline in the container. + fetch-depth: 0 - id: decide run: | # workflow_dispatch: always run (manual trigger)