Skip to content

Pin workflow dependencies and define release trust boundary - #295

Merged
justin808 merged 18 commits into
mainfrom
jg-codex/require-human-security-review
Aug 2, 2026
Merged

Pin workflow dependencies and define release trust boundary#295
justin808 merged 18 commits into
mainfrom
jg-codex/require-human-security-review

Conversation

@justin808

@justin808 justin808 commented Aug 1, 2026

Copy link
Copy Markdown
Member

Summary

  • pin every external GitHub Action to a verified full commit SHA
  • add monthly Dependabot proposals for Action updates, aligned with the ShakaCode organization baseline
  • parse workflow and composite-action YAML structurally, including tracked actions below nested temp-named directories
  • reject malformed external Action references instead of accepting any value that merely ends in a 40-character SHA
  • label current branch-following installs and upgrades honestly as a development channel, with no supported human-reviewed install path today
  • track the immutable, signed, human-reviewed stable channel separately in Add an immutable human-reviewed release channel #296

Motivation

A maintainer raised a valid supply-chain concern: this repository ships shell/Ruby helpers and agent instructions, and an AI review alone should not establish a trusted release.

The first version of this PR put a human gate on nearly every meaningful pull request. That was too broad and would have slowed ordinary development. This revision keeps main fast and places mandatory independent human review at the stable-release promotion boundary instead.

agent-workflows does not have version tags or GitHub releases today, so this PR does not pretend that the current native marketplaces, live checkouts, or default upgrade flow are stable, human-reviewed channels. A shell recipe cannot make a live checkout immutable while an installer reads it. Issue #296 defines the proper follow-up using immutable reviewed release artifacts, with team-reports-plugin release work as a reference.

Verification

  • ruby bin/repository-security-policy-test.rb — 8 runs, 30 assertions
  • structural YAML parsing covers workflow and composite-action invocation fields, including local references, alternate spacing, inline mappings, tracked actions below nested temp-named directories, and malformed external reference rejection
  • actionlint -shellcheck=
  • RuboCop 1.87.0 on the Ruby policy test
  • git diff --check
  • the full local validator completed 333 tests / 2,529 assertions before reaching the pre-existing macOS agent-workflows-trust-audit-test hang; hosted Linux validate is the aggregate gate

Post-merge administrator checklist

After this pinning change reaches main:

  • require full-SHA Action references
  • set default Actions token permissions to read-only and prevent Actions from approving pull requests
  • restrict allowed Actions to the reviewed set
  • enable Dependabot security updates, secret scanning, and push protection where supported

Closes none; refs #273 and #296.

Summary by CodeRabbit

  • Security

    • GitHub Actions are now pinned to immutable commit versions for safer, more predictable automation.
    • Added automated checks to enforce repository supply-chain security policies.
  • Documentation

    • Added guidance for secure installation, upgrades, action updates, and development-versus-stable release trust.
    • Updated the changelog and README with the new security practices.
  • Maintenance

    • Added monthly automated proposals for GitHub Actions updates, subject to review.

@coderabbitai

coderabbitai Bot commented Aug 1, 2026

Copy link
Copy Markdown

Review Change Stack

Note

Reviews paused

It looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: ba71399a-abdf-4785-97ad-96d28db52e21

📥 Commits

Reviewing files that changed from the base of the PR and between c62f6de and 9a4b784.

📒 Files selected for processing (2)
  • bin/repository-security-policy-test.rb
  • docs/repository-supply-chain.md
🚧 Files skipped from review as they are similar to previous changes (2)
  • docs/repository-supply-chain.md
  • bin/repository-security-policy-test.rb

Walkthrough

The repository documents supply-chain controls, pins GitHub Actions to full commit SHAs, configures monthly Dependabot updates, adds policy tests, and runs them through validation.

Changes

Repository supply-chain controls

