Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
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
11 changes: 4 additions & 7 deletions .fullsend/config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -4,21 +4,18 @@
# This file configures fullsend for per-repo installation mode.
# See ADR 0033 for details.
version: "1"
runtime: claude
roles:
- fullsend
- triage
- coder
- review
- fix
- retro
- prioritize
agents:
- source: https://raw.githubusercontent.com/redhat-community-ai-tools/qualityflow-fullsend/f6311b4f30ee5c23c597dba07bccc8ac0aa991be/harness/qualityflow.yaml#sha256=c0a51b2f75172aebd577fd38c8012a7c566a84f84812ebd9aa4cc07ad3b2220e
allowed_remote_resources:
- https://raw.githubusercontent.com/redhat-community-ai-tools/qualityflow-fullsend/
- https://raw.githubusercontent.com/fullsend-ai/fullsend/
- https://raw.githubusercontent.com/fullsend-ai/agents/
create_issues:
allow_targets:
orgs:
- fullsend-ai
repos:
- fullsend-ai/fullsend
- fullsend-ai/fullsend
Comment on lines 19 to +21

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Remediation recommended

2. Duplicate allow_targets repo 🐞 Bug ⚙ Maintainability

.fullsend/config.yaml lists fullsend-ai/fullsend twice under
create_issues.allow_targets.repos, which is redundant and can cause confusing or duplicated
downstream behavior in any logic that iterates these targets.
Agent Prompt
## Issue description
The per-repo fullsend config includes the same repo twice in `create_issues.allow_targets.repos`.

## Issue Context
`create_issues.allow_targets.repos` is an allowlist used to control where agents may create issues. Duplicates provide no additional capability and increase the risk of confusion or duplicated actions in any consumer that iterates this list.

## Fix Focus Areas
- .fullsend/config.yaml[17-21]

## Suggested change
Remove one of the duplicated entries so the list contains each repo only once.

Example:
```yaml
create_issues:
  allow_targets:
    repos:
      - fullsend-ai/fullsend
```

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools

3 changes: 2 additions & 1 deletion .github/workflows/fullsend.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -45,12 +45,13 @@ jobs:
issues: write
packages: read
pull-requests: write
uses: fullsend-ai/fullsend/.github/workflows/reusable-dispatch.yml@main
uses: fullsend-ai/fullsend/.github/workflows/reusable-dispatch.yml@f0f3eb2addfaab6e247341a7d866633290852c5f # main
with:
event_action: ${{ github.event.action }}
install_mode: per-repo
mint_url: ${{ vars.FULLSEND_MINT_URL }}
gcp_region: ${{ vars.FULLSEND_GCP_REGION }}
project_number: ${{ vars.FULLSEND_PROJECT_NUMBER }}
runner_image: ubuntu-24.04
secrets:
FULLSEND_GCP_WIF_PROVIDER: ${{ secrets.FULLSEND_GCP_WIF_PROVIDER }}
Expand Down
46 changes: 46 additions & 0 deletions .github/workflows/prioritize.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
# This file is managed by fullsend. Do not edit it directly.
# Upstream: https://github.com/fullsend-ai/fullsend/blob/main/internal/scaffold/fullsend-repo/.github/workflows/prioritize.yml
---
# fullsend-stage: prioritize
name: Prioritize

permissions:
actions: write
contents: read
id-token: write
issues: write

on:
workflow_dispatch:
inputs:
event_type:
required: true
type: string
source_repo:
required: true
type: string
event_payload:
required: true
type: string

concurrency:
group: fullsend-prioritize-${{ inputs.source_repo }}-${{ fromJSON(inputs.event_payload).issue.number }}
cancel-in-progress: true
Comment on lines +26 to +28

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Action required

1. Prioritize concurrency collisions 🐞 Bug ☼ Reliability

The new prioritize thin-caller sets concurrency.group using only
fromJSON(inputs.event_payload).issue.number, but the called reusable-prioritize.yml explicitly
supports either an issue or a pull_request payload; when the payload is PR-shaped, the group suffix
becomes empty and cancel-in-progress: true can cancel unrelated runs for the same repo.
Agent Prompt
## Issue description
`concurrency.group` in `.github/workflows/prioritize.yml` uses only `.issue.number` from the JSON payload. When the payload is for a pull request (no `issue` object), the group string can become `fullsend-prioritize-<repo>-`, causing cross-run cancellations due to `cancel-in-progress: true`.

## Issue Context
The called workflow (`.github/workflows/reusable-prioritize.yml`) already anticipates both issue and PR payloads by using `issue.number || pull_request.number` in its own concurrency group.

## Fix Focus Areas
- .github/workflows/prioritize.yml[26-28]

## Suggested change
Update the group to mirror the reusable workflow’s fallback logic, e.g.:
```yaml
concurrency:
  group: fullsend-prioritize-${{ inputs.source_repo }}-${{ fromJSON(inputs.event_payload).issue.number || fromJSON(inputs.event_payload).pull_request.number }}
  cancel-in-progress: true
```
(Optionally add a final fallback like `${{ github.run_id }}` if neither exists.)

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


jobs:
prioritize:
uses: fullsend-ai/fullsend/.github/workflows/reusable-prioritize.yml@f0f3eb2addfaab6e247341a7d866633290852c5f # main
with:
event_type: ${{ inputs.event_type }}
source_repo: ${{ inputs.source_repo }}
event_payload: ${{ inputs.event_payload }}
mint_url: ${{ vars.FULLSEND_MINT_URL }}
gcp_region: ${{ vars.FULLSEND_GCP_REGION }}
project_number: ${{ vars.FULLSEND_PROJECT_NUMBER }}
install_mode: per-repo
runner_image: ubuntu-24.04
secrets:
FULLSEND_GCP_WIF_PROVIDER: ${{ secrets.FULLSEND_GCP_WIF_PROVIDER }}
FULLSEND_GCP_PROJECT_ID: ${{ secrets.FULLSEND_GCP_PROJECT_ID }}
OTEL_EXPORTER_OTLP_TRACES_HEADERS: ${{ secrets.OTEL_EXPORTER_OTLP_TRACES_HEADERS }}
OTEL_EXPORTER_OTLP_HEADERS: ${{ secrets.OTEL_EXPORTER_OTLP_HEADERS }}
Loading