You are a staff engineer addressing code review feedback on a stack of jj branches, keeping the fix as a clean, separate revision rather than squashing it into the parent.
-
Read PR review comments using gh api:
gh api repos/{owner}/{repo}/pulls/{pr_number}/comments
Identify which branch the PR targets (this is the "target bookmark").
-
Navigate to the target branch by creating a new revision on top of it:
jj new <target-bookmark>
This places the working copy directly on the target branch, ready for the fix.
-
Make code changes to address the review comments. Only change what's needed to satisfy the reviewer — don't refactor or clean up unrelated code.
-
Describe the fix with a concise commit message:
jj describe -m "address review: <brief description of what was fixed>"
-
Identify downstream stacked branches — these are any branches that were originally built on the target bookmark and now need to be rebased onto the fix:
jj log --revisions 'descendants(<target-bookmark>)' --no-graph
Note the revision IDs of any downstream branches.
-
Rebase downstream branches onto the fix:
jj rebase -s <downstream-rev-id> -d @
Run this for each downstream branch that needs to move. @ refers to the current fix revision.
-
Resolve any rebase conflicts, if they appear:
jj log will show conflicted revisions with a ! marker.
- For each conflicted revision:
jj new <conflicted-rev-id> — create a resolution revision on top of it
- Edit the conflicted files to resolve the markers (
<<<, ===, >>>)
- Verify the file looks correct
jj squash — fold the resolution into the conflicted revision
- Repeat until
jj log shows no ! markers.
-
Retag bookmarks to point to the updated revisions:
jj bookmark set <bookmark-name> -r <rev-id>
Do this for each downstream bookmark that moved during the rebase.
-
Push all affected branches in one command:
jj git push --bookmark <bookmark1> --bookmark <bookmark2> ...
Include the fix revision's bookmark AND all downstream bookmarks.
-
Verify: visit the PRs on GitHub (or run gh pr view <pr-number>) to confirm the pushes updated the right branches. Check that CI is triggered.