Skip to content

fix(ci): set +e before pr-file-overlap-check so warning doesn't hard-fail#321

Merged
mitwilli-create merged 1 commit into
mainfrom
fix/pr-file-overlap-check-set-e-2026-05-29
May 29, 2026
Merged

fix(ci): set +e before pr-file-overlap-check so warning doesn't hard-fail#321
mitwilli-create merged 1 commit into
mainfrom
fix/pr-file-overlap-check-set-e-2026-05-29

Conversation

@mitwilli-create
Copy link
Copy Markdown
Owner

Summary

PR #320 surfaced this workflow bug. The `run` block uses `bash -e` by default. The `check-pr-file-overlap.mjs` script intentionally exits 2 when overlap is detected (warn-only, per AGENTS.md § Bug class critical-file-parallel-pr-overlap). But `set -e` aborts the script on exit-2 immediately, so the trailing `EXIT_CODE=$?` + `exit 0` never run → workflow reports failure even though the intent is a warning annotation.

Fix: prepend `set +e` at the top of the run block so exit-2 is captured into EXIT_CODE instead of aborting.

Why this only surfaced now

The previous round of PRs (#317, #318) didn't actually trigger overlap with any other open PR on a critical file. PR #320 (touches scripts/build-dashboard.mjs) overlaps with PR #319 (also touches scripts/build-dashboard.mjs), which IS in `data/conflict-prevention-critical-files.json`. First time the warn-path actually ran.

What changes

7 lines added (5 explanatory comment + 1 `set +e` + 1 empty line) to `.github/workflows/pr-file-overlap-check.yml`. No other files.

Test plan

Surfaced via task-audit 2026-05-29 Theme-2 F104 ship. Bucket-A auto-merge per locked Q4 (workflows are NOT production-surface).

🤖 Generated with Claude Code

…fail

PR #320 surfaced this: the workflow's run-block uses `bash -e` by default.
The node script intentionally exits 2 when it detects critical-file overlap
with another open PR (warn-only, per AGENTS.md § Bug class
critical-file-parallel-pr-overlap). But `set -e` aborts the run block on
the exit-2 immediately, so the trailing `EXIT_CODE=$?` + `exit 0` lines
never run. Workflow reports failure even though the script's intent was
to annotate the PR with a warning comment.

Fix: prepend `set +e` at the top of the run block so exit-2 from the node
call is captured into EXIT_CODE instead of aborting the script. The
trailing `exit 0` then fires correctly, the github-script step still
posts the warning comment when overlap is detected, and CI reports
pass-with-warning instead of fail.

Verification:
- PR #320 (touches scripts/build-dashboard.mjs) + PR #319 (touches the
  same file) WILL produce an overlap warning under this fix — that's
  the intended behavior. The check will pass + post a warning comment.

Surfaced via task-audit 2026-05-29 Theme-2 F104 ship. Bucket-A
auto-merge per locked Q4 (workflows are NOT production-surface).

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
@mitwilli-create mitwilli-create merged commit 93c2a6f into main May 29, 2026
9 checks passed
@mitwilli-create mitwilli-create deleted the fix/pr-file-overlap-check-set-e-2026-05-29 branch May 29, 2026 04:25
mitwilli-create pushed a commit that referenced this pull request May 29, 2026
mitwilli-create added a commit that referenced this pull request May 29, 2026
* fix(dashboard): pulse per-row Deep Refresh button while firing [skip-ui-verify]

Closes F104 audit ask (2026-05-26 session #8400a912b8e8: "i need assurance
that this is taking place, progressing"). Tight-ship scope locked via
interview: leverage existing modal SSE + auto-reload infrastructure; add
ONLY the visual hook on the per-row button itself.

5 surgical edits to scripts/build-dashboard.mjs:

1. CSS keyframes for `.dcard-btn.drm-firing` (box-shadow pulse, 1.4s ease-in-out)
   + prefers-reduced-motion opt-out for accessibility
2. openDeepRefreshModal: track the trigger button on window._drmState.firingBtn
3. confirmDeepRefresh: adds `drm-firing` class to the firingBtn on confirm
4. confirmDeepRefresh catch block: removes class on launch fail (retry-friendly)
5. closeDeepRefreshModal: removes class on user-cancel / close-while-firing

Successful-refresh path needs no manual cleanup: _drmRebuildAndReload calls
location.reload() which resets the class via full page reload.

[skip-ui-verify]: CSS-class-only change with zero idle impact (class never
attaches without user click + modal confirm). Verification via:
- node scripts/build-dashboard.mjs: clean (9 inline scripts parsed)
- curl -s https://staging-dashboard.careers-ops.com/ | grep -oc 'drm-firing': 7
  (4 CSS rules + 3 JS references)
- Chrome MCP screenshot at 1440×900 (ss_6039m3j35) — dashboard renders clean
- Full notes at .claude/audit/f104-deep-refresh-progress-2026-05-29/notes.md

Production surface — DRAFT until Mitchell reviews.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

* ci: re-trigger after #321 (set +e workflow fix)

---------

Co-authored-by: Mitchell Williams <mitchellwilliams@Mitchells-MacBook-Air.local>
Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant