---
name: deliver-pull-request
description: Deliver a focused HardwareVisualizer change as a pull request, then address its CI and review feedback to completion. Use when the user explicitly asks to create or publish a PR, or to finish an existing PR.
---

# Deliver Pull Request

Publish one coherent change and finish the CI and review work that belongs to
it. This workflow ends at an approved PR; merging is a separate request.

## 1. Confirm The Boundary

A request to create or publish a PR authorizes the branch, commit, push, PR,
review replies, and thread resolution needed to deliver that change. It does
not authorize merge, destructive Git operations, or unrelated changes.
It also authorizes a separate Issue only for a verified merge-blocking finding
discovered during review that does not belong to the PR's requirement. Follow
`SECURITY.md` instead of creating a public Issue for a vulnerability.

Before editing, apply
[AGENTS.md](../../../AGENTS.md#change-justification-and-simplicity) and be able
to explain:

- why the change is needed now;
- what must change;
- how the smallest coherent solution works; and
- why plausible alternatives are unnecessary or worse for this requirement.

Do not create mandatory decision paperwork. Preserve a non-obvious decision
only at the smallest durable owner that will need it.

## 2. Keep The Change Focused

- Inspect the current branch, worktree, base, and associated PR.
- Reuse only an open PR whose head repository and branch, intended base, and
  represented requirement match the current change. Stop when the target is
  missing or ambiguous instead of creating or updating a different PR.
- Preserve an existing PR's Draft or Ready state. If pushing or changing that
  state can enable repository automation to merge without merge authorization,
  stop before the mutation.
- Preserve unrelated user changes. Use an isolated worktree when necessary.
- Implement only the current requirement. Keep adjacent findings separate.
- Add a focused regression test when it can prove the changed contract.
- Allow complexity only when the current requirement or an established
  ownership boundary requires it.

## 3. Publish The Pull Request

Read and use [change-kind-naming](../change-kind-naming/SKILL.md). Follow
`CONTRIBUTING.md` and the PR template.

1. Confirm the branch contains only the intended change.
2. Run focused checks, then broader checks only when the blast radius requires
   them.
3. Review the complete diff and stage only intended paths.
4. Create a Conventional Commit and push the project-prefixed branch.
5. Create or update the PR in the Ready or Draft state requested by the user.
6. Report the PR URL, scope, validation, and any preserved unrelated work.

Prefer an available GitHub connector. The `gh` CLI cannot complete GitHub
operations inside the project sandbox; when it is needed, run the explicit
operation in the permitted environment with the required approval.

## 4. Finish CI And Review

Separate discovery from verification so review converges on approval.

### Primary Review

1. Let the configured automatic reviewers perform one primary review of the
   published change.
2. Collect automatic and human feedback before editing and keep a working
   record of each claim, evidence, decision, and owning boundary.
3. Triage all accepted findings together and make one focused correction batch.

The primary review is the only broad review. Do not request another full review
after corrections.

For review feedback, read and use
[gh-ai-review-triage](../gh-ai-review-triage/SKILL.md):

- Treat a comment as evidence of a possible problem, not as a prescribed
  patch.
- Implement a suggestion only when all of these are true: the problem is
  supported by code, tests, CI, or a canonical decision; it breaks the current
  requirement's correctness or security, or makes the changed boundary unclear
  or brittle for a presently required case; the PR owns that boundary; and a
  smallest coherent fix is identified.
- Decline when the claim is false, stale, duplicate, outside the current
  requirement without affecting its contract, or owned by another boundary
  that this requirement does not need to change. Reply with the verified
  evidence, scope decision, and responsible boundary.
- Do not use low implementation cost, reviewer preference, or possible future
  value to justify implementation.
- If the evidence is insufficient, or a verified risk is real but outside the
  current PR's responsibility, do not guess, dismiss it, or add a defensive
  patch. Ask the maintainer for a decision.
- Keep accepted corrections narrow, run the relevant checks, reply with the
  decision and evidence, and resolve the thread.
- Never request a Codex review manually. Codex decides when to review.

### Verification Reviews

After the correction batch:

1. Run focused checks, then commit and push the complete correction batch.
2. Let CodeRabbit's automatic incremental review and relevant CI inspect that
   push.
3. Treat the incremental review as verification of the primary-review
   decisions and the correction diff, not as a new broad review.
4. Accept a later finding in this PR when it proves that a primary finding
   remains unresolved, that the correction introduced a regression, or that a
   newly discovered merge-blocking problem belongs to the current requirement
   and changed boundary. A merge-blocking problem requires concrete evidence of
   a security or soundness failure, data loss or corruption,
   build/release/runtime failure on a supported path, or a serious violation of
   the current requirement or public contract.
5. Reply and defer later findings that are style or naming preferences,
   speculative fallbacks, future-facing abstractions, minor maintainability
   improvements, or otherwise non-blocking. They do not justify another push.
6. For a verified merge-blocking finding outside the PR's requirement, create a
   separate Issue with the evidence, impact, and owning boundary, then link it
   from the review reply. Do not expand this PR. For a vulnerability, follow
   `SECURITY.md` and do not create a public Issue.
7. If another correction is required, batch it and let the next push receive
   automatic incremental review. If automatic review was paused or skipped,
   request one with `@coderabbitai review`. Never use
   `@coderabbitai full review`.
8. Once threads are resolved and CI passes, use `@coderabbitai approve` when
   needed and confirm GitHub records approval.

If two consecutive verification reviews fail to reach approval without a new
in-scope merge-blocking finding, stop automatic correction. An in-scope
merge-blocking finding may receive a focused fix, but if the same critical
problem does not converge after two corrections, report the unresolved evidence
to the maintainer instead of adding another speculative patch.

For a failing check, inspect the failing leaf job and exact error before
editing. Separate product regressions from test and environment failures, and
fix only an in-scope cause.

## Completion Gate

Stop when:

- the requested change is complete and contains no unrelated work;
- relevant local checks and CI pass;
- primary-review feedback is fixed or declined with evidence, and its threads
  are resolved;
- GitHub has no outstanding change request and records approval from the
  approval-capable reviewer; and
- the PR is in the requested publication state and GitHub reports it mergeable.

Do not seek more findings merely for additional certainty. A verification
review does not reopen broad discovery. If permission, approval, a required
gate, or an external service prevents completion, report the concrete blocker
and the evidence already completed.
