Skip to content

chore: deploy Set it Free Loop (review tier, v2.0.0) - #1

Closed
HemSoft wants to merge 3 commits into
mainfrom
sfl/tier-review
Closed

chore: deploy Set it Free Loop (review tier, v2.0.0)#1
HemSoft wants to merge 3 commits into
mainfrom
sfl/tier-review

Conversation

@HemSoft

@HemSoft HemSoft commented Aug 1, 2026

Copy link
Copy Markdown
Owner

Set it Free Loop — Deployment

Version: 2.0.0
Tier: review
Source SHA: 380fe0edc7a87cfc7b31233a955b37df0223a3a8
Engine policy: codex-gpt-55-high

Components deployed

  • labels
  • governance
  • sfl-pr-review

What is the Set it Free Loop?

The Set it Free Loop is a continuous
quality improvement operating model for software repositories. See the
CATALOG
for all available workflows.

Before merging

  • Run .\deployment\governance\setup-labels.ps1 -Owner <org> -Repo <repo> if labels are not yet configured
  • For each .md workflow: verify gh aw compile .github/workflows/<name>.md succeeds
  • Trigger a workflow manually to confirm output
  • Review sfl.json manifest in the repo root

Summary by cubic

Deploys the Set it Free Loop review tier v2.0.0 with a label-triggered full-spectrum PR review, inline findings, a consolidated review, and the “SFL Reviewer Approval” check. Switches the review model to OpenRouter moonshotai/kimi-k3, pins action versions, and adds a manifest and badge.

  • New Features

    • Adds sfl-pr-review workflow (trigger: sfl-review) that posts up to 20 inline comments, submits one consolidated review, creates the “SFL Reviewer Approval” check, and removes the trigger label for re-runs.
    • Adds locked workflow sfl-pr-review.lock.yml and action lock .github/aw/actions-lock.json (pins github/gh-aw-actions/setup@v0.84.1); .gitattributes marks lock files as generated with merge=ours.
    • Adds sfl.json (v2.0.0, tier review) with engine policy; workflow uses OpenRouter moonshotai/kimi-k3.
    • Updates README with a Set it Free Loop version badge.
  • Migration

    • Ensure secrets/vars exist: OPENROUTER_API_KEY, SFL_APP_CLIENT_ID, SFL_APP_PRIVATE_KEY.
    • Configure labels if needed: .\deployment\governance\setup-labels.ps1 -Owner <org> -Repo <repo>.
    • Verify gh aw compile .github/workflows/sfl-pr-review.md and test by applying sfl-review to a PR.
    • Review sfl.json in the repo root.

Written for commit 478a0d0. Summary will update on new commits.

Review in cubic

Note

Deploy Set it Free Loop PR review workflow at review tier v2.0.0

  • Adds sfl-pr-review.md, an agentic workflow that triggers on the sfl-review label and runs a full-spectrum PR review using moonshotai/kimi-k3 via OpenRouter.
  • The workflow posts up to 20 inline findings, submits a consolidated APPROVE or REQUEST_CHANGES review, and creates an SFL Reviewer Approval check run based on finding severities.
  • Adds sfl.json as the SFL deployment manifest pinning the version, tier, and engine policy.
  • Adds a generated lock workflow sfl-pr-review.lock.yml with pinned action SHAs and a .gitattributes rule to treat lock files as generated with merge=ours.

Macroscope summarized 478a0d0.

Source: HemSoft/set-it-free-loop@380fe0e
Version: 2.0.0
Tier: review
Components: labels, governance, sfl-pr-review
Engine policy: codex-gpt-55-high

See https://github.com/HemSoft/set-it-free-loop for full documentation.
@cursor

cursor Bot commented Aug 1, 2026

Copy link
Copy Markdown

Bugbot is not enabled for your account, so this pull request was not reviewed.

Enable Bugbot in the Cursor dashboard to get automatic reviews on future PRs.

