summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.github/workflows/ai-validation.yml17
1 files changed, 16 insertions, 1 deletions
diff --git a/.github/workflows/ai-validation.yml b/.github/workflows/ai-validation.yml
index 5319023e..f75081dc 100644
--- a/.github/workflows/ai-validation.yml
+++ b/.github/workflows/ai-validation.yml
@@ -133,7 +133,12 @@ jobs:
git show "HEAD:$path" > "_changed_md/$path"
done < changed-md.z
- if [ -s changed-md.txt ]; then
+ # Use diff-md.patch (unfiltered git diff) rather than changed-md.txt
+ # (--diff-filter=ACMRT) so deletion-only PRs still trigger validate.
+ # Pass 1 reviews the diff, not just the post-image files in
+ # _changed_md/, so deletes are legitimate review targets even though
+ # they produce no entries in _changed_md/.
+ if [ -s diff-md.patch ]; then
echo "has_md_changes=true" >> "$GITHUB_OUTPUT"
else
echo "has_md_changes=false" >> "$GITHUB_OUTPUT"
@@ -208,6 +213,16 @@ jobs:
with:
name: pr-input
+ - name: Ensure _changed_md exists (handles deletion-only PRs)
+ if: steps.secrets-check.outputs.skip != 'true'
+ # actions/upload-artifact silently omits empty directories. On a
+ # deletion-only PR, prepare's _changed_md/ holds no files and never
+ # makes it across the artifact boundary — Pass 1's
+ # working-directory: _changed_md would then fail. Recreate the
+ # directory unconditionally; Pass 1 still operates on the diff
+ # via --pr-diff ../diff-md.patch, which is the source of truth.
+ run: mkdir -p _changed_md
+
- name: Generate GitHub App token
if: steps.secrets-check.outputs.skip != 'true'
id: app