Skip to content

chore: update fullsend shim workflow - #144

Open
fullsend-ai-fullsend[bot] wants to merge 1 commit into
mainfrom
fullsend/onboard
Open

fullsend-ai-fullsend[bot] wants to merge 1 commit into
mainfrom
fullsend/onboard

Conversation

@fullsend-ai-fullsend

Copy link
Copy Markdown

This PR updates the fullsend shim workflow to match the current template in the .fullsend config repo.

The shim content has drifted from the template — this brings it back in sync.

@fullsend-ai-fullsend
fullsend-ai-fullsend Bot requested a review from a team as a code owner August 11, 2026 21:25
@fullsend-ai-review

fullsend-ai-review Bot commented Aug 11, 2026 •

Copy link
Copy Markdown

🤖 Finished Review · ✅ Success · Started 9:26 PM UTC · Completed 9:36 PM UTC

Commit: 9103755 · View workflow run →

@fullsend-ai-review

fullsend-ai-review Bot commented Aug 11, 2026 •

Copy link
Copy Markdown

Review

Findings

High

  • [permission-expansion] .github/workflows/fullsend.yaml:44 — Reusable workflow reference changed from a pinned commit SHA (701e62a9c6f104ed68f8d4085d9c3b8bad3a82e4) to a mutable branch reference (@main). The dispatch job inherits workflow-level permissions including actions:write and id-token:write (OIDC token minting). With a pinned SHA, the exact code that runs is immutable and auditable. With @main, any actor with write access to konflux-ci/.fullsend’s main branch can modify dispatch.yml to exfiltrate OIDC tokens or abuse actions:write to trigger further workflows. The base branch code included a # main comment alongside the SHA, demonstrating the pinning was deliberate.
    Remediation: Pin the reusable workflow reference to a specific commit SHA with a branch comment, e.g., @<sha> # main. If the upstream template genuinely uses @main, that requires explicit human decision and documentation.

  • [protected-path] .github/workflows/fullsend.yaml — This PR modifies a file under the protected path .github/. The PR has no linked issue providing authorization for modifying governance/infrastructure files. Human approval is required for protected-path changes.

Medium

  • [CI coverage regression] .github/workflows/fullsend.yaml:32 — The pull_request_target trigger types were reduced from [opened, synchronize, ready_for_review, closed] to [closed]. The dispatch job will no longer forward PR-open, push, and ready-for-review events to dispatch.yml. If dispatch.yml contains stages handling these actions, they will silently stop triggering for this repository. The external dispatch.yml (in konflux-ci/.fullsend) cannot be verified from this repo. The PR description characterizes this as a template sync but does not explicitly call out this functional behavioral change.
    Remediation: Confirm that dispatch.yml in the .fullsend config repo no longer has stage branches that act on opened, synchronize, or ready_for_review pull_request_target actions before merging.

  • [logic-error] .github/workflows/fullsend.yaml:48 — The new review-denied job and the dispatch job both fire in parallel for the same issue_comment event. When an unauthorized user posts /fs-review or /fullsend-review, review-denied posts a denial comment, but the dispatch job simultaneously forwards the event to dispatch.yml with no authorization filter. If dispatch.yml does not independently enforce authorization, the review will execute despite the denial message. The review-denied job is advisory only — it cannot block the dispatch job.
    Remediation: Verify that dispatch.yml independently enforces authorization for /fs-review and /fullsend-review commands.

  • [missing-authorization] .github/workflows/fullsend.yaml — This PR has no linked issue. The change is non-trivial (40+ added lines, structural CI changes, altered trigger surface, security-relevant reference pinning downgrade). The author is a bot (app/fullsend-ai-fullsend), proposing changes to the CI/CD pipeline that governs its own trigger conditions and access.
    Remediation: Require a linked issue or explicit written approval from a human maintainer before merging.

Low

  • [architectural-coherence] .github/workflows/fullsend.yaml:48 — The new review-denied job is architecturally consistent with the existing stop-fix job (same permissions pattern, same use of env: for untrusted input, same author_association check). Its addition genuinely fits the ‘sync’ description.

Next steps:

  • /fs-fix — agent addresses review findings automatically
  • /fs-fix <your instruction> — agent fixes with your specific guidance
  • Push commits directly — review re-runs automatically on push
  • /fs-fix-stop — disable automatic fix runs for this PR
Previous run

Review

Findings

Critical

  • [supply-chain-integrity] .github/workflows/fullsend.yaml:44 — The reusable workflow reference is changed from a pinned SHA (701e62a9c6f104ed68f8d4085d9c3b8bad3a82e4) to the floating @main ref. This is a pull_request_target workflow with elevated permissions (actions: write, id-token: write). With an unpinned reference, any push to the main branch of konflux-ci/.fullsend causes the new code to execute with these elevated permissions in this repository without any review gate.
    Remediation: Revert the uses: line to a pinned SHA. Use the pattern @<sha> # main.

High

  • [missing-authorization] .github/workflows/fullsend.yaml — This PR is authored by fullsend-ai-fullsend[bot], the automation system itself, proposing substantive changes to the shim workflow that governs its own invocation — including SHA unpinning and trigger narrowing. There is no linked tracking issue authorizing these architectural decisions. The PR title characterizes this as a routine template sync, but the changes are structural.
    Remediation: A human maintainer must explicitly authorize these changes via a linked issue or explicit review approval.

  • [CI-coverage-regression] .github/workflows/fullsend.yaml:32 — The pull_request_target trigger types are narrowed from [opened, synchronize, ready_for_review, closed] to [closed] only. Three PR lifecycle events are removed. If dispatch.yml has handlers for opened, synchronize, or ready_for_review actions, those handlers become unreachable from this repository. The PR body provides no justification for removing these triggers.
    Remediation: Verify that dispatch.yml no longer handles opened, synchronize, or ready_for_review actions before merging, and document the rationale.

  • [protected-path] .github/workflows/fullsend.yaml — This PR modifies .github/workflows/fullsend.yaml, which is under the protected path .github/. The PR has no linked issue and the description does not explain why the protected files are being changed. Human approval is required for all protected-path changes.

Medium

  • [logic-error] .github/workflows/fullsend.yaml:48 — The new review-denied job and the dispatch job both fire for issue_comment events from non-bot users with no dependency relationship. When an unauthorized user comments /fs-review, both jobs execute concurrently: dispatch forwards the event to dispatch.yml while review-denied posts a denial comment. The authorization check is cosmetic unless dispatch.yml independently enforces authorization.
    Remediation: Either add an authorization condition to the dispatch job's if clause, make review-denied a prerequisite via needs:, or confirm and document that dispatch.yml independently enforces authorization.

Next steps:

  • /fs-fix — agent addresses review findings automatically
  • /fs-fix <your instruction> — agent fixes with your specific guidance
  • Push commits directly — review re-runs automatically on push
  • /fs-fix-stop — disable automatic fix runs for this PR
Previous run (2)

Review

Findings

High

  • [permission-expansion] .github/workflows/fullsend.yaml:44 — The reusable workflow reference for the dispatch job was changed from a pinned commit SHA (@701e62a9c6f104ed68f8d4085d9c3b8bad3a82e4) to a mutable branch reference (@main). This is a supply chain security regression. The dispatch job inherits the caller's top-level permissions, which include id-token: write (can mint OIDC tokens to impersonate this repository) and actions: write (can modify workflow runs). If the main branch of konflux-ci/.fullsend is compromised, an attacker-controlled dispatch.yml would execute with these elevated permissions. This also constitutes an architectural coherence departure: the original pinned SHA was consistent with the shim's documented security model, and switching to @main means future changes are adopted automatically without review.
    Remediation: Pin the reusable workflow reference back to a specific commit SHA. If automatic updates are desired, use Dependabot or Renovate to propose SHA updates as reviewable pull requests.

  • [protected-path] .github/workflows/fullsend.yaml — This PR modifies a file under the protected path .github/. The PR has no linked issue and does not provide explicit justification for modifying governance/infrastructure files. Human approval is required for all protected-path changes regardless of context.

Medium

  • [missing-authorization] .github/workflows/fullsend.yaml — This bot-authored PR contains three distinct behavioral changes — trigger scope narrowing, SHA unpinning, and a net-new job with new permissions — but no linked issue or explicit authorization. The PR body frames it as a mechanical template sync ('shim content has drifted'), which understates the scope of the changes.
    Remediation: Open or link an issue that explicitly authorizes the behavioral changes, especially the SHA unpinning and trigger narrowing.

  • [logic-error] .github/workflows/fullsend.yaml:32 — The pull_request_target trigger types were narrowed from [opened, synchronize, ready_for_review, closed] to [closed]. This means upstream stages in dispatch.yml that handle opened, synchronize, or ready_for_review events will silently stop receiving them from this repository. The synchronize event (fired on every push to a PR branch) is typically the most important for CI-like workflows. The workflow's own header comment (lines 14-17) states that 'Adding a new stage requires only a case branch in dispatch.yml — zero changes to enrolled repos,' but narrowing the trigger types in enrolled repos breaks that contract.
    Remediation: Verify that the upstream dispatch.yml@main no longer handles opened, synchronize, or ready_for_review events before removing them from the shim. If those stages still exist upstream, restore the original event types.

  • [race-condition] .github/workflows/fullsend.yaml:48 — The new review-denied job (lines 48-82) posts a denial comment for unauthorized /fs-review or /fullsend-review commands, but it runs concurrently with the dispatch job. The dispatch job's if condition evaluates to true for all non-bot issue comments, so it will forward the unauthorized user's review command to dispatch.yml at the same time review-denied posts 'You do not have permission.' If dispatch.yml does not independently gate on the commenter's authorization, the review command will execute despite the denial message.
    Remediation: Either add a needs: review-denied dependency to the dispatch job (and gate on its result), or confirm and document that dispatch.yml independently checks author_association and rejects unauthorized review commands.

Low

  • [scope-mismatch] .github/workflows/fullsend.yaml:48 — The new review-denied job is framed as part of a template sync, but it introduces net-new local inline logic with new permissions (issues: write, pull-requests: write) not present in the original workflow. Adding a locally-defined job with inline shell script goes beyond a 'drift correction' and is a feature addition.
    Remediation: Confirm that the upstream .fullsend template now includes this job, and reference the upstream commit or PR that introduced it.

Next steps:

  • /fs-fix — agent addresses review findings automatically
  • /fs-fix <your instruction> — agent fixes with your specific guidance
  • Push commits directly — review re-runs automatically on push
  • /fs-fix-stop — disable automatic fix runs for this PR
Previous run (3)

Review

Findings