@coderabbitai

coderabbitai Bot commented Aug 1, 2026

Copy link
Copy Markdown

Review Change Stack

📝 Walkthrough

Summary by CodeRabbit

  • New Features
    • Added automated pull request reviews covering security, correctness, reliability, and code quality.
    • Added inline findings, consolidated review decisions, and a dedicated approval status check.
    • Reviews can be triggered with the sfl-review label.
    • Added deployment metadata and an automatically updated version badge to the README.
  • Configuration
    • Configured reviews to use the high-effort Codex Kimi K3 profile.
    • Added safeguards for permissions, authentication, outputs, usage limits, and workflow execution.

Walkthrough

Adds SFL deployment metadata and an automated workflow for pull requests labeled sfl-review. The workflow runs gated Codex reviews, constrained safe outputs, result publication, and final label removal.

Changes

SFL review automation

Layer / File(s) Summary
Review configuration and contract
sfl.json, .github/workflows/sfl-pr-review.md, README.md, .github/aw/actions-lock.json, .gitattributes
Defines deployment metadata, Codex settings, review criteria, output rules, README markers, action pinning, and generated-file merge handling.
Workflow gating and agent execution
.github/workflows/sfl-pr-review.lock.yml
Adds activation checks, prompt preparation, constrained MCP tooling, pinned agent execution, credential cleanup, and result ingestion.
Threat detection and safe publication
.github/workflows/sfl-pr-review.lock.yml
Adds conclusion processing, usage and artifact handling, bounded comments, reviews, checks, label removal, and completion notification.

Estimated code review effort: 4 (Complex) | ~45 minutes

Sequence Diagram(s)

sequenceDiagram
  participant PullRequest
  participant ReviewWorkflow
  participant CopilotAgent
  participant SafeOutputs
  participant GitHub
  PullRequest->>ReviewWorkflow: Apply sfl-review label
  ReviewWorkflow->>ReviewWorkflow: Validate activation and access
  ReviewWorkflow->>CopilotAgent: Run constrained review
  CopilotAgent-->>ReviewWorkflow: Return findings and usage
  ReviewWorkflow->>SafeOutputs: Submit validated outputs
  SafeOutputs->>GitHub: Publish review outputs
  SafeOutputs->>GitHub: Remove sfl-review label
Loading

Suggested labels: feature

Poem

A rabbit checks each review gate,
Codex hops through tools in state.
Safe notes appear,
The workflow stays clear,
And the label leaves at the proper rate.

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Title check ✅ Passed The title clearly summarizes the deployment of Set it Free Loop version 2.0.0 for the review tier.
Description check ✅ Passed The description directly explains the deployed workflows, manifest, configuration requirements, and verification steps.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch sfl/tier-review

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@macroscopeapp

macroscopeapp Bot commented Aug 1, 2026

Copy link
Copy Markdown

Approvability

Verdict: Needs human review

Unable to check for correctness in 478a0d0. This PR introduces a new automated PR review workflow with write permissions and external service integrations. An unresolved P1 comment identifies a potential issue where the workflow could approve outdated PR revisions after new commits are pushed. New CI/CD capabilities with substantive unresolved findings warrant human review.

You can customize Macroscope's approvability policy. Learn more.

@coderabbitai coderabbitai Bot added the feature label Aug 1, 2026

@coderabbitai coderabbitai 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.