Layer / File(s) Summary
Supply-chain policy documentation
docs/repository-supply-chain.md, docs/security-posture.md, README.md, CHANGELOG.md
Documents executable surfaces, review-first installation and upgrades, full-SHA action pinning, stable-release human review, and the development-versus-stable trust model.
Pinned actions and update proposals
.github/workflows/claude-code-review.yml, .github/workflows/claude.yml, .github/workflows/validate.yml, .github/dependabot.yml
Pins workflow actions to immutable commit SHAs and configures monthly root-level GitHub Actions update proposals with a five-PR limit.
Repository security policy validation
bin/repository-security-policy-test.rb, bin/validate
Tests action pinning, review-policy removal, stable-release review requirements, and Dependabot configuration. The validation script runs the new test suite.

Estimated code review effort: 3 (Moderate) | ~20 minutes

Possibly related issues

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly summarizes the two main changes: pinning workflow dependencies and defining the release trust boundary.
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.
✨ Finishing Touches 💡 1
📝 Generate docstrings 💡
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch jg-codex/require-human-security-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.

@justin808
justin808 requested a review from alex35mil August 1, 2026 11:20

@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: 14fd318f33

ℹ️ 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/human-security-review.yml Outdated

@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: 2

🧹 Nitpick comments (1)
.github/workflows/human-security-review.yml (1)

1-11: 🩺 Stability & Availability | 🔵 Trivial | ⚡ Quick win

Add a concurrency guard for the 5-minute schedule.

This workflow re-evaluates every open pull request every 5 minutes with no concurrency group. If a run takes longer than 5 minutes (for example, with many open PRs), the next scheduled run can start before the previous one finishes. Overlapping runs waste GitHub API calls and can post duplicate or out-of-order commit statuses for the same PRs.

Add a concurrency group so overlapping scheduled runs queue or cancel instead of running in parallel.

♻️ Proposed concurrency guard
 permissions:
   contents: read
   pull-requests: read
   statuses: write

+concurrency:
+  group: human-security-review
+  cancel-in-progress: false
+
 jobs:
   gate:
🤖 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/human-security-review.yml around lines 1 - 11, Add a
workflow-level concurrency configuration near the top-level triggers in “Human
Security Review,” using a stable group that identifies this workflow and
prevents overlapping scheduled runs. Configure the guard to queue or cancel an
in-progress run so successive 5-minute schedule executions cannot process the
same pull requests concurrently.
🤖 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 `@bin/human-security-review-gate`:
- Around line 25-50: Introduce a distinct exception and non-1 exit status for
infrastructure failures raised by gh_json and gh_paginated_json, including API,
parsing, response-shape, and pagination-limit abort paths, while preserving the
existing status for HUMAN_SECURITY_REVIEW_REQUIRED. Update the workflow case
handling for the new status range to report state=error and
infrastructure_error=1 instead of treating it as review required.

In `@bin/repository-security-policy-test.rb`:
- Around line 42-79: Add a test in the security policy test suite that
require_relative-loads bin/human-security-review-gate and verifies
HumanSecurityReviewGate.high_risk_path? returns true for representative paths
covering every documented protected pattern. Derive the samples from the
CODEOWNERS or agent-workflow policy pattern sets so the runtime HIGH_RISK_PATHS
gate is cross-checked against both policy lists and drift causes the test to
fail.

---

Nitpick comments:
In @.github/workflows/human-security-review.yml:
- Around line 1-11: Add a workflow-level concurrency configuration near the
top-level triggers in “Human Security Review,” using a stable group that
identifies this workflow and prevents overlapping scheduled runs. Configure the
guard to queue or cancel an in-progress run so successive 5-minute schedule
executions cannot process the same pull requests concurrently.
🪄 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: CHILL

Plan: Pro Plus

Run ID: 982cfae7-23de-4274-93dc-06387e4ac298

📥 Commits

Reviewing files that changed from the base of the PR and between 777c4a8 and 14fd318.

📒 Files selected for processing (15)
  • .agents/agent-workflow.yml
  • .github/CODEOWNERS
  • .github/dependabot.yml
  • .github/workflows/claude-code-review.yml
  • .github/workflows/claude.yml
  • .github/workflows/human-security-review.yml
  • .github/workflows/validate.yml
  • CHANGELOG.md
  • README.md
  • bin/human-security-review-gate
  • bin/human-security-review-gate-test.rb
  • bin/repository-security-policy-test.rb
  • bin/validate
  • docs/repository-supply-chain.md
  • docs/security-posture.md

Comment thread bin/human-security-review-gate Outdated
Comment thread bin/repository-security-policy-test.rb Outdated

@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: ec651cc208

ℹ️ 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 bin/human-security-review-gate Outdated
@justin808 justin808 changed the title Require human review for execution surfaces Pin workflow dependencies and define release trust boundary Aug 1, 2026
@justin808
justin808 removed the request for review from alex35mil August 1, 2026 15:14

@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

🤖 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 `@docs/repository-supply-chain.md`:
- Around line 25-34: Update the documented two-step review flow around
upgrade-agent-workflows to run a complete git diff HEAD..origin/main before git
merge --ff-only, in addition to the existing summary and log commands, so users
review the full executable changes before fast-forwarding.
🪄 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: CHILL

Plan: Pro Plus

Run ID: ef268654-0165-410a-a570-4eec3190e2ad

📥 Commits

Reviewing files that changed from the base of the PR and between 14fd318 and 7d77c64.

📒 Files selected for processing (6)
  • CHANGELOG.md
  • README.md
  • bin/repository-security-policy-test.rb
  • bin/validate
  • docs/repository-supply-chain.md
  • docs/security-posture.md
💤 Files with no reviewable changes (1)
  • bin/validate
🚧 Files skipped from review as they are similar to previous changes (2)
  • CHANGELOG.md
  • docs/security-posture.md

Comment thread docs/repository-supply-chain.md Outdated

@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: 7d77c64bea

ℹ️ 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 docs/repository-supply-chain.md Outdated
@justin808

Copy link
Copy Markdown
Member Author

Address-review summary

Scan scope: full PR history; there was no previous address-review checkpoint.

Mattered

  • Fixed the incomplete review example in docs/repository-supply-chain.md: commit 14ef8ed now shows the complete diff with external diff helpers disabled before the fast-forward.
  • Fixed the reviewed-source binding in the same example: commit 14ef8ed passes the reviewed checkout explicitly through --source.
  • Added regression assertions for both security properties; the focused suite passes 4 tests / 16 assertions.

Skipped

  • The earlier scheduled-gate API-volume thread is obsolete because commit 7d77c64 removed the scheduled gate and helper entirely.
  • Superseded-head review summaries and status-only bot posts required no additional action.

All three inline threads were replied to and resolved. No deferred work was created.

Next default scan starts after this comment. Say check all reviews to rescan the full PR.

@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: 14ef8ed32f

ℹ️ 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 docs/repository-supply-chain.md Outdated

@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: 196d6b81f5

ℹ️ 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 docs/repository-supply-chain.md Outdated
@justin808

Copy link
Copy Markdown
Member Author

Address-review summary

Scan scope: activity after the prior checkpoint at 2026-08-01T15:22:17Z.

Mattered

  • Commit 196d6b8 makes the review-first upgrade refuse tracked or untracked local modifications in the bound source checkout; it also moves actions/cache to the current Node 24 v6.1.0 release.
  • Commit 2bd4fca additionally requires HEAD to be an ancestor of origin/main, rejecting clean-but-local-ahead and diverged checkouts.
  • Regression coverage now requires both guards; the focused suite passes 4 tests / 20 assertions.

Skipped

  • No current-head actionable feedback was skipped or deferred.

Both new inline threads were replied to and resolved. Exact-head hosted validation is rerunning after the final ancestry fix.

Next default scan starts after this comment. Say check all reviews to rescan the full PR.

@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: 2bd4fca0cb

ℹ️ 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 docs/repository-supply-chain.md Outdated
@justin808

Copy link
Copy Markdown
Member Author

Address-review summary

Scan scope: activity after the prior checkpoint at 2026-08-01T15:54:35Z.

Mattered

  • Commit 1c25bfb closes the mutable-ref gap in the interim review-first upgrade: it captures origin/main^{commit} once and uses that exact SHA for ancestry, stat, log, complete diff, and merge.
  • The flow re-verifies the exact reviewed HEAD and a clean worktree immediately before the explicit --source installation.
  • Regression coverage requires every exact-SHA binding; the focused suite passes 4 tests / 30 assertions.

