fix(ci): the ejection intake issue is reason-aware - #1452
Conversation
|
ⓘ Qodo reviews are paused because your trial has ended. Ask your workspace admin to add credits to resume reviews. Manage billing |
ApprovabilityVerdict: Approved c92833f This is a minor CI/CD workflow change that filters which merge queue ejection events create triage issues. The logic is straightforward (case statement checking dequeue reason), doesn't affect production application behavior, and reduces internal issue noise without changing the PR comment flow. You can customize Macroscope's approvability policy. Learn more. |
There was a problem hiding this comment.
Pull request overview
Note
Copilot was unable to run its full agentic suite in this review.
Adds operational notes and updates the merge-queue ejection workflow to reduce noise by only filing tracker issues for failure-like dequeue reasons.
Changes:
- Added an append-only cross-repo log for bridge/pi integration findings and gotchas.
- Documented the new reason-aware behavior in
CHANGELOG.md. - Updated
merge-queue-ejection-alertworkflow to skip intake issue creation forMANUALandMERGE_CONFLICTdequeue reasons.
Reviewed changes
Copilot reviewed 3 out of 3 changed files in this pull request and generated 2 comments.
| File | Description |
|---|---|
| docs/cross-repo-notes.md | Introduces an append-only cross-repo log capturing integration facts and operational learnings. |
| CHANGELOG.md | Notes the reduced intake-issue noise from reason-aware ejection handling. |
| .github/workflows/merge-queue-ejection-alert.yml | Implements reason-based gating to avoid filing issues for non-triage ejections. |
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
307ddb5 to
644b385
Compare
Dismissing prior approval to re-evaluate 644b385
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 2 out of 2 changed files in this pull request and generated no new comments.
Suppressed comments (1)
.github/workflows/merge-queue-ejection-alert.yml:188
- Using
exit 0here terminates the entire step early, which is brittle if later logic is added after the intake-issue section (or if there are unrelated side effects later in this same script). Prefer structuring this as a conditional that only skips the intake-issue creation portion (e.g., set a flag / wrap the issue-creation block), so the rest of the step can continue safely without relying on early termination.
# Intake issue (deduped per PR + ejection run), failure-shaped
# reasons only: a deliberate dequeue or a routine queue
# re-evaluation is not triage work.
case "${DEQUEUE_REASON}" in
MANUAL|MERGE_CONFLICT)
echo "reason ${DEQUEUE_REASON}: deliberate dequeue / queue re-evaluation — comment posted, no intake issue"
exit 0
;;
esac
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 2 out of 2 changed files in this pull request and generated no new comments.
Suppressed comments (2)
.github/workflows/merge-queue-ejection-alert.yml:189
- The
casehas no explicit default branch, so unrecognized reasons silently fall through to intake issue creation. Since the behavior is intentionally ‘fail-closed’, consider adding an explicit*)branch that logs that the reason is unrecognized and that an intake issue will be created. This makes future debugging/auditing much easier when GitHub introduces new dequeue reasons.
create_intake_issue=1
case "${DEQUEUE_REASON}" in
MANUAL|MERGE_CONFLICT)
echo "reason ${DEQUEUE_REASON}: deliberate dequeue / queue re-evaluation — comment posted, no intake issue"
create_intake_issue=0
;;
esac
.github/workflows/merge-queue-ejection-alert.yml:187
- Using
echofor log lines can be shell-dependent (e.g.,-einterpretation and escape handling). Preferprintf '%s\n' ...for predictable output, especially since this message contains Unicode punctuation.
echo "reason ${DEQUEUE_REASON}: deliberate dequeue / queue re-evaluation — comment posted, no intake issue"
56c7779 to
ab3276a
Compare
Dismissing prior approval to re-evaluate ab3276a
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 2 out of 2 changed files in this pull request and generated no new comments.
Suppressed comments (1)
.github/workflows/merge-queue-ejection-alert.yml:195
markercomputation and thegh issue listcall run even whencreate_intake_issue=0(MANUAL/MERGE_CONFLICT). Since those reasons intentionally skip triage, consider moving themarker=...andexisting="$(gh issue list ...)"lines inside thecreate_intake_issue=1branch (or wrapping them in a separateif [ "$create_intake_issue" = "1" ]; then ... fi) to avoid unnecessary GitHub API calls and reduce rate-limit pressure.
create_intake_issue=1
case "${DEQUEUE_REASON}" in
MANUAL|MERGE_CONFLICT)
echo "reason ${DEQUEUE_REASON}: deliberate dequeue / queue re-evaluation — comment posted, no intake issue"
create_intake_issue=0
;;
esac
# An unidentified ejecting run must not collapse successive
# ejections into one marker: fall back to this alert run's own id.
marker="ejection-alert:pr-${PR_NUMBER}:run-${run_id:-alert-${GITHUB_RUN_ID}}"
existing="$(gh issue list --search "\"$marker\" in:body" --state open --json number --jq 'length')"
if [ "$create_intake_issue" = "1" ] && [ "$existing" = "0" ]; then
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: ab3276a804
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "Codex (@codex) review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "Codex (@codex) address that feedback".
|
Merge queue ejected this PR ( Ejecting merge-group run: https://github.com/vanillagreencom/vstack/actions/runs/32082005370 ( Failing job(s): No usable same-named comparison on the PR head (checks absent, skipped, or still running) — no flake-vs-genuine call is available; inspect the failing run before re-arming. Automated by merge-queue-ejection-alert (VST-196). This alert never re-arms auto-merge. |
…ues and queue re-evaluations stop filing triage noise Claude-Session: https://claude.ai/code/session_012epxJEzGqT7q3qcFhdZUt5
A deliberately non-intake run (MANUAL, MERGE_CONFLICT) no longer dies under set -e when the Issues API hiccups on a lookup whose result it would never use. Claude-Session: https://claude.ai/code/session_01EwxSRv8oy1NxoQm66WKa4J
ab3276a to
c92833f
Compare
Dismissing prior approval to re-evaluate c92833f
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 2 out of 2 changed files in this pull request and generated no new comments.
Suppressed comments (1)
.github/workflows/merge-queue-ejection-alert.yml:203
- With
set -e, ifgh issue list ...fails for a failure-shaped ejection (whencreate_intake_issue=1), the whole job will exit and you may lose the intake issue entirely. Consider making the dedupe lookup failure-tolerant (e.g., treat lookup failure asexisting=0/ proceed to create, or log and continue) so alerting is resilient to transient GitHub/CLI/API errors.
create_intake_issue=1
case "${DEQUEUE_REASON}" in
MANUAL|MERGE_CONFLICT)
echo "reason ${DEQUEUE_REASON}: deliberate dequeue / queue re-evaluation — comment posted, no intake issue"
create_intake_issue=0
;;
esac
# An unidentified ejecting run must not collapse successive
# ejections into one marker: fall back to this alert run's own id.
marker="ejection-alert:pr-${PR_NUMBER}:run-${run_id:-alert-${GITHUB_RUN_ID}}"
# The dedupe lookup runs only when an issue could be created: a
# transient Issues API failure must not kill a deliberately
# non-intake run under set -e.
if [ "$create_intake_issue" = "1" ]; then
existing="$(gh issue list --search "\"$marker\" in:body" --state open --json number --jq 'length')"
if [ "$existing" != "0" ]; then
echo "intake issue for $marker already open; skipping create"
create_intake_issue=0
fi
fi
The merge-queue ejection alert filed an intake issue for EVERY non-MERGE dequeue. Today that produced 23 issues, ~85% noise: 13 MANUAL (the deliberate dequeue-push-rearm flow), 6 MERGE_CONFLICT (routine re-evaluation as siblings merged) — each mirrored into Linear by the creation sync. The PR comment (the dropped-arm warning) still posts for every non-MERGE reason; the intake issue now files only for failure-shaped reasons — CI_FAILURE plus anything unrecognized, fail-closed toward filing.
https://claude.ai/code/session_012epxJEzGqT7q3qcFhdZUt5