High

  • [CI coverage regression] .github/workflows/fullsend.yaml:32 — The pull_request_target trigger was narrowed from [opened, synchronize, ready_for_review, closed] to [closed]. Any fullsend automation stages that depended on PR-open, push-to-PR, or draft-to-ready transitions will silently stop functioning — the events never reach dispatch.yml, so no error is raised.
    Remediation: Verify with the .fullsend template maintainers that opened, synchronize, and ready_for_review events are intentionally no longer needed. If still needed, restore the original event types: types: [opened, synchronize, ready_for_review, closed].

  • [permission-expansion] .github/workflows/fullsend.yaml:44 — Reusable workflow reference changed from SHA-pinned commit (701e62a9c6f104ed68f8d4085d9c3b8bad3a82e4) to mutable branch reference (@main). The dispatch job inherits top-level permissions including actions:write and id-token:write (OIDC token generation). Any push to konflux-ci/.fullsend main branch changes the code executed by this workflow without any commit, review, or visibility in this repo. This contradicts the project's own security posture documented in the file header, which emphasizes preventing credential exfiltration via pull_request_target.
    Remediation: Pin the reusable workflow to the current HEAD SHA of .fullsend main branch. Include a trailing comment (e.g., # main) to document which branch the SHA tracks.

  • [protected-path] .github/workflows/fullsend.yaml — This PR modifies a file under the protected path .github/. The PR has no linked issue and does not provide sufficient justification for modifying governance/infrastructure files. Human approval is required for all protected-path changes.

Medium

  • [missing-authorization] .github/workflows/fullsend.yaml — Non-trivial CI/CD infrastructure change (+38/−2) authored by a bot with no linked issue. The PR body claims it is syncing with an upstream template, but no issue or authoritative reference to the template commit is provided.
    Remediation: Link a JIRA issue or GitHub issue that explicitly authorizes this workflow update and references the canonical template version.

  • [parallel-execution / fail-open] .github/workflows/fullsend.yaml:48 — The new review-denied job runs in parallel with dispatch (no needs dependency). When an unauthorized user comments /fs-review, dispatch forwards the command to dispatch.yml while review-denied posts a denial comment. If dispatch.yml does not independently enforce authorization, the command will be processed despite the denial message.
    Remediation: Confirm that dispatch.yml independently gates /fs-review and /fullsend-review on the same authorization check, or add a needs dependency.

  • [scope-mismatch] .github/workflows/fullsend.yaml:32 — The PR body describes this as a template sync but does not acknowledge the removal of three PR lifecycle triggers (opened, synchronize, ready_for_review). This is a functional change with downstream impact that should be explicitly called out.
    Remediation: Add explicit justification in the PR description for why these triggers were removed.

Low

  • [intent-coherence] .github/workflows/fullsend.yaml:48 — The new review-denied job is coherent with the stated template-sync intent, providing user-facing feedback for unauthorized review command attempts.

Next steps:

  • /fs-fix — agent addresses review findings automatically
  • /fs-fix <your instruction> — agent fixes with your specific guidance
  • Push commits directly — review re-runs automatically on push
  • /fs-fix-stop — disable automatic fix runs for this PR
Previous run (4)

Review

Findings

High

  • [permission-expansion] .github/workflows/fullsend.yaml:44 — External reusable workflow reference changed from a pinned commit SHA (701e62a9c6f104ed68f8d4085d9c3b8bad3a82e4) to a mutable branch reference (@main). The called workflow runs with the caller's GITHUB_TOKEN, which has top-level id-token: write and actions: write permissions. Any push to the main branch of konflux-ci/.fullsend would be silently picked up. The prior SHA pin was a deliberate supply-chain security posture.
    Remediation: Pin the reusable workflow reference to an immutable commit SHA. Use a trailing comment to annotate the corresponding branch or tag.

  • [CI coverage regression] .github/workflows/fullsend.yaml:32 — The pull_request_target trigger types were reduced from [opened, synchronize, ready_for_review, closed] to [closed]. Any downstream stages in dispatch.yml that handle the opened, synchronize, or ready_for_review actions will silently stop executing for this repository. If any of these stages produce required status checks for branch protection, PRs will hang indefinitely.
    Remediation: Confirm that dispatch.yml@main no longer handles opened, synchronize, or ready_for_review actions, and that no branch protection rules require status checks produced by those stages. If those stages are still active, restore the removed event types.

  • [protected-path] .github/workflows/fullsend.yaml — This PR modifies .github/workflows/fullsend.yaml, which is under the protected path .github/. The PR has no linked issue and does not provide sufficient justification for modifying governance/infrastructure files. Human approval is always required for protected-path changes.

Medium

  • [fail-open] .github/workflows/fullsend.yaml:48 — The review-denied job and the dispatch job both fire in parallel on the same issue_comment event. The dispatch job only filters comment.user.type != 'Bot' and forwards all non-bot comments to dispatch.yml regardless of the commenter's author_association. If dispatch.yml does not independently enforce authorization, the unauthorized command is both dispatched and denied.
    Remediation: Either confirm that dispatch.yml independently gates /fs-review and /fullsend-review on author_association, or add the same authorization filter to the dispatch job's if condition.

  • [missing-authorization] .github/workflows/fullsend.yaml — This PR makes three structural changes to the fullsend shim workflow (SHA unpinning, trigger type reduction, new job) without a linked issue or ADR. The changes are substantial enough that documenting intent is warranted.
    Remediation: Open an issue or ADR documenting the intended behavior changes and link it to this PR.

  • [scope-authorization-implicit] .github/workflows/fullsend.yaml:48 — This PR is authored by app/fullsend-ai-fullsend — the bot whose behavior is governed by this shim workflow. The bot is proposing changes to its own controlling workflow. The pull_request_target design (runs BASE branch version) prevents exploitation before merge, but human review is still warranted.
    Remediation: Require a human maintainer to approve this PR via a CODEOWNERS rule or required-reviewer policy for .github/workflows/fullsend.yaml.


Next steps:

  • /fs-fix — agent addresses review findings automatically
  • /fs-fix <your instruction> — agent fixes with your specific guidance
  • Push commits directly — review re-runs automatically on push
  • /fs-fix-stop — disable automatic fix runs for this PR
Previous run (5)

Review

Findings

High

  • [permission-expansion] .github/workflows/fullsend.yaml:44 — Reusable workflow reference changed from pinned SHA (701e62a9...) to mutable branch reference (@main). This workflow runs on pull_request_target with elevated permissions including id-token: write (OIDC token minting) and actions: write. SHA pinning ensures immutability of the called workflow code — switching to @main means any push to the main branch of konflux-ci/.fullsend will immediately change the code executed in this privileged context. This is a supply-chain risk and also breaks the repository's established convention of pinning all action/workflow references to immutable SHAs. The branch protection configuration of the external repository cannot be verified from this repo.
    Remediation: Keep the SHA-pinned reference. If the workflow needs to track upstream changes, update the pinned SHA to the new target commit and retain the trailing comment: uses: konflux-ci/.fullsend/.github/workflows/dispatch.yml@<new-sha> # main

  • [protected-path] .github/workflows/fullsend.yaml — This PR modifies a file under the protected path .github/. The PR has no linked issue providing justification for modifying governance/infrastructure files. Human approval is required for all protected-path changes.
    Remediation: Link an issue documenting the rationale for this change, or obtain explicit human approval.

Low

  • [process-gap] .github/workflows/fullsend.yaml:44 — Security-relevant change (removing SHA pinning for a privileged workflow) submitted by a bot as a template sync with no linked issue or ADR documenting the rationale for accepting increased supply-chain risk.
    Remediation: Document the decision to accept or reject the upstream template's move to @main, either in an issue linked to this PR or in an ADR.

Next steps:

  • /fs-fix — agent addresses review findings automatically
  • /fs-fix <your instruction> — agent fixes with your specific guidance
  • Push commits directly — review re-runs automatically on push
  • /fs-fix-stop — disable automatic fix runs for this PR
Previous run (6)

Review

Findings

High

  • [supply chain / workflow pinning] .github/workflows/fullsend.yaml:44 — The reusable workflow reference is changed from a pinned SHA (701e62a9c6f104ed68f8d4085d9c3b8bad3a82e4) to a mutable branch reference (@main). This workflow grants id-token: write and actions: write permissions at the workflow level, is triggered by pull_request_target, and the workflow comments explicitly document security considerations around credential exfiltration. Every other external action and reusable workflow reference across all workflow files in this repository is pinned to a commit SHA — this change is the sole exception. A compromise of the .fullsend repository’s main branch would immediately grant the attacker the ability to mint OIDC tokens scoped to this repository and trigger arbitrary workflow runs, without any change being reviewed in this repository.
    Remediation: Keep the workflow reference pinned to a specific commit SHA. If the intent is to track upstream updates, use Dependabot or Renovate to propose SHA bumps as reviewable PRs, preserving the # main trailing comment for documentation.

  • [protected-path] .github/workflows/fullsend.yaml — This PR modifies a file under the protected path .github/. The PR has no linked issue providing authorization for this change. Human approval is required for all changes to governance and infrastructure files.

Medium

  • [supply chain / bot-authored security change] .github/workflows/fullsend.yaml:44 — This security-sensitive change (removing SHA pinning from a privileged workflow) is authored by a bot account (fullsend-ai-fullsend[bot]). The PR description frames this as a template synchronization (“brings it back in sync”), but the practical effect is to weaken a supply chain security control. Bot-authored PRs that degrade security controls warrant heightened scrutiny.
    Remediation: Require explicit human approval for any bot-authored PR that modifies workflow permission scopes or unpins workflow/action references. Consider adding a CODEOWNERS rule for .github/workflows/ that requires security team review.

Labels: PR removes SHA pinning from a privileged GitHub Actions workflow reference, weakening supply chain security controls on a protected infrastructure file


Next steps:

  • /fs-fix — agent addresses review findings automatically
  • /fs-fix <your instruction> — agent fixes with your specific guidance
  • Push commits directly — review re-runs automatically on push
  • /fs-fix-stop — disable automatic fix runs for this PR

fullsend-ai-review[bot]

This comment was marked as outdated.

@fullsend-ai-review

fullsend-ai-review Bot commented Aug 14, 2026 •

Copy link
Copy Markdown

🤖 Finished Review · ✅ Success · Started 7:48 PM UTC · Completed 7:59 PM UTC

Commit: 9ee3c25 · View workflow run →

fullsend-ai-review[bot]

This comment was marked as outdated.

@fullsend-ai-review

fullsend-ai-review Bot commented Sep 9, 2026 •

Copy link
Copy Markdown

🤖 Finished Review · ✅ Success · Started 5:15 PM UTC · Completed 5:29 PM UTC

Commit: e515ef1 · View workflow run →

Runtime: claude · Model: opus → claude-opus-4-6 · Effort: high · Cost: $3.06

@fullsend-ai-review fullsend-ai-review Bot added the risk/moderate PR risk: moderate label Sep 9, 2026
@fullsend-ai-review

fullsend-ai-review Bot commented Sep 9, 2026 •

Copy link
Copy Markdown

Risk Assessment: moderate (2/5)

Details

Small CI workflow sync (1 file, 40 lines) by a bot author carries moderate risk due to the CI_WORKFLOW_CHANGED signal and a protected path hit, offset by minimal change size, no security-sensitive files, and a clean regression history — consistent with the prior assessment, all signals unchanged.

Previous run

Risk Assessment: moderate (2/5)

Details

Small CI workflow sync (1 file, 40 lines) by a bot author carries moderate risk due to the CI_WORKFLOW_CHANGED signal and a protected path hit, offset by minimal change size, no security-sensitive files, and a clean regression history.

Previous run (2)

Risk Assessment: moderate (2/5)

Details

Anchored to prior score of 2; Tier 1 signals are unchanged (1 CI workflow file, PROTECTED_PATH_COUNT=1, CI_WORKFLOW_CHANGED=true, bot author) and Tier 2 confirms low churn with no regressions — CI_WORKFLOW_CHANGED and the human-applied 'Possible security concern' label remain the primary risk drivers warranting standard review.

Previous run (3)

Risk Assessment: moderate (2/5)

Details

Small CI workflow sync by a bot author with low churn and no regressions matches the prior assessment; CI_WORKFLOW_CHANGED and a human-applied 'Possible security concern' label remain the primary risk drivers warranting standard review to verify the template re-sync does not introduce unintended workflow permissions or step changes.

Previous run (4)

Risk Assessment: moderate (2/5)

Details

Small CI workflow sync by a bot author with low churn and no regressions, but the CI_WORKFLOW_CHANGED signal and a human-applied 'Possible security concern' label warrant standard review to verify the template re-sync does not introduce unintended workflow permissions or step modifications.

fullsend-ai-review[bot]

This comment was marked as outdated.

@fullsend-ai-review

fullsend-ai-review Bot commented Sep 10, 2026 •

Copy link
Copy Markdown

🤖 Finished Review · ✅ Success · Started 5:41 PM UTC · Completed 5:57 PM UTC

Commit: d6eeca8 · View workflow run →

Runtime: claude · Model: opus → claude-opus-4-6 · Effort: high · Cost: $4.20

fullsend-ai-review[bot]

This comment was marked as outdated.

@fullsend-ai-review

fullsend-ai-review Bot commented Sep 10, 2026 •

Copy link
Copy Markdown

🤖 Finished Review · ✅ Success · Started 7:05 PM UTC · Completed 7:20 PM UTC

Commit: d9133a6 · View workflow run →

Runtime: claude · Model: opus → claude-opus-4-6 · Effort: high · Cost: $3.53

fullsend-ai-review[bot]

This comment was marked as outdated.

@fullsend-ai-review

fullsend-ai-review Bot commented Sep 11, 2026 •

Copy link
Copy Markdown

🤖 Finished Review · ✅ Success · Started 3:01 PM UTC · Completed 3:15 PM UTC

Commit: 0f055a8 · View workflow run →

Runtime: claude · Model: opus → claude-opus-4-6 · Effort: high · Cost: $3.11

fullsend-ai-review[bot]

This comment was marked as outdated.

Update the shim workflow to match the current template
in the .fullsend config repo.
@fullsend-ai-review

fullsend-ai-review Bot commented Sep 18, 2026 •

Copy link
Copy Markdown

🤖 Review · ❌ Terminated · Started 6:33 PM UTC · Ended 6:48 PM UTC

Commit: efeae75 · View workflow run →

@codecov-commenter

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 48.08%. Comparing base (c3c2f94) to head (643df73).

Additional details and impacted files

Impacted file tree graph

@@            Coverage Diff             @@
##             main     #144      +/-   ##
==========================================
+ Coverage   48.05%   48.08%   +0.02%     
==========================================
  Files         154      154              
  Lines       10501    10501              
==========================================
+ Hits         5046     5049       +3     
+ Misses       5237     5235       -2     
+ Partials      218      217       -1     
Flag Coverage Δ
e2e-go 22.29% <ø> (+0.03%) ⬆️

Flags with carried forward coverage won't be shown. Click here to find out more.
see 1 file with indirect coverage changes


Continue to review full report in Codecov by Harness.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update c3c2f94...643df73. Read the comment docs.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@fullsend-ai-review fullsend-ai-review Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

See the review comment for full details.

github.event_name != 'issue_comment'
|| github.event.comment.user.type != 'Bot'
uses: konflux-ci/.fullsend/.github/workflows/dispatch.yml@701e62a9c6f104ed68f8d4085d9c3b8bad3a82e4 # main
uses: konflux-ci/.fullsend/.github/workflows/dispatch.yml@main

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

[high] permission-expansion

Reusable workflow reference changed from a pinned commit SHA (701e62a9c6f104ed68f8d4085d9c3b8bad3a82e4) to a mutable branch reference (@main). The dispatch job inherits workflow-level permissions including actions:write and id-token:write (OIDC token minting). With a pinned SHA, the exact code that runs is immutable and auditable. With @main, any actor with write access to konflux-ci/.fullsend's main branch can modify dispatch.yml to exfiltrate OIDC tokens or abuse actions:write to trigger further workflows. The base branch code included a '# main' comment alongside the SHA, demonstrating the pinning was deliberate.

Suggested fix: Pin the reusable workflow reference to a specific commit SHA with a branch comment, e.g., @ # main. If the upstream template genuinely uses @main, that requires explicit human decision and documentation.

types: [created]
pull_request_target:
types: [opened, synchronize, ready_for_review, closed]
types: [closed]

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

[medium] CI coverage regression

The pull_request_target trigger types were reduced from [opened, synchronize, ready_for_review, closed] to [closed]. The dispatch job will no longer forward PR-open, push, and ready-for-review events to dispatch.yml. If dispatch.yml contains stages handling these actions, they will silently stop triggering for this repository. The external dispatch.yml (in konflux-ci/.fullsend) cannot be verified from this repo. The PR description characterizes this as a template sync but does not explicitly call out this functional behavioral change.

Suggested fix: Confirm that dispatch.yml in the .fullsend config repo no longer has stage branches that act on 'opened', 'synchronize', or 'ready_for_review' pull_request_target actions before merging.

with:
event_action: ${{ github.event.action }}

review-denied:

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

[medium] logic-error

The new review-denied job and the dispatch job both fire in parallel for the same issue_comment event. When an unauthorized user posts '/fs-review' or '/fullsend-review', review-denied posts a denial comment, but the dispatch job simultaneously forwards the event to dispatch.yml with no authorization filter. If dispatch.yml does not independently enforce authorization, the review will execute despite the denial message. The review-denied job is advisory only — it cannot block the dispatch job.

Suggested fix: Verify that dispatch.yml independently enforces authorization for /fs-review and /fullsend-review commands.

with:
event_action: ${{ github.event.action }}

review-denied:

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

[low] architectural-coherence

The new review-denied job is architecturally consistent with the existing stop-fix job (same permissions pattern, same use of env: for untrusted input, same author_association check). Its addition genuinely fits the 'sync' description.

@fullsend-ai-review

Copy link
Copy Markdown

🤖 Finished Review · ✅ Success · Started 6:33 PM UTC · Completed 6:48 PM UTC

Commit: efeae75 · View workflow run →

Runtime: claude · Model: opus → claude-opus-4-6 · Effort: high · Cost: $3.34

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant