Skip to content

Commit 40e0206

Browse files
authored
chore(ci): route spartan/spartan-v5 merge-train notifications to #team-alpha-ci (#24963)
## What Two related changes for the spartan / spartan-v5 merge-train Slack notifications: 1. **Route them to `#team-alpha-ci`** instead of `#team-alpha`, so the team channel stops receiving CI noise. 2. **Stop silently dropping failed Slack posts** in `ci3/slack_notify`, so a mis-delivered notification (e.g. the bot isn't a member of the target channel) is visible in the CI log instead of vanishing. ## (1) Notification sites re-routed | File | Notification | Before → After | |---|---|---| | `ci3/merge_train_failure_slack_notify` | "PR merged into …", CI failure, and dequeue notifications for spartan / spartan-v5 (each also kicks off a ClaudeBox investigation) | `#team-alpha` → `#team-alpha-ci` | | `.github/workflows/merge-train-stale-check.yml` | daily "`merge-train/spartan…` has not merged into `next`/`v5-next`" stale alert | `#team-alpha` → `#team-alpha-ci` | | `.github/workflows/network-healthcheck.yml` | "Starting network healthcheck …" kickoff + the ClaudeBox `respond_to_user` summary | `#team-alpha` → `#team-alpha-ci` | | `scripts/socket-fix-ci.sh` | Socket dependency-vulnerability fix notification | `#team-alpha` → `#team-alpha-ci` | | `ci3/merge_train_stale_check` | usage-example comment only | updated for consistency | `ci3/run_test_cmd` — flake notifications for spartan / spartan-v5 **already** post to `#team-alpha-ci` (since [#23219](#23219), 2026-05-12). ## (2) Surface Slack post failures (`ci3/slack_notify`) Previously the `chat.postMessage` curl ended in `&>/dev/null`, so any failure — most commonly `not_in_channel` when the bot isn't a member of the target channel — disappeared with no trace. This is the likely reason flake notifications to `#team-alpha-ci` were never observed despite the routing being correct: the posts were failing silently. The script now captures the API response and logs a clear error to stderr (`slack_notify: failed to post to Slack channel '<chan>': <error>`) on any non-`ok` response or curl/network failure. It stays best-effort — the failure is logged, the caller is not failed. ## Base & backport Based on **`merge-train/spartan`** (targets `next`), and labeled **`backport-to-v5-next`** so the same change is carried over to the `v5-next` line. The `network-healthcheck` and `merge-train-stale-check` schedules ultimately run from the default branch once this reaches `next` via the train; the per-train CI scripts (`merge_train_failure_slack_notify`, `slack_notify`, `socket-fix-ci.sh`) run from the checked-out train head. ## Left untouched (intentionally) - `.claude/skills/merge-trains/SKILL.md` team-mapping table, `ci3/dashboard/.../ci-health-report.html`, `spartan/testnet-runbook.md` — these reference the owning **team** (`#team-alpha`) or are a manual human runbook step, not automated CI notifications. - Other merge-train channel mappings (`#team-bonobos`, `#honk-team`, `#help-ci`, `#dev-rels`, `#team-fairies`) are unrelated and unchanged. ## Notes - No new Slack scopes are required — every call uses the same `SLACK_BOT_TOKEN` + `chat.postMessage`. The bot must be a **member of `#team-alpha-ci`** for delivery; once (2) lands, a missing membership shows up as a `not_in_channel` line in the CI log. The **ClaudeBox app** must also be a member so the healthcheck summary and failure/dequeue kickoff replies can post. --- *Created by [claudebox](https://claudebox.work/v2/sessions/e345f34e9b2da947/jobs/1) · group: `slackbot` · requested by Santiago Palladino · [Slack thread](https://aztecprotocol.slack.com/archives/C0AU8BULZHC/p1784902660161109?thread_ts=1784902660.161109&cid=C0AU8BULZHC)*
1 parent 76a1caf commit 40e0206

6 files changed

Lines changed: 20 additions & 10 deletions

File tree

.github/workflows/merge-train-stale-check.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ jobs:
2020
env:
2121
GH_TOKEN: ${{ secrets.AZTEC_BOT_GITHUB_TOKEN }}
2222
SLACK_BOT_TOKEN: ${{ secrets.SLACK_BOT_TOKEN }}
23-
run: ./ci3/merge_train_stale_check merge-train/spartan '#team-alpha'
23+
run: ./ci3/merge_train_stale_check merge-train/spartan '#team-alpha-ci'
2424