Skipped

  • No current-head actionable feedback was skipped or deferred.

The new inline thread was replied to and resolved. Exact-head hosted validation is rerunning after the binding fix.

Next default scan starts after this comment. Say check all reviews to rescan the full PR.

@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: 1c25bfbf57

ℹ️ 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 docs/repository-supply-chain.md Outdated
Comment thread docs/repository-supply-chain.md Outdated

@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: 085668e2a5

ℹ️ 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 bin/repository-security-policy-test.rb Outdated
Comment thread docs/repository-supply-chain.md Outdated
@justin808

Copy link
Copy Markdown
Member Author

Address-review summary

Scan scope: activity after the prior checkpoint at 2026-08-01T16:09:21Z.

Mattered

  • Commit 085668e makes the opt-in high-assurance fallback review the complete target tree against Git’s empty tree, so a fresh or already-current checkout cannot yield a misleading empty review.
  • The full-tree diff disables external diff and text-conversion helpers.
  • The reviewed install now forces --mode copy, preventing later source-checkout changes from mutating installed executable content.
  • Focused verification remains green at 4 tests / 30 assertions, plus clean RuboCop, actionlint, Bash syntax, and diff checks.

Skipped

  • No current-head actionable feedback was skipped or deferred.

Both inline threads were replied to and resolved. Exact-head hosted validation is rerunning after these final bindings.

Next default scan starts after this comment. Say check all reviews to rescan the full PR.

@justin808

Copy link
Copy Markdown
Member Author

Address-review summary

Scan scope: activity after the prior checkpoint at 2026-08-01T16:43:12Z.

Mattered

  • Commit 5f797ea narrows structural YAML pin enforcement to GitHub’s actual action-invocation fields: jobs.<job>.uses and jobs.<job>.steps[*].uses.
  • The regression fixture covers alternate spacing, inline step and reusable-workflow mappings, and proves that a nested action input named uses is not misclassified.
  • Focused verification passes 5 tests / 15 assertions, plus clean RuboCop, actionlint, and diff checks.

Skipped

  • No current-head actionable feedback was skipped or deferred.

The inline thread was replied to and resolved. Exact-head hosted validation is rerunning after this precision fix.

Next default scan starts after this comment. Say check all reviews to rescan the full PR.

@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: 5f797eaf2c

ℹ️ 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 bin/repository-security-policy-test.rb Outdated
@justin808

Copy link
Copy Markdown
Member Author

Address-review summary

Scan scope: activity after the prior checkpoint at 2026-08-01T17:00:39Z.

Mattered

  • Commit 66ac731 extends structural full-SHA enforcement to root and .github/actions/** composite-action metadata.
  • Composite runs.steps[*].uses values share the precise step scanner, so nested inputs named uses remain excluded.
  • Focused verification passes 6 tests / 16 assertions, plus clean RuboCop, actionlint, and diff checks.

Skipped

  • No current-head actionable feedback was skipped or deferred.

The inline thread was replied to and resolved. Exact-head hosted validation is rerunning after the composite-action coverage fix.

Next default scan starts after this comment. Say check all reviews to rescan the full PR.

@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: 66ac7313e2

ℹ️ 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 bin/repository-security-policy-test.rb Outdated
@justin808

Copy link
Copy Markdown
Member Author

Address-review summary

Scan scope: activity after the prior checkpoint at 2026-08-01T17:14:22Z.

Mattered

  • Commit c9b71ad accepts repository-local ./... action and reusable-workflow references as bound to the checkout commit.
  • Action metadata discovery now covers action.yml / action.yaml throughout the repository, so external dependencies inside local composite actions remain subject to full-SHA enforcement.
  • Regression assertions cover local, immutable external, and mutable external references.
  • Focused verification passes 7 tests / 19 assertions, plus clean RuboCop, actionlint, and diff checks.

Skipped

  • No current-head actionable feedback was skipped or deferred.

The inline thread was replied to and resolved. Exact-head hosted validation is rerunning after the local-action precision fix.

Next default scan starts after this comment. Say check all reviews to rescan the full PR.

@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: c9b71ad290

ℹ️ 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 bin/repository-security-policy-test.rb Outdated
@justin808

Copy link
Copy Markdown
Member Author

Address-review summary

Scan scope: activity after the prior checkpoint at 2026-08-01T17:28:28Z.

Mattered

  • Commit 7f76994 accepts immutable Docker action references only when pinned as docker://...@sha256:<64 hex>.
  • Mutable Docker tags remain rejected.
  • Focused verification passes 7 tests / 21 assertions, plus clean RuboCop, actionlint, and diff checks.

Skipped

  • No current-head actionable feedback was skipped or deferred.

The inline thread was replied to and resolved. Exact-head hosted validation is rerunning after the Docker-digest compatibility fix.

Next default scan starts after this comment. Say check all reviews to rescan the full PR.

@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: 7f7699407e

ℹ️ 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 bin/repository-security-policy-test.rb Outdated
Comment thread .github/workflows/claude-code-review.yml
Comment thread .github/dependabot.yml
Comment thread CHANGELOG.md Outdated

@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: 2

🤖 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 `@bin/repository-security-policy-test.rb`:
- Line 100: Update the schedule interval assertion in the repository security
policy test to require the documented weekly Dependabot schedule instead of
monthly, preserving the existing action_updates.dig("schedule", "interval")
validation.
- Around line 112-117: Update acceptable_action_reference? to validate complete
external reference formats: check the Docker digest pattern first, then require
a valid GitHub owner/action reference before accepting a 40-character commit
SHA. Ensure malformed values with extra @ separators, such as
owner/action@v1@SHA or docker://alpine@SHA, are rejected while preserving local
"./" references.
🪄 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: CHILL

Plan: Pro Plus

Run ID: 5a69f419-8603-4e55-9b69-01cac444911e

📥 Commits

Reviewing files that changed from the base of the PR and between 085668e and c62f6de.

📒 Files selected for processing (5)
  • .github/dependabot.yml
  • CHANGELOG.md
  • bin/repository-security-policy-test.rb
  • docs/repository-supply-chain.md
  • docs/security-posture.md
🚧 Files skipped from review as they are similar to previous changes (4)
  • docs/security-posture.md
  • .github/dependabot.yml
  • CHANGELOG.md
  • docs/repository-supply-chain.md

Comment thread bin/repository-security-policy-test.rb
Comment thread bin/repository-security-policy-test.rb Outdated
@justin808

Copy link
Copy Markdown
Member Author

Address-review summary

Scan scope: since previous summary at 2026-08-01T17:51:14Z.

Mattered

  • Fixed the nested temp-directory scanner bypass in c62f6de: only root work directories are excluded, and a regression keeps tracked skills/.../tmp/action.yml files in scope. Thread
  • Kept full-SHA pins with their readable major-version comments and recorded the ShakaFlow/ShakaCode rollout evidence in existing fleet-hardening issue Harden GitHub Actions workflows: no ${{ }} in run:, no secrets: inherit, SHA-pin all uses: #273. Thread
  • Aligned GitHub Actions Dependabot updates to the ShakaCode organization baseline (monthly, open-PR limit 5) and updated the supply-chain policy to match. Thread
  • Narrowed the changelog entry to the user-visible install/upgrade trust contract; internal pinning and Dependabot mechanics are no longer release-note content. Thread
  • Tightened external Action reference validation in c202c70 so malformed multi-@ GitHub and Docker references cannot pass merely because they end in a 40-character SHA. Thread
  • Resolved the stale weekly-policy inconsistency while preserving the maintainer-approved monthly baseline. Thread

Skipped

  • The Codex review summary was status-only; its one actionable inline finding was fixed and resolved.
  • The CodeRabbit changes-requested summary duplicated its two inline findings; both were handled and resolved individually.

Deferred-work tracking: existing issue #273.

Exact-head closeout: c202c7061f8b6f9f0292792d26ce56ccfd3c4d7f; all review threads resolved; validate, claude-review, and CodeRabbit green; PR clean and approved.

Next default scan starts after this comment. Say check all reviews to rescan the full PR.

…n-security-review

* origin/main:
  Support direct merges without merge queues (#297)

@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: 9a4b784550

ℹ️ 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".


def test_github_actions_are_pinned_to_full_commit_shas
reference_sets = Dir.glob(File.join(ROOT, ".github/workflows/*.{yml,yaml}")).map do |path|
workflow = YAML.safe_load_file(path, aliases: true)

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 Permit valid YAML timestamp scalars in workflows

When a workflow contains an unquoted ISO date such as env: { START_DATE: 2026-08-02 }, this whole-document load raises Psych::DisallowedClass: Tried to load unspecified class: Date under the Ruby 3.4 used by validation, before any action references are inspected. The scalar is valid workflow YAML and may be unrelated to uses, yet it makes the repository-required bin/validate gate fail; parse without constructing timestamp objects or explicitly handle Date.

AGENTS.md reference: AGENTS.md:L28-L34

Useful? React with 👍 / 👎.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

Confirmed on Ruby 3.4 / Psych: an unquoted ISO date raises Psych::DisallowedClass before the scanner reaches uses. Because #295 is already merged and the exact merged main validation is green, this is tracked as the post-merge robustness fix in #302 rather than triggering rollback: #302. The review thread remains open with that MUST-FIX follow-up pending.

@justin808

Copy link
Copy Markdown
Member Author

head_sha: 9a4b784
triggered_gates:

  • commit-count-limit
  • infrastructure-delivery
  • repo-path:github-workflows
  • security-auth-privacy
    rollback_disposition: Code-only rollback is acceptable.
    decision: approve
    approved_by: justin808
    source: direct-user-task
    evidence: Direct user approval in the active Codex task on 2026-08-02.
    ...

@justin808
justin808 merged commit 4ed056b into main Aug 2, 2026
5 checks passed
@justin808
justin808 deleted the jg-codex/require-human-security-review branch August 2, 2026 04:53
@justin808

Copy link
Copy Markdown
Member Author

Address-review summary

Scan scope: review activity after the prior checkpoint at 2026-08-02T03:40:37Z, plus the post-merge late-feedback sweep.

Mattered

  • Confirmed the current-head timestamp-scalar finding: Ruby 3.4 / Psych raises Psych::DisallowedClass for an unquoted ISO date before the action-reference scanner reaches uses.
  • Deferred the post-merge robustness fix to Follow-up: accept YAML timestamp scalars in the action pinning scanner #302 with reproduction and acceptance criteria. The original MUST-FIX thread remains open until that issue is implemented.
  • The merged main workflow and full bin/validate run are green, so no rollback is required.

Skipped

  • None.

Deferred-work tracking: new issue #302

Next default scan starts after this comment. Say check all reviews to rescan the full PR.

justin808 added a commit that referenced this pull request Aug 2, 2026
…206-workflows

* commit '4ed056be38a82d00b2a06a7812f82cd1770da55b':
  Pin workflow dependencies and define release trust boundary (#295)
justin808 added a commit that referenced this pull request Aug 9, 2026
…/pr291-redesign-implementation

* commit '6239fd0afa5bb7d87cd3fb09cc22ae30bcf1e369':
  Fix locale-dependent test, surface policy-only CLAUDE.md follow-ups, add read-only seam-drift audit (#337)
  Add PR #377 changelog entry (#382)
  Make PR descriptions human-first (#377)
  Remove unsupported signed-launch enforcement (#374)
  Emit coordination telemetry and provenance at workflow checkpoints (#290)
  Add explicit multi-language lint CI (#313)
  Reconcile later-completed audit targets (#315)
  Report source lines in security preflight findings (#311)
  Gate completed-batch publication on terminal scope and QA (#308)
  Add guarded merge submission seam (#304)
  Fix exact-head readiness when status rows omit SHA (#307)
  fix: allow YAML timestamps in action scanner (#305)
  Pin workflow dependencies and define release trust boundary (#295)
  Support direct merges without merge queues (#297)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant