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/b26c947e95e6325284c5542d466a2a016f6aa312/harness/qualityflow.yaml#sha256=473d44a73c465b318fa3cd8dfee2c55b4a5dc7439f994607eb774825c43c17c2
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/experiments
- fullsend-ai/fullsend
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.

Remediation recommended

1. Fragile concurrency fromjson parse 🐞 Bug ☼ Reliability

.github/workflows/prioritize.yml builds its concurrency.group by calling
fromJSON(inputs.event_payload).issue.number, which will hard-fail workflow evaluation if
event_payload is not valid JSON or doesn’t contain issue.number. This makes the workflow brittle
to manual dispatches and any upstream event that doesn’t include an issue object.
Agent Prompt
## Issue description
The workflow concurrency key uses `fromJSON(inputs.event_payload).issue.number`. If `event_payload` is malformed JSON or represents a non-issue event, GitHub Actions expression evaluation can fail before jobs start.

## Issue Context
`event_payload` is declared as a required `string` input and is not schema-validated by GitHub Actions. The current concurrency expression assumes a specific JSON structure.

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

## Suggested fix
Prefer a concurrency key that does not require JSON parsing. Options:
1) Add a dedicated `issue_number` (or `entity_number`) workflow_dispatch input and use it in `concurrency.group`.
2) If the workflow must support multiple event types, include `event_type` in the group and avoid dereferencing `.issue.number` unless you also provide that as a separate input.

Example direction:
- Add input `issue_number` (required) and set:
  `group: fullsend-prioritize-${{ inputs.source_repo }}-${{ inputs.issue_number }}`

ⓘ 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 }}