2525
spartan-v5:
2626
name: Check merge-train/spartan-v5
@@ -36,7 +36,7 @@ jobs:
3636
GH_TOKEN: ${{ secrets.AZTEC_BOT_GITHUB_TOKEN }}
3737
SLACK_BOT_TOKEN: ${{ secrets.SLACK_BOT_TOKEN }}
3838
BASE_BRANCH: v5-next
39-
run: ./ci3/merge_train_stale_check merge-train/spartan-v5 '#team-alpha'
39+
run: ./ci3/merge_train_stale_check merge-train/spartan-v5 '#team-alpha-ci'
4040

4141
fairies-v5:
4242
name: Check merge-train/fairies-v5

.github/workflows/network-healthcheck.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,14 +37,14 @@ jobs:
3737
5. Any errors (level >= 50) or warnings (level 40) in the last 8 hours
3838
6. Bot status if applicable
3939
40-
Create a gist with the full healthcheck report. Then post a concise summary to the #team-alpha channel via respond_to_user. Flag anything that needs attention (stopped bots, missed slots, errors, low peer counts).
40+
Create a gist with the full healthcheck report. Then post a concise summary to the #team-alpha-ci channel via respond_to_user. Flag anything that needs attention (stopped bots, missed slots, errors, low peer counts).
4141
4242
Format the respond_to_user message as a brief network status overview, e.g.:
4343
- testnet: healthy, block 5570, 100 peers
4444
- mainnet: healthy, block 1234, 50 peers
4545
- devnet: WARNING - bot stopped (insufficient balance)
4646
Link to the gist for full details."
4747
48-
./ci3/slack_notify_with_claudebox_kickoff "#team-alpha" \
48+
./ci3/slack_notify_with_claudebox_kickoff "#team-alpha-ci" \
4949
"Starting network healthcheck for: ${NETWORKS}" \
5050
"$PROMPT"

ci3/merge_train_failure_slack_notify

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,9 +36,9 @@ elif [[ "$REF_NAME" == "merge-train/fairies" ]]; then
3636
elif [[ "$REF_NAME" == "merge-train/fairies-v5" ]]; then
3737
channel="#team-fairies"
3838
elif [[ "$REF_NAME" == "merge-train/spartan" ]]; then
39-
channel="#team-alpha"
39+
channel="#team-alpha-ci"
4040
elif [[ "$REF_NAME" == "merge-train/spartan-v5" ]]; then
41-
channel="#team-alpha"
41+
channel="#team-alpha-ci"
4242
else
4343
exit 0
4444
fi

ci3/merge_train_stale_check

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
# Usage: merge_train_stale_check <merge-train-branch> <slack-channel>
77
#
88
# Example:
9-
# merge_train_stale_check merge-train/spartan '#team-alpha'
9+
# merge_train_stale_check merge-train/spartan '#team-alpha-ci'
1010
#
1111
# Required env vars:
1212
# GH_TOKEN — GitHub API token (used by `gh api`)

ci3/slack_notify

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,17 @@ fi
88
channel=${2:-"#aztec3-ci"}
99
data=$(jq -n --arg channel "$channel" --arg text "$1" '{channel: $channel, text: $text}')
1010

11-
curl -X POST https://slack.com/api/chat.postMessage \
11+
# Post to Slack, capturing the API response. Previously the response went to
12+
# /dev/null, so a failed post (most commonly the bot not being a member of the
13+
# target channel -> "not_in_channel", or an invalid channel/token) vanished with
14+
# no trace and could not be troubleshooted. Surface any failure in the CI log.
15+
# Best-effort: log the failure but do not fail the caller.
16+
response=$(curl -sS -X POST https://slack.com/api/chat.postMessage \
1217
-H "Authorization: Bearer $SLACK_BOT_TOKEN" \
1318
-H "Content-type: application/json" \
14-
--data "$data" &>/dev/null
19+
--data "$data" 2>&1)
20+
21+
if [ "$(jq -r '.ok // false' <<<"$response" 2>/dev/null)" != "true" ]; then
22+
error=$(jq -r '.error // empty' <<<"$response" 2>/dev/null)
23+
echo "slack_notify: failed to post to Slack channel '$channel': ${error:-$response}" >&2
24+
fi

scripts/socket-fix-ci.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,7 @@ ${LINKS}"
122122
${LINKS}"
123123
fi
124124

125-
data=$(jq -n --arg channel "#team-alpha" --arg text "$TEXT" '{channel: $channel, text: $text}')
125+
data=$(jq -n --arg channel "#team-alpha-ci" --arg text "$TEXT" '{channel: $channel, text: $text}')
126126

127127
curl -X POST https://slack.com/api/chat.postMessage \
128128
-H "Authorization: Bearer $SLACK_BOT_TOKEN" \

0 commit comments

Comments
 (0)