Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
89 commits
Select commit Hold shift + click to select a range
0da134d
fix: evicted transactions could reappear after a node restart (#20773)
mrzeszutko Feb 24, 2026
be1b224
fix: (A-575) prevent checkpoint event spam in L2BlockStream on restar…
danielntmd Feb 24, 2026
3de5b0b
Merge branch 'next' into merge-train/spartan
Feb 24, 2026
384ff54
chore: New alpha-net environment (#20800)
PhilWindle Feb 24, 2026
864f128
Merge branch 'next' into merge-train/spartan
Feb 24, 2026
ad6af06
Merge branch 'next' into merge-train/spartan
Feb 24, 2026
b856204
chore: increase testnet validators (#20809)
alexghr Feb 24, 2026
98b487f
Merge branch 'next' into merge-train/spartan
Feb 24, 2026
400b294
Merge branch 'next' into merge-train/spartan
Feb 24, 2026
366a232
chore: Configs for next-net, testnet etc
PhilWindle Feb 24, 2026
5e84076
chore: Configs for next-net, testnet etc (#20803)
AztecBot Feb 24, 2026
1f6a663
fix(ethereum): remove viem NonceManager to fix nonce gap after failed…
spypsy Feb 24, 2026
2b83ec3
fix: limit number of threads when verifying server-side proofs (#20818)
alexghr Feb 24, 2026
4c94489
chore: Comment update (#20820)
PhilWindle Feb 24, 2026
7d124cb
Merge branch 'next' into merge-train/spartan
Feb 24, 2026
6d49e7a
chore: Temper noisy log line (#20821)
PhilWindle Feb 24, 2026
5eedc91
Merge branch 'next' into merge-train/spartan
Feb 24, 2026
643d3d5
Merge branch 'next' into merge-train/spartan
Feb 24, 2026
5289b8e
Merge branch 'next' into merge-train/spartan
Feb 24, 2026
abb3506
fix: ci-metrics deployment fixes (race condition, caching, nav)
ludamad Feb 13, 2026
b9f99e3
feat: improve CI metrics data quality and dashboards
ludamad Feb 13, 2026
e5cf0c1
fix: improve CloudTrail correlation and drop spurious slack notify ch…
ludamad Feb 13, 2026
c540b09
fix: rewrite CloudTrail resolver for 90% instance type coverage
ludamad Feb 13, 2026
43f687e
fix: make SQLite the source of truth for CI runs
ludamad Feb 13, 2026
5e1395e
fix: add missing EC2 instance rates and recalculate costs
ludamad Feb 13, 2026
13b098e
fix: return unknown cost when instance type and vCPUs are both unknown
ludamad Feb 13, 2026
9283811
feat: consolidate CI Insights, Test Timings, and Attribution into one…
ludamad Feb 13, 2026
12700d6
fix: remove gunicorn --preload to prevent ci-metrics deadlock
ludamad Feb 13, 2026
a2b4b18
fix: improve test data pipeline for Test Details page
ludamad Feb 13, 2026
3c14176
fix: prevent double compression in ci-metrics proxy
ludamad Feb 14, 2026
88ea736
fix: pass through compression directly in ci-metrics proxy
ludamad Feb 14, 2026
b343a77
test: add proxy compression and view structure tests for ci-metrics
ludamad Feb 14, 2026
2d39c79
revert: remove lip-service ci-metrics tests
ludamad Feb 14, 2026
b9273e7
feat: add CI run duration charts and pre-aggregated stats table
ludamad Feb 19, 2026
8c7a746
feat: add CI phase timing instrumentation
ludamad Feb 19, 2026
4157226
feat: phase chart grouped by pipeline with totals on top
ludamad Feb 19, 2026
4811fd3
fix: phase chart shows total time per pipeline, per-circuit timing
ludamad Feb 19, 2026
8f1f870
feat: total CI time chart, skip 0-duration phases, bb cache bust
ludamad Feb 19, 2026
0dcc90c
fix: use EPOCHREALTIME for ms-precision phase timing, filter < 0.1s
ludamad Feb 20, 2026
f3f25bc
feat: P95 phase timing per run, drop cache transfer tracking
ludamad Feb 20, 2026
1018cf0
feat: CI health report presentation
ludamad Feb 20, 2026
f515a1f
feat: add /ci-health-report route
ludamad Feb 20, 2026
72b2858
feat: proxy /ci-health-report through rk dashboard
ludamad Feb 20, 2026
95922e7
fix: use awk instead of bc for phase timing (bc not on CI runners)
ludamad Feb 20, 2026
4846e72
chore: gitignore ci-health-report
ludamad Feb 23, 2026
2366940
feat: flake-prs page + one-time cost separation in cost overview
ludamad Feb 23, 2026
856d18a
feat: add /commits page — web port of scripts/commits
ludamad Feb 23, 2026
ce6d745
fix: add rk.py entry point for gunicorn rk:app
ludamad Feb 23, 2026
4912e6f
feat: commits page v2 — infinite scroll, path filters, rkapp Redis ca…
ludamad Feb 23, 2026
bc52de3
fix: commits page — 100/page with arrows, disk cache on /data, drop p…
ludamad Feb 23, 2026
00d0138
feat: SQLite response cache for all 6 ci-insights API endpoints
ludamad Feb 24, 2026
59c7f9f
feat: cache TTL logic + stashed view/rk.py changes
ludamad Feb 24, 2026
67292b1
perf: push GROUP BY into SQL for test_timings, add duration_secs DESC…
ludamad Feb 24, 2026
146b814
perf: restore SQLite response cache on all 6 ci-insights endpoints
ludamad Feb 24, 2026
5aeb571
feat: persist pr_cache to SQLite, duration_secs in daily stats, gunic…
ludamad Feb 24, 2026
c5d04c8
refactor: remove commits/history code from rk.py (ci-metrics concern)
ludamad Feb 24, 2026
5776067
fix: hash_str_orig uses byte length; cache_cleanup uses unixepoch
ludamad Feb 24, 2026
6b8076d
Delete .claude/skills/ci-logs/ci-logs.md
ludamad Feb 24, 2026
fa1f2c1
revert: drop spurious bb comment, log_ci_run and source_bootstrap cha…
ludamad Feb 24, 2026
9619d30
-
ludamad Feb 24, 2026
3c6f106
.
ludamad Feb 24, 2026
e4f633b
Delete ci3/dashboard/gunicorn.conf.py
ludamad Feb 24, 2026
ed21e1f
feat: read logs from s3, pass on dashboard, health report (#20507)
ludamad Feb 24, 2026
fbae4bc
Merge branch 'next' into merge-train/spartan
Feb 24, 2026
5194292
fix: Use async poseidon (#20826)
PhilWindle Feb 24, 2026
b9862fd
Merge branch 'next' into merge-train/spartan
Feb 24, 2026
374259f
Merge branch 'next' into merge-train/spartan
Feb 24, 2026
b87e3ab
Merge branch 'next' into merge-train/spartan
Feb 24, 2026
f85f79a
Merge branch 'next' into merge-train/spartan
Feb 24, 2026
864a790
Merge branch 'next' into merge-train/spartan
Feb 25, 2026
1cc1f53
Merge branch 'next' into merge-train/spartan
Feb 25, 2026
18b5473
chore: update rollup config for testnet and mainnet (#20827)
aminsammara Feb 25, 2026
01c4565
fix: Reduce tx hash conversions inside tx pool (#20829)
PhilWindle Feb 25, 2026
43ab03a
chore: backport skill (#20851)
alexghr Feb 25, 2026
7350ba3
feat: use native crypto to compute p2p message ID (#20846)
alexghr Feb 25, 2026
c5a1a49
feat(spartan): (A-535) enable admin API key auth for next-scenario ne…
danielntmd Feb 25, 2026
b31a6b2
Merge branch 'next' into merge-train/spartan
Feb 25, 2026
ab4bddc
Merge branch 'next' into merge-train/spartan
Feb 25, 2026
b124c67
Merge branch 'next' into merge-train/spartan
Feb 25, 2026
e083bc3
chore: increase max fee bots use in tests (#20867)
alexghr Feb 25, 2026
d82bfa8
Merge branch 'next' into merge-train/spartan
Feb 25, 2026
6abb68c
Merge branch 'next' into merge-train/spartan
Feb 25, 2026
693caf5
refactor(aztec-node): skip unnecessary subsystems in prover-only mode…
alexghr Feb 25, 2026
c751aed
Merge branch 'next' into merge-train/spartan
Feb 25, 2026
a4fad2f
feat(blob-client): (A-574) replace deprecated blob_sidecars API and r…
danielntmd Feb 25, 2026
8c63b3a
Merge branch 'next' into merge-train/spartan
Feb 25, 2026
9d770d5
Merge branch 'next' into merge-train/spartan
Feb 25, 2026
439ea6a
Merge branch 'next' into merge-train/spartan
Feb 25, 2026
d3dfe1f
fix: deflake batch tx req (#20861)
mralj Feb 25, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
205 changes: 205 additions & 0 deletions .claude/skills/backport/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,205 @@
---
name: backport
description: Backport a merged PR to a release branch, resolving conflicts if needed
argument-hint: <PR number> <target branch>
---

# Backport PR

Backport a merged PR to a release branch staging area. Uses the existing
`scripts/backport_to_staging.sh` for the happy path, then resolves conflicts
manually if the diff does not apply cleanly.

## Usage

```
/backport 12345 v4 # release branch
/backport 12345 v4-devnet-2 # devnet branch
```

## Workflow

### Step 1: Validate Arguments

Confirm exactly two arguments are provided: a PR number and a target branch.

Supported target branches:
- Release branches: `v2`, `v3`, `v4`
- Devnet branches: `v4-devnet-1`, `v4-devnet-2`, etc.

**Abort if:**
- Missing arguments -> "Usage: /backport <PR number> <target branch>"

### Step 2: Validate PR State

```bash
gh pr view <PR> --repo AztecProtocol/aztec-packages --json state,title
```

**Abort if:**
- `state` is not `MERGED` -> "PR #<N> is <state>, only merged PRs can be backported."

### Step 3: Check if Already Backported

Check whether this PR has already been backported to the staging branch by
looking for its PR number in the commit log:

```bash
STAGING_BRANCH="backport-to-${TARGET_BRANCH}-staging"
git fetch origin "$STAGING_BRANCH" 2>/dev/null
if git log "origin/$STAGING_BRANCH" --oneline --grep="(#<PR_NUMBER>)" | grep -q .; then
echo "PR #<PR_NUMBER> has already been backported to $STAGING_BRANCH."
fi
```

**Abort if** the PR number appears in the staging branch commit log. Show the
matching commit(s) and tell the user the backport already exists.

### Step 4: Create Isolated Worktree

Create a temporary worktree so the backport does not disturb the user's current
branch or working tree. Save the original directory to return to later.

```bash
ORIGINAL_DIR=$(pwd)
REPO_ROOT=$(git rev-parse --show-toplevel)
WORKTREE_DIR=$(mktemp -d)
git worktree add "$WORKTREE_DIR" HEAD
cd "$WORKTREE_DIR"
```

All subsequent steps run inside the worktree. On completion or failure, always
clean up (see Step 10).

### Step 5: Attempt Automated Backport

Run the backport script from the worktree:

```bash
./scripts/backport_to_staging.sh <PR_NUMBER> <TARGET_BRANCH>
```

**If the script succeeds:** Skip to Step 10 (cleanup and report).

**If the script fails:** Continue to Step 6 (conflict resolution).

### Step 6: Assess Conflicts

The script will have left the worktree on the `backport-to-<TARGET_BRANCH>-staging`
branch with partially applied changes and `.rej` files for hunks that failed.

1. **Verify current branch** is `backport-to-<TARGET_BRANCH>-staging`

2. **Identify the state of the working tree:**
```bash
git status
```

3. **Find all reject files:**
```bash
find . -name '*.rej' -not -path './node_modules/*' -not -path './.git/*'
```

4. **Get the full PR diff for reference:**
```bash
gh pr diff <PR_NUMBER>
```

### Step 7: Resolve Conflicts

For each `.rej` file:

1. **Read the reject file** to understand what hunk failed to apply
2. **Read the current version** of the corresponding source file on the staging branch
3. **Understand the intent** of the change from the PR diff context
4. **Apply the change manually** by editing the source file, adapting the change to
the current state of the code on the release branch
5. **Delete the `.rej` file** after resolving

Also check for files that may need to be created or deleted based on the PR diff
but were not handled by the partial apply.

**Important considerations:**
- The release branch may have diverged significantly from `next`. Do not assume
the surrounding code is the same as in the original PR.
- When adapting changes, preserve the semantic intent of the PR, not the exact
line-by-line diff.
- If a file referenced in the diff does not exist at all on the release branch,
evaluate whether it should be created or if the change is irrelevant. If
irrelevant, skip it and note this in the final report.

### Step 8: Verify Build

Check if changes exist in `yarn-project`:
```bash
git diff --name-only | grep '^yarn-project/' || true
```

If yarn-project changes exist, run from `yarn-project`:
```bash
yarn build
```

Check if changes exist outside `yarn-project`:
```bash
git diff --name-only | grep -v '^yarn-project/' || true
```

If changes exist outside yarn-project, run bootstrap from the repo root:
```bash
BOOTSTRAP_TO=yarn-project ./bootstrap.sh
```

Fix any build errors that arise from the backport adaptation.

### Step 9: Finish with Script

Clean up and let the script handle commit, push, and PR management:

```bash
find . -name '*.rej' -delete
git add -A
./scripts/backport_to_staging.sh --continue <PR_NUMBER> <TARGET_BRANCH>
```

### Step 10: Cleanup and Report

Return to the original directory and remove the temporary worktree:

```bash
cd "$ORIGINAL_DIR"
git worktree remove "$WORKTREE_DIR"
```

**Always clean up the worktree**, even if earlier steps failed. If `git worktree
remove` fails (e.g., uncommitted changes), use `git worktree remove --force`.

Print a summary:
- PR number and title that was backported
- Target branch and staging branch name
- Whether conflicts were encountered and resolved
- Link to the staging PR (if one was created or already exists)

## Key Points

- **Always use a worktree**: All backport work happens in a temporary git worktree
so the user's current branch and working tree are never disturbed. Always clean
up the worktree when done, even on failure.
- **Script first, manual second**: Always try the automated script first. It handles
branch setup, authorship, push, and PR management. Only do manual conflict
resolution if it fails.
- **Use `--continue` after resolving**: The script's `--continue` mode picks up where
the initial run left off (commit, push, PR creation, body update).
- **Preserve author attribution**: The script uses `--author` to set the original PR
author on the commit. The committer stays as whoever runs the command (GPG signing
works).
- **Verify builds but skip tests**: Run `yarn build` or bootstrap to confirm the
backport compiles. Do not run the full test suite -- that is CI's job.
- **Semantic, not mechanical**: When resolving conflicts, adapt the change to the
release branch's code state. The goal is the same behavioral change, not an exact
diff match.
- **Clean up `.rej` files**: Always delete `.rej` files before committing.
- **Staging branch convention**: The staging branch is always
`backport-to-{TARGET_BRANCH}-staging` (e.g., `backport-to-v4-staging`,
`backport-to-v4-devnet-2-staging`). Multiple backports accumulate on the same
staging branch and get merged together.
Loading
Loading