Skip to content

submit-for-review should apply a configurable ready-for-qa label to the closed issue after merge #182

Description

@sebastientaggart

Problem

When /submit-for-review successfully merges a PR, the linked issue is auto-closed by GitHub's closing-keyword and a resolution comment is posted. But no label is applied to the closed issue, so projects that gate human QA on a label (e.g. ready-for-qa) lose track of which closed issues are actually ready to test.

Today the section in submit-for-review.md is even titled "After merge — QA label and success report" but the QA-label step isn't implemented. The success report happens; the label doesn't.

Why it matters

The intended workflow is:

  1. PR merges
  2. Issue closes
  3. Reviewer (human) picks up closed-and-labeled issues from the QA queue
  4. Reviewer labels qa-passed or qa-failed

Step 3 currently requires the operator to remember to label each merge by hand. After a multi-PR session that's easy to miss — I just shipped four PRs back-to-back and forgot to label any of them.

Proposed behaviour

After a successful merge in submit-for-review (Step 8's "After merge" path), apply a configurable QA label to the linked issue using gh issue edit <issue-number> --add-label "<value>".

Configuration knob in .codecannon.yaml (suggested key + default):

qa_label: ready-for-qa # set to '' or omit to disable

Skip the label step silently if:

  • qa_label is empty / unset
  • No linked issue was identified in Step 3 (matches the existing resolution-comment skip)
  • The label apply fails (log + continue; do not block the success report)

Acceptance

  • After a merge, the closed issue carries the configured QA label.
  • When qa_label is unset, behaviour is unchanged from today.
  • Failure to apply the label (label doesn't exist in the repo, gh auth issue, etc.) prints a warning but does not roll back the merge or block the
    success report.
  • The skill template's "After merge — QA label and success report" section header now matches what the code actually does.

Notes

  • Should probably also handle qa-failed / qa-passed removal if the label being applied is ready-for-qa (so re-running on an issue that was
    previously QA'd resets state cleanly), but that's a nice-to-have, not blocking.
  • Worth considering whether docs-only PRs should skip the label by default — but that's hard to detect reliably from skill-side; probably leave it to the operator to decide per project.

Metadata

Metadata

Assignees

No one assigned

    Labels

    ready-for-qaIssue is ready to be QA tested

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions