Files
TheRock/rocm-systems/projects/rocprofiler-compute/.ai/rules/pr-workflow.md
T
derek.holloway 7502bf64a4
CodeQL / Analyze (actions) (push) Canceled after 0s
CodeQL / Analyze (python) (push) Canceled after 0s
pre-commit / pre-commit (push) Canceled after 0s
Multi-Arch CI / setup (push) Canceled after 0s
Publish build_manylinux_x86_64 images / publish_build_manylinux_x86_64 (push) Canceled after 0s
Setup (Multi-Arch) / setup (push) Canceled after 0s
Multi-Arch CI / Linux::${{ fromJSON(needs.setup.outputs.linux_build_config || '{}').build_variant_label || 'skip' }} (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish no_rocm_image_ubi10 image / publish_no_rocm_image_ubi10 (push) Canceled after 0s
Multi-Arch CI / Windows::${{ fromJSON(needs.setup.outputs.windows_build_config || '{}').build_variant_label || 'skip' }} (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Multi-Arch CI / Manifest Diff (push) Canceled after 0s
TheRock Manifest Diff Report / Generate Manifest Diff Report (push) Canceled after 0s
Multi-Arch CI / CI Summary (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04 (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04_ocl_rt images / publish_no_rocm_image_ubuntu24_04_ocl_rt (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_rocgdb (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04_rocgdb images / publish_no_rocm_image_ubuntu24_04_rocgdb (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_ocl_rt (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Unit Tests / Unit Tests :: ubuntu-24.04 (push) Canceled after 0s
Unit Tests / Unit Tests :: windows-2022 (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_media (push) Canceled after 0s
Unit Tests / Unit Tests Summary (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_openmpi (push) Canceled after 0s
Flatten subprojects into a single base monorepo
2026-09-02 16:34:47 -07:00

110 lines
4.4 KiB
Markdown

# PR Workflow
Follow this methodology precisely when creating GitHub pull requests to produce
clean, reviewable PRs.
## Workflow
### 1. Understand the full scope of changes
Run these in parallel:
- `git status` (never use `-uall`)
- `git diff <base-branch>...HEAD` to see the full diff from base
- `git log --oneline <base-branch>..HEAD` to see all commits in the branch
- `git remote -v` to identify the correct repository
Look at ALL commits, not just the latest one.
### 2. Infer the repo's PR template from recent PRs
Never hardcode the PR template. Always infer it from recent PRs:
- Use GitHub MCP tools to search for recent rocprofiler-compute PRs in the repo.
- Read 2-3 recent PR bodies to identify the required sections and format.
- Match the template exactly — section names, ordering, and checklist format.
The template may change over time. Always check recent PRs for the latest format.
### 3. Ask the user for JIRA ID
Before drafting, ask the user:
- "Do you have a JIRA ID for this PR?"
- If yes, include it in the JIRA ID section.
- If no, leave the JIRA ID section empty (keep the heading, leave body blank).
- JIRA ID should never be specified using url, it should always be just the ticket id without the hyperlink part
### 4. Draft the PR title and body, then confirm with user
Present the full PR (title + body with all sections) to the user and wait for
approval. Do NOT create the PR without confirmation.
**Title rules:**
- Prefix with the project name: `[rocprofiler-compute]`
- Keep under 72 characters
- Use imperative mood ("Add X" not "Added X")
**Body rules:**
- **Motivation**: Describe what this PR does and why, in 2-3 concise lines.
Do not complain about previous behavior — focus on the positive framing of
the current change. Highlight bugfixes as a distinct line starting with
"Bugfix:" to make them stand out during review.
- **Technical Details**: Bullet list of key changes. Only include what a
reviewer needs to know — omit obvious refactoring details. Keep each point
to one line where possible.
- **JIRA ID**: The JIRA ticket ID (e.g., `AIPROFCOMP-123`), or empty if none.
- **Test Plan**: Concrete steps to verify the change works.
- **Test Result**: Fill in if tests were run, leave empty if pending.
- **Submission Checklist**: Check off items that apply.
**Reference style:**
- When referencing code from other projects as inspiration, use a hyperlink
to the specific file and line on GitHub. Format as:
[`function_name()`](https://github.com/org/repo/blob/branch/path/to/file.py#L127)
- Keep references concise — one to two lines max.
### 5. Identify the correct repository and create the PR
- Identify the correct remote repository from `git remote -v`. Do not assume
the repo name — verify it. The rocprofiler-compute project lives within the
`rocm-systems` monorepo.
- Ensure the branch is pushed to the remote before creating the PR.
- Use GitHub MCP tools to create the PR.
- When using MCP tools, pass the body as a plain string with actual newlines,
NOT with escaped `\n` characters — escaped newlines render as literal `\n`
in the PR body and break markdown formatting.
### 6. Verify and fix formatting
- After creation, read back the PR to verify markdown renders correctly.
- If formatting is broken (e.g., literal `\n`, HTML-escaped characters),
update the PR body immediately using the update PR tool.
### 7. Return the PR URL
Always return the PR URL so the user can
review it.
## Tone guidelines (learned from user)
- Be concise. If you can say it in one line, don't use three.
- Do not use negative framing about old code ("The old function was broken").
Use positive framing about the new behavior ("Add total ranks detection").
- Separate bugfixes from feature work — reviewers scan for these differently.
- Do not add refactoring commentary that is obvious from the diff.
- Do not duplicate the same information in Motivation and Technical Details.
## What NOT to do
- Do not create a PR without user confirmation of title and body.
- Do not create a PR to the wrong base branch (default: `rocprofiler-compute-develop`).
- Do not create a PR on the wrong repository.
- Do not use escaped `\n` in PR body strings passed to MCP tools.
- Do not hardcode the PR template — always infer it from recent PRs.
- Do not skip asking the user for JIRA ID.
- Do not include sensitive information (API keys, tokens) in PR descriptions.
- Do not force-push or modify commits as part of PR creation.