Actionable comments posted: 4

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In @.gitattributes:
- Line 1: Remove the merge=ours attribute from the .github/workflows/*.lock.yml
pattern in .gitattributes, retaining only linguist-generated=true. Avoid
configuring a custom merge driver; resolve lock-file conflicts by regenerating
the files with gh aw compile so they remain synchronized with the source
workflow.

In @.github/workflows/sfl-pr-review.lock.yml:
- Around line 1465-1469: The generated workflow duplicates the chroot
configuration write, but this lock file is a generator artifact rather than the
editable source. Do not modify the duplicate lines here; report the issue
upstream in gh aw and verify whether it remains after the next compile,
referencing the chroot configuration patch block.

In @.github/workflows/sfl-pr-review.md:
- Around line 51-52: Convert the deployment marker lines beginning with
“Deployed from” and “To upgrade” in the workflow prompt body to HTML comments so
they are not rendered as Markdown headings or imported into the agent prompt.
Then re-run `gh aw compile` to refresh the generated lock file and its body
hash.

In `@sfl.json`:
- Line 22: Update the sfl-pr-review entry’s requiredSecretsAnyOf configuration
to declare SFL_APP_PRIVATE_KEY as a required secret, matching the workflow’s
GitHub App token usage and lock manifest. Keep the existing configuration
unchanged apart from adding this secret requirement.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: 660e5a86-1217-4d0e-a5d2-4cf39deb1169

📥 Commits

Reviewing files that changed from the base of the PR and between 308bab6 and 4d04dcf.

📒 Files selected for processing (6)
  • .gitattributes
  • .github/aw/actions-lock.json
  • .github/workflows/sfl-pr-review.lock.yml
  • .github/workflows/sfl-pr-review.md
  • README.md
  • sfl.json

Comment thread .gitattributes
@@ -0,0 +1 @@
.github/workflows/*.lock.yml linguist-generated=true merge=ours No newline at end of file

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🗄️ Data Integrity & Integration | 🟡 Minor | ⚡ Quick win

merge=ours needs a configured merge driver and can hide lock-file drift.

Git has no built-in ours merge driver. Each clone must run git config merge.ours.driver true; otherwise Git falls back to the default merge for *.lock.yml and the attribute has no effect. Add this setup step to the contributor documentation or to the deploy script.

The behavior also carries a risk: when the driver is active, a merge keeps the local lock file and discards the incoming regenerated one. The lock file can then drift from .github/workflows/sfl-pr-review.md, and the workflow's own stale-lock-file check fails the run. Consider linguist-generated=true only, and regenerate with gh aw compile on conflict.

🛠️ Proposed alternative
-.github/workflows/*.lock.yml linguist-generated=true merge=ours
+.github/workflows/*.lock.yml linguist-generated=true
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
.github/workflows/*.lock.yml linguist-generated=true merge=ours
.github/workflows/*.lock.yml linguist-generated=true
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In @.gitattributes at line 1, Remove the merge=ours attribute from the
.github/workflows/*.lock.yml pattern in .gitattributes, retaining only
linguist-generated=true. Avoid configuring a custom merge driver; resolve
lock-file conflicts by regenerating the files with gh aw compile so they remain
synchronized with the source workflow.

Comment on lines +1465 to +1469
if [[ "${DOCKER_HOST:-}" =~ ^tcp:// ]]; then
_GH_AW_CHROOT_JSON=$(jq -c --arg src "${RUNNER_TEMP}/gh-aw" --arg user "$(id -un)" --argjson uid "$(id -u)" --argjson gid "$(id -g)" --arg home "${RUNNER_TEMP}/gh-aw/home" '.chroot={"binariesSourcePath":$src,"identity":{"user":$user,"uid":$uid,"gid":$gid,"home":$home}}' "${RUNNER_TEMP}/gh-aw/awf-config.json") || { echo "chroot config patch failed" >&2; exit 1; }
printf '%s\n' "$_GH_AW_CHROOT_JSON" > "${RUNNER_TEMP}/gh-aw/awf-config.json"
printf '%s\n' "$_GH_AW_CHROOT_JSON" > "${RUNNER_TEMP}/gh-aw/awf-config.json"
fi

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

📐 Maintainability & Code Quality | 🔵 Trivial | 💤 Low value

Duplicated write of the chroot config.

Lines 1467 and 1468 write the identical JSON to the same path twice. The agent job equivalent (line 852) uses a single patch_awf_chroot_config.cjs call. This is a generator artifact, not an editable defect here. Report it upstream in gh aw if the duplication persists after the next compile.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In @.github/workflows/sfl-pr-review.lock.yml around lines 1465 - 1469, The
generated workflow duplicates the chroot configuration write, but this lock file
is a generator artifact rather than the editable source. Do not modify the
duplicate lines here; report the issue upstream in gh aw and verify whether it
remains after the next compile, referencing the chroot configuration patch
block.

Comment thread .github/workflows/sfl-pr-review.md Outdated
Comment on lines +51 to +52
# Deployed from: HemSoft/set-it-free-loop/deployment/workflows/sfl-pr-review.md@380fe0edc7a87cfc7b31233a955b37df0223a3a8
# To upgrade: re-run deploy-workflow.ps1 at the desired SHA

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win

Convert the deployment markers to HTML comments.

Lines 51-52 start with #, so markdown parses them as H1 headings, not comments. The body of this file is imported into the agent prompt ({{#runtime-import .github/workflows/sfl-pr-review.md}} in the lock file), so these headings become prompt content. markdownlint also reports MD022 for both lines.

🛠️ Proposed fix
-# Deployed from: HemSoft/set-it-free-loop/deployment/workflows/sfl-pr-review.md@380fe0edc7a87cfc7b31233a955b37df0223a3a8
-# To upgrade: re-run deploy-workflow.ps1 at the desired SHA
+<!-- Deployed from: HemSoft/set-it-free-loop/deployment/workflows/sfl-pr-review.md@380fe0edc7a87cfc7b31233a955b37df0223a3a8 -->
+<!-- To upgrade: re-run deploy-workflow.ps1 at the desired SHA -->

Note: this change alters the body hash, so re-run gh aw compile to refresh .github/workflows/sfl-pr-review.lock.yml.

📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
# Deployed from: HemSoft/set-it-free-loop/deployment/workflows/sfl-pr-review.md@380fe0edc7a87cfc7b31233a955b37df0223a3a8
# To upgrade: re-run deploy-workflow.ps1 at the desired SHA
<!-- Deployed from: HemSoft/set-it-free-loop/deployment/workflows/sfl-pr-review.md@380fe0edc7a87cfc7b31233a955b37df0223a3a8 -->
<!-- To upgrade: re-run deploy-workflow.ps1 at the desired SHA -->
🧰 Tools
🪛 markdownlint-cli2 (0.23.1)

[warning] 51-51: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below

(MD022, blanks-around-headings)


[warning] 52-52: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Above

(MD022, blanks-around-headings)

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In @.github/workflows/sfl-pr-review.md around lines 51 - 52, Convert the
deployment marker lines beginning with “Deployed from” and “To upgrade” in the
workflow prompt body to HTML comments so they are not rendered as Markdown
headings or imported into the agent prompt. Then re-run `gh aw compile` to
refresh the generated lock file and its body hash.

Source: Linters/SAST tools

Comment thread sfl.json Outdated
"model": "gpt-5.5",
"effort": "high",
"renderedModel": "gpt-5.5?effort=high",
"requiredSecretsAnyOf": []

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🩺 Stability & Availability | 🟡 Minor | ⚡ Quick win

Declare the App secret in requiredSecretsAnyOf.

requiredSecretsAnyOf is empty for sfl-pr-review. The generated workflow requires secrets.SFL_APP_PRIVATE_KEY and vars.SFL_APP_CLIENT_ID for the GitHub App token steps (.github/workflows/sfl-pr-review.lock.yml lines 505-506, 1084-1085, 1670-1671), and the lock manifest lists SFL_APP_PRIVATE_KEY as a used secret. An empty list lets deployment-time secret validation pass while the workflow fails at runtime when the App token cannot be minted.

🛠️ Proposed fix
-        "requiredSecretsAnyOf": []
+        "requiredSecretsAnyOf": ["SFL_APP_PRIVATE_KEY"]
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
"requiredSecretsAnyOf": []
"requiredSecretsAnyOf": ["SFL_APP_PRIVATE_KEY"]
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@sfl.json` at line 22, Update the sfl-pr-review entry’s requiredSecretsAnyOf
configuration to declare SFL_APP_PRIVATE_KEY as a required secret, matching the
workflow’s GitHub App token usage and lock manifest. Keep the existing
configuration unchanged apart from adding this secret requirement.

@chatgpt-codex-connector chatgpt-codex-connector 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.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 4d04dcff34

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread .github/workflows/sfl-pr-review.md Outdated
Comment on lines +9 to +11
pull_request:
types: [labeled]
names: [sfl-review]

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P1 Badge Revalidate the PR head before publishing approval

When commits are pushed after sfl-review is applied, this workflow neither receives a synchronize event nor checks that the head SHA is unchanged before publishing its review. The queued run can therefore approve the old revision while the PR now contains unreviewed changes, and GitHub approvals may remain valid unless separate branch-protection settings dismiss them. Trigger a new run for labeled PRs on synchronize, or abort output publication when the current head differs from the triggering SHA.

Useful? React with 👍 / 👎.

Comment thread .gitattributes
@@ -0,0 +1 @@
.github/workflows/*.lock.yml linguist-generated=true merge=ours No newline at end of file

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Configure the declared ours merge driver

When both branches regenerate a workflow lock file, merge=ours does not by itself select the current branch's copy: ours is a custom low-level merge-driver name that requires a merge.ours.driver Git configuration, and no such setup exists anywhere in this repository. A normal clone therefore still produces a content conflict instead of resolving generated lock files as intended; provide the driver setup or use a merge strategy that works without uncommitted local configuration.

Useful? React with 👍 / 👎.

Source: HemSoft/set-it-free-loop@235a0df
Version: 2.0.0
Tier: review
Components: labels, governance, sfl-pr-review
Engine policy: codex-gpt-55-high

See https://github.com/HemSoft/set-it-free-loop for full documentation.

@coderabbitai coderabbitai 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.

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
.github/workflows/sfl-pr-review.lock.yml (1)

61-75: 📐 Maintainability & Code Quality | 🟠 Major | ⚡ Quick win

The workflow name is a provenance marker and changes on every deployment.

name and run-name are set to Deployed from: HemSoft/set-it-free-loop/deployment/workflows/sfl-pr-review.md@235a0df.... The string embeds the source SHA, so it changes each time the workflow is redeployed.

Consequences:

  • The Actions UI lists the workflow under a SHA-bearing title instead of a stable name.
  • Any branch protection required status check bound to this workflow name breaks after the next deploy.
  • The same string propagates to failure issue titles through GH_AW_WORKFLOW_NAME (lines 1248, 1287, 1302, 1317) and to the GitHub MCP user_agent (line 776).

Set a stable name in the source frontmatter of .github/workflows/sfl-pr-review.md, for example SFL PR Review. Keep the deployment SHA in a separate comment marker. Re-run gh aw compile afterwards.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In @.github/workflows/sfl-pr-review.lock.yml around lines 61 - 75, Update the
source frontmatter in sfl-pr-review.md to use a stable workflow name such as
“SFL PR Review” for both name and run-name, and move the deployment SHA into a
separate comment marker. Then recompile with gh aw compile so the generated
sfl-pr-review.lock.yml and downstream GH_AW_WORKFLOW_NAME/user_agent values use
the stable name.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Outside diff comments:
In @.github/workflows/sfl-pr-review.lock.yml:
- Around line 61-75: Update the source frontmatter in sfl-pr-review.md to use a
stable workflow name such as “SFL PR Review” for both name and run-name, and
move the deployment SHA into a separate comment marker. Then recompile with gh
aw compile so the generated sfl-pr-review.lock.yml and downstream
GH_AW_WORKFLOW_NAME/user_agent values use the stable name.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: 2178ff24-ff80-4258-832f-e86daf378ccb

📥 Commits

Reviewing files that changed from the base of the PR and between 4d04dcf and 5fa1491.

📒 Files selected for processing (3)
  • .github/workflows/sfl-pr-review.lock.yml
  • .github/workflows/sfl-pr-review.md
  • sfl.json

Source: HemSoft/set-it-free-loop@78483bb
Version: 2.0.0
Tier: review
Components: labels, governance, sfl-pr-review
Engine policy: codex-gpt-55-high

See https://github.com/HemSoft/set-it-free-loop for full documentation.

@coderabbitai coderabbitai 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.

Actionable comments posted: 1

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
.github/workflows/sfl-pr-review.md (1)

66-66: 📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win

Align the embedded version with the deployed version.

The PR deploys Set it Free Loop version 2.0.0, and the README badge reads $.version from sfl.json. The sfl: metadata block here still declares version: "1.0.0". Confirm whether this field tracks the workflow version or the SFL release version. If it tracks the release, update it at the source repository and re-deploy.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In @.github/workflows/sfl-pr-review.md at line 66, Update the embedded version
in the sfl metadata block from 1.0.0 to the deployed Set it Free Loop release
version 2.0.0, ensuring the source repository value and deployed workflow remain
aligned.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In @.github/workflows/sfl-pr-review.md:
- Line 46: Reconsider the `threat-detection` setting in the workflow
configuration and enable it for runs processing untrusted pull request content.
If it must remain disabled, document the explicit security rationale and
acceptance of the bounded safe-output permissions near `threat-detection`,
including the risks of attacker-controlled review publication.

---

Outside diff comments:
In @.github/workflows/sfl-pr-review.md:
- Line 66: Update the embedded version in the sfl metadata block from 1.0.0 to
the deployed Set it Free Loop release version 2.0.0, ensuring the source
repository value and deployed workflow remain aligned.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: 628cf8bb-55d3-4460-b47a-dd802671edb1

📥 Commits

Reviewing files that changed from the base of the PR and between 5fa1491 and 478a0d0.

📒 Files selected for processing (4)
  • .github/aw/actions-lock.json
  • .github/workflows/sfl-pr-review.lock.yml
  • .github/workflows/sfl-pr-review.md
  • sfl.json

private-key: ${{ secrets.SFL_APP_PRIVATE_KEY }}

safe-outputs:
threat-detection: false

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🔒 Security & Privacy | 🟠 Major | 🏗️ Heavy lift

Reconsider threat-detection: false for a workflow that ingests untrusted pull request content.

The agent reads the PR diff, title, and body. That content is attacker-controlled on fork pull requests, and a maintainer label can trigger the run on such a PR. With threat detection off, the only remaining barrier is the safe-outputs allowlist. That allowlist still permits up to 20 review comments, one review submission, and one check run under a GitHub App token with pull-requests: write and checks: write (lock file lines 1439-1446). Injected instructions can therefore publish attacker-authored content as an approving review.

Enable threat detection, or document why the bounded safe-output surface is accepted for this tier.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In @.github/workflows/sfl-pr-review.md at line 46, Reconsider the
`threat-detection` setting in the workflow configuration and enable it for runs
processing untrusted pull request content. If it must remain disabled, document
the explicit security rationale and acceptance of the bounded safe-output
permissions near `threat-detection`, including the risks of attacker-controlled
review publication.

@HemSoft

HemSoft commented Aug 16, 2026

Copy link
Copy Markdown
Owner Author

Closing this v2.0.0 SFL rollout as superseded. HemSoft now uses v2.1.0-rc.9, and hs-buddy is the only approved HemSoft SFL validation repository. This old deployment should not be merged or refreshed.

@HemSoft HemSoft closed this Aug 16, 2026
@HemSoft
HemSoft deleted the sfl/tier-review branch August 16, 2026 18:06
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant