Skip to content

ci(secret-scan): canonical estate scanner caller, key scan (D243) - #99

Merged
hyperpolymath merged 2 commits into
mainfrom
ci/secret-scan-floor-caller
Oct 1, 2026
Merged

hyperpolymath merged 2 commits into
mainfrom
ci/secret-scan-floor-caller

Conversation

@hyperpolymath

Copy link
Copy Markdown
Owner

What

Write the canonical estate secret-scanner caller to .github/workflows/secret-scanner.yml so this repo emits scan / gitleaks, the context the estate Secret-Scan-Floor ruleset (D243/D244) requires. The previous inline scanner jobs emitted bare contexts (e.g. gitleaks) that cannot satisfy the floor; the reusable deliberately drops TruffleHog as redundant with gitleaks.

Job key scan; reusable hyperpolymath/standards/.github/workflows/secret-scanner-reusable.yml@74d2f66f575246cf6e313ae7775f44df6e097ff2; push trigger on main. actionlint clean (previous file findings: 0). Commit via GraphQL createCommitOnBranch (GitHub-signed, valid: true).

🤖 Generated with Claude Code

https://claude.ai/code/session_0136eszqrQ53Kj7aBH1D4rXK

hyperpolymath and others added 2 commits October 2, 2026 00:38
Secret-Scan-Floor (D243/D244) requires the context `scan / gitleaks` estate-wide. The previous inline scanner jobs emitted bare contexts (e.g. `gitleaks`) that cannot satisfy the floor; the reusable deliberately drops TruffleHog as redundant with gitleaks. Write the canonical caller: job key `scan`, reusable pinned to standards@74d2f66, push trigger on the default branch `main`.

actionlint: new file clean (findings in previous file: 0).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0136eszqrQ53Kj7aBH1D4rXK
…aller

The caller's only uses: is a job-level reusable workflow, which actions.lock does
not track; the stale step entries left from the inline scanner made GitHub refuse
to start the workflow (startup_failure, jobs=0). Verified: standards
check-actions-lock-gate.sh rc=0 and gh actions-lock --no-fix valid=true.
gh actions-lock does not rewrite this key itself (D283).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0136eszqrQ53Kj7aBH1D4rXK
@coderabbitai

coderabbitai Bot commented Oct 1, 2026 •

Copy link
Copy Markdown

Review in Change Stack →

Navigate logical layers of code changes, visualize relationships, and explore their blast radius.

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Advanced

Run ID: 48229eee-d700-4ee7-b872-00866d751408

📥 Commits

Reviewing files that changed from the base of the PR and between cf9ba0a and a059a63.

⛔ Files ignored due to path filters (1)
  • .github/workflows/actions.lock is excluded by !**/*.lock
📒 Files selected for processing (1)
  • .github/workflows/secret-scanner.yml

Included review availability: This review used your included allowance. Your plan provides up to 1 included review per hour; 0 remain after this review.

📜 Recent review details
⏰ Context from checks skipped due to timeout. (4)
  • GitHub Check: semgrep-cloud-platform/scan
  • GitHub Check: Hypatia Neurosymbolic Analysis
  • GitHub Check: analyze (actions, none)
  • GitHub Check: semgrep-cloud-platform/scan
⚠️ CI failures not shown inline (10)

GitHub Actions: Mirror Sync / 1_Push to GitLab Mirror.txt: ci(actions-lock): empty the secret-scanner.yml key for the reusable c…

Conclusion: failure

View job details

##[group]Run REF="${GITHUB_REF}"
 �[36;1mREF="${GITHUB_REF}"�[0m
 �[36;1mecho "Pushing ref: $REF"�[0m
 �[36;1m�[0m
 �[36;1m# Retry logic with exponential backoff�[0m
 �[36;1mMAX_RETRIES=4�[0m
 �[36;1mRETRY_DELAY=2�[0m
 �[36;1m�[0m
 �[36;1mfor i in $(seq 1 $MAX_RETRIES); do�[0m
 �[36;1m  if git push gitlab "$REF" --force-with-lease; then�[0m
 �[36;1m    echo "Successfully pushed $REF"�[0m
 �[36;1m    exit 0�[0m
 �[36;1m  fi�[0m
 �[36;1m  if [ $i -lt $MAX_RETRIES ]; then�[0m
 �[36;1m    echo "Push failed, retrying in ${RETRY_DELAY}s..."�[0m
 �[36;1m    sleep $RETRY_DELAY�[0m
 �[36;1m    RETRY_DELAY=$((RETRY_DELAY * 2))�[0m
 �[36;1m  fi�[0m
 �[36;1mdone�[0m
 �[36;1m�[0m
 �[36;1mecho "Failed to push after $MAX_RETRIES attempts"�[0m
 �[36;1mexit 1�[0m
 shell: /usr/bin/bash -e {0}
 ##[endgroup]
 Pushing ref: refs/heads/ci/secret-scan-floor-caller
 To gitlab.com:maa-framework/3-applications/branch-newspaper.git
  ! [rejected]        ci/secret-scan-floor-caller -> ci/secret-scan-floor-caller (stale info)
 error: failed to push some refs to 'gitlab.com:maa-framework/3-applications/branch-newspaper.git'
 Push failed, retrying in 2s...
 To gitlab.com:maa-framework/3-applications/branch-newspaper.git
  ! [rejected]        ci/secret-scan-floor-caller -> ci/secret-scan-floor-caller (stale info)
 error: failed to push some refs to 'gitlab.com:maa-framework/3-applications/branch-newspaper.git'
 Push failed, retrying in 4s...
 To gitlab.com:maa-framework/3-applications/branch-newspaper.git
  ! [rejected]        ci/secret-scan-floor-caller -> ci/secret-scan-floor-caller (stale info)
 error: failed to push some refs to 'gitlab.com:maa-framework/3-applications/branch-newspaper.git'
 Push failed, retrying in 8s...
 To gitlab.com:maa-framework/3-applications/branch-newspaper.git
  ! [rejected]        ci/secret-scan-floor-caller -> ci/secret-scan-floor-caller (stale info)
 error: failed to push some refs to 'gitlab.com:maa-framework/3-applications/branch-newspaper.git'
 Failed to push ...

GitHub Actions: Mirror Sync / Push to GitLab Mirror: ci(actions-lock): empty the secret-scanner.yml key for the reusable c…

Conclusion: failure

View job details

##[group]Run REF="${GITHUB_REF}"
 �[36;1mREF="${GITHUB_REF}"�[0m
 �[36;1mecho "Pushing ref: $REF"�[0m
 �[36;1m�[0m
 �[36;1m# Retry logic with exponential backoff�[0m
 �[36;1mMAX_RETRIES=4�[0m
 �[36;1mRETRY_DELAY=2�[0m
 �[36;1m�[0m
 �[36;1mfor i in $(seq 1 $MAX_RETRIES); do�[0m
 �[36;1m  if git push gitlab "$REF" --force-with-lease; then�[0m
 �[36;1m    echo "Successfully pushed $REF"�[0m
 �[36;1m    exit 0�[0m
 �[36;1m  fi�[0m
 �[36;1m  if [ $i -lt $MAX_RETRIES ]; then�[0m
 �[36;1m    echo "Push failed, retrying in ${RETRY_DELAY}s..."�[0m
 �[36;1m    sleep $RETRY_DELAY�[0m
 �[36;1m    RETRY_DELAY=$((RETRY_DELAY * 2))�[0m
 �[36;1m  fi�[0m
 �[36;1mdone�[0m
 �[36;1m�[0m
 �[36;1mecho "Failed to push after $MAX_RETRIES attempts"�[0m
 �[36;1mexit 1�[0m
 shell: /usr/bin/bash -e {0}
 ##[endgroup]
 Pushing ref: refs/heads/ci/secret-scan-floor-caller
 To gitlab.com:maa-framework/3-applications/branch-newspaper.git
  ! [rejected]        ci/secret-scan-floor-caller -> ci/secret-scan-floor-caller (stale info)
 error: failed to push some refs to 'gitlab.com:maa-framework/3-applications/branch-newspaper.git'
 Push failed, retrying in 2s...
 To gitlab.com:maa-framework/3-applications/branch-newspaper.git
  ! [rejected]        ci/secret-scan-floor-caller -> ci/secret-scan-floor-caller (stale info)
 error: failed to push some refs to 'gitlab.com:maa-framework/3-applications/branch-newspaper.git'
 Push failed, retrying in 4s...
 To gitlab.com:maa-framework/3-applications/branch-newspaper.git
  ! [rejected]        ci/secret-scan-floor-caller -> ci/secret-scan-floor-caller (stale info)
 error: failed to push some refs to 'gitlab.com:maa-framework/3-applications/branch-newspaper.git'
 Push failed, retrying in 8s...
 To gitlab.com:maa-framework/3-applications/branch-newspaper.git
  ! [rejected]        ci/secret-scan-floor-caller -> ci/secret-scan-floor-caller (stale info)
 error: failed to push some refs to 'gitlab.com:maa-framework/3-applications/branch-newspaper.git'
 Failed to push ...

GitHub Actions: CI / 2_Test (Elixir 1.15.0 _ OTP 25.3).txt: ci(secret-scan): canonical estate scanner caller, key scan (D243)

Conclusion: failure

View job details

##[group]Run mix local.hex --force
 �[36;1mmix local.hex --force�[0m
 �[36;1mmix local.rebar --force�[0m
 �[36;1mmix deps.get�[0m
 shell: /usr/bin/bash -e {0}
 env:
   MIX_ENV: test
   ELIXIR_VERSION: 1.15.7
   OTP_VERSION: 26.2
   INSTALL_DIR_FOR_OTP: /home/runner/work/_temp/.setup-beam/otp
   INSTALL_DIR_FOR_ELIXIR: /home/runner/work/_temp/.setup-beam/elixir
 ##[endgroup]
 * creating /home/runner/.mix/archives/hex-2.5.1
 * creating /home/runner/.mix/elixir/1-15/rebar3
 ** (Mix) Could not find a Mix.Project, please ensure you are running Mix in a directory with a mix.exs file
 ##[error]Process completed with exit code 1.

GitHub Actions: CI / Test (Elixir 1.15.0 _ OTP 25.3): ci(secret-scan): canonical estate scanner caller, key scan (D243)

Conclusion: failure

View job details

##[group]Run mix local.hex --force
 �[36;1mmix local.hex --force�[0m
 �[36;1mmix local.rebar --force�[0m
 �[36;1mmix deps.get�[0m
 shell: /usr/bin/bash -e {0}
 env:
   MIX_ENV: test
   ELIXIR_VERSION: 1.15.7
   OTP_VERSION: 26.2
   INSTALL_DIR_FOR_OTP: /home/runner/work/_temp/.setup-beam/otp
   INSTALL_DIR_FOR_ELIXIR: /home/runner/work/_temp/.setup-beam/elixir
 ##[endgroup]
 * creating /home/runner/.mix/archives/hex-2.5.1
 * creating /home/runner/.mix/elixir/1-15/rebar3
 ** (Mix) Could not find a Mix.Project, please ensure you are running Mix in a directory with a mix.exs file
 ##[error]Process completed with exit code 1.

GitHub Actions: CI / 3_Test (Elixir 1.16.0 _ OTP 26.2).txt: ci(secret-scan): canonical estate scanner caller, key scan (D243)

Conclusion: failure

View job details

##[group]Run mix local.hex --force
 �[36;1mmix local.hex --force�[0m
 �[36;1mmix local.rebar --force�[0m
 �[36;1mmix deps.get�[0m
 shell: /usr/bin/bash -e {0}
 env:
   MIX_ENV: test
   ELIXIR_VERSION: 1.15.7
   OTP_VERSION: 26.2
   INSTALL_DIR_FOR_OTP: /home/runner/work/_temp/.setup-beam/otp
   INSTALL_DIR_FOR_ELIXIR: /home/runner/work/_temp/.setup-beam/elixir
 ##[endgroup]
 * creating /home/runner/.mix/archives/hex-2.5.1
 * creating /home/runner/.mix/elixir/1-16/rebar3
 ** (Mix) Could not find a Mix.Project, please ensure you are running Mix in a directory with a mix.exs file
 ##[error]Process completed with exit code 1.

GitHub Actions: CI / Test (Elixir 1.16.0 _ OTP 26.2): ci(secret-scan): canonical estate scanner caller, key scan (D243)

Conclusion: failure

View job details

##[group]Run mix local.hex --force
 �[36;1mmix local.hex --force�[0m
 �[36;1mmix local.rebar --force�[0m
 �[36;1mmix deps.get�[0m
 shell: /usr/bin/bash -e {0}
 env:
   MIX_ENV: test
   ELIXIR_VERSION: 1.15.7
   OTP_VERSION: 26.2
   INSTALL_DIR_FOR_OTP: /home/runner/work/_temp/.setup-beam/otp
   INSTALL_DIR_FOR_ELIXIR: /home/runner/work/_temp/.setup-beam/elixir
 ##[endgroup]
 * creating /home/runner/.mix/archives/hex-2.5.1
 * creating /home/runner/.mix/elixir/1-16/rebar3
 ** (Mix) Could not find a Mix.Project, please ensure you are running Mix in a directory with a mix.exs file
 ##[error]Process completed with exit code 1.

GitHub Actions: CI / 4_Lint & Format.txt: ci(secret-scan): canonical estate scanner caller, key scan (D243)

Conclusion: failure

View job details

##[group]Run mix local.hex --force
 �[36;1mmix local.hex --force�[0m
 �[36;1mmix local.rebar --force�[0m
 �[36;1mmix deps.get�[0m
 shell: /usr/bin/bash -e {0}
 env:
   MIX_ENV: test
   ELIXIR_VERSION: 1.15.7
   OTP_VERSION: 26.2
   INSTALL_DIR_FOR_OTP: /home/runner/work/_temp/.setup-beam/otp
   INSTALL_DIR_FOR_ELIXIR: /home/runner/work/_temp/.setup-beam/elixir
 ##[endgroup]
 * creating /home/runner/.mix/archives/hex-2.5.1
 * creating /home/runner/.mix/elixir/1-15/rebar3
 ** (Mix) Could not find a Mix.Project, please ensure you are running Mix in a directory with a mix.exs file
 ##[error]Process completed with exit code 1.

GitHub Actions: CI / Lint & Format: ci(secret-scan): canonical estate scanner caller, key scan (D243)

Conclusion: failure

View job details

##[group]Run mix local.hex --force
 �[36;1mmix local.hex --force�[0m
 �[36;1mmix local.rebar --force�[0m
 �[36;1mmix deps.get�[0m
 shell: /usr/bin/bash -e {0}
 env:
   MIX_ENV: test
   ELIXIR_VERSION: 1.15.7
   OTP_VERSION: 26.2
   INSTALL_DIR_FOR_OTP: /home/runner/work/_temp/.setup-beam/otp
   INSTALL_DIR_FOR_ELIXIR: /home/runner/work/_temp/.setup-beam/elixir
 ##[endgroup]
 * creating /home/runner/.mix/archives/hex-2.5.1
 * creating /home/runner/.mix/elixir/1-15/rebar3
 ** (Mix) Could not find a Mix.Project, please ensure you are running Mix in a directory with a mix.exs file
 ##[error]Process completed with exit code 1.

GitHub Actions: CI / 5_Test (Elixir 1.15.7 _ OTP 26.2).txt: ci(secret-scan): canonical estate scanner caller, key scan (D243)

Conclusion: failure

View job details

##[group]Run mix local.hex --force
 �[36;1mmix local.hex --force�[0m
 �[36;1mmix local.rebar --force�[0m
 �[36;1mmix deps.get�[0m
 shell: /usr/bin/bash -e {0}
 env:
   MIX_ENV: test
   ELIXIR_VERSION: 1.15.7
   OTP_VERSION: 26.2
   INSTALL_DIR_FOR_OTP: /home/runner/work/_temp/.setup-beam/otp
   INSTALL_DIR_FOR_ELIXIR: /home/runner/work/_temp/.setup-beam/elixir
 ##[endgroup]
 * creating /home/runner/.mix/archives/hex-2.5.1
 * creating /home/runner/.mix/elixir/1-15/rebar3
 ** (Mix) Could not find a Mix.Project, please ensure you are running Mix in a directory with a mix.exs file
 ##[error]Process completed with exit code 1.

GitHub Actions: CI / Test (Elixir 1.15.7 _ OTP 26.2): ci(secret-scan): canonical estate scanner caller, key scan (D243)

Conclusion: failure

View job details

##[group]Run mix local.hex --force
 �[36;1mmix local.hex --force�[0m
 �[36;1mmix local.rebar --force�[0m
 �[36;1mmix deps.get�[0m
 shell: /usr/bin/bash -e {0}
 env:
   MIX_ENV: test
   ELIXIR_VERSION: 1.15.7
   OTP_VERSION: 26.2
   INSTALL_DIR_FOR_OTP: /home/runner/work/_temp/.setup-beam/otp
   INSTALL_DIR_FOR_ELIXIR: /home/runner/work/_temp/.setup-beam/elixir
 ##[endgroup]
 * creating /home/runner/.mix/archives/hex-2.5.1
 * creating /home/runner/.mix/elixir/1-15/rebar3
 ** (Mix) Could not find a Mix.Project, please ensure you are running Mix in a directory with a mix.exs file
 ##[error]Process completed with exit code 1.
🔇 Additional comments (1)
.github/workflows/secret-scanner.yml (1)

26-27: 🩺 Stability & Availability

The concern is refuted. The pinned reusable workflow defines jobs.gitleaks and grants only contents: read. Its active implementation does not upload SARIF results, query workflow-run metadata, or require actions: read. The secrets: inherit text is stale guidance for the removed gitleaks action; the current workflow uses a pinned binary. No caller change is required.


📝 Summary

Summary by CodeRabbit

  • Chores
    • Updated automated secret scanning to use a shared scanning workflow. Scans continue to run for pull requests and pushes to the main branch, with overlapping runs cancelled and read-only repository access.

Walkthrough

The workflow replaces local TruffleHog, Gitleaks and Rust-secret jobs with a pinned reusable secret-scanner workflow. It retains its pull-request and main-push triggers, concurrency cancellation and read-only contents permission.

Changes

Secret scanning workflow

Layer / File(s) Summary
Configure the shared scanner workflow
.github/workflows/secret-scanner.yml
The workflow documents the shared scanner setup and its required scan job key. It calls the pinned reusable workflow without passing secrets and removes the local scanner jobs. Permissions retain only contents: read.

Priority: ⬇️ Low

Estimated code review effort: 2 (Simple) | ~10 minutes

Change: Bug fix

Merge Risk: ⚪ Minimal · up to a059a

The workflow now calls the shared secret scanner under the required scan job key with read-only repository access. The shared workflow's permission needs are covered by this scope, so no merge-blocking risk was found.

Architecture Summary

Architecture risk: 🔵 Low · up to a059a

The changed surface does not map to a changed system, dependency edge, entrypoint, or external dependency.

Changed systems: None identified.

Architecture concerns
No architecture-level concerns identified.

Review details

Before / after behavior

  • observed — Modified behavior in .github/workflows/secret-scanner.yml: Comments now describe the shared scanner, the required scan job key and why the workflow does not pass secrets. The previous managed-workflow comment was removed.
  • observed — Modified behavior in .github/workflows/secret-scanner.yml: Permissions are reduced from actions: read and contents: read to contents: read. The local TruffleHog, Gitleaks and Rust-secret jobs and their checkout and scanning steps are replaced by a scan job that calls the pinned reusable workflow.
🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly identifies the main change: replacing the secret-scanner workflow with the canonical estate scanner caller and using the scan job key.
Description check ✅ Passed The description directly explains the workflow change, its purpose, the reusable workflow revision, triggers, job key, and validation results.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff. Analyzed 0 functions across 0…
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
🛠️ Fix failing CI checks 💡
  • Commit to this branch
  • Create a new PR
  • Autopilot · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Autopilot is currently an internal CodeRabbit preview.


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

A rabbit checks the scanner’s call,
The shared workflow scans them all.
No local jobs remain in sight,
Contents stay read-only and light.
The scan job hops along,
While secrets stay where they belong.

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

@github-actions

github-actions Bot commented Oct 1, 2026

Copy link
Copy Markdown

🔍 Hypatia Security Scan

Findings: 93 issues detected

Severity Count
🔴 Critical 6
🟠 High 12
🟡 Medium 75

⚠️ Action Required: Critical security issues found!

View findings
[
  {
    "reason": "Job `trigger-boj` in boj-build.yml has no `timeout-minutes:` declaration. Default is 6 hours — a stuck codeload fetch or runner hang can burn budget. Add `timeout-minutes: 10` (or proportional).",
    "type": "missing_timeout_minutes",
    "file": ".github/workflows/boj-build.yml",
    "action": "flag",
    "rule_module": "workflow_audit",
    "severity": "medium",
    "recipe_id": "recipe-add-workflow-timeout-minutes",
    "job": "trigger-boj"
  },
  {
    "reason": "Job `build` in casket-pages.yml has no `timeout-minutes:` declaration. Default is 6 hours — a stuck codeload fetch or runner hang can burn budget. Add `timeout-minutes: 10` (or proportional).",
    "type": "missing_timeout_minutes",
    "file": ".github/workflows/casket-pages.yml",
    "action": "flag",
    "rule_module": "workflow_audit",
    "severity": "medium",
    "recipe_id": "recipe-add-workflow-timeout-minutes",
    "job": "build"
  },
  {
    "reason": "Job `deploy` in casket-pages.yml has no `timeout-minutes:` declaration. Default is 6 hours — a stuck codeload fetch or runner hang can burn budget. Add `timeout-minutes: 10` (or proportional).",
    "type": "missing_timeout_minutes",
    "file": ".github/workflows/casket-pages.yml",
    "action": "flag",
    "rule_module": "workflow_audit",
    "severity": "medium",
    "recipe_id": "recipe-add-workflow-timeout-minutes",
    "job": "deploy"
  },
  {
    "reason": "Job `build` in ci.yml has no `timeout-minutes:` declaration. Default is 6 hours — a stuck codeload fetch or runner hang can burn budget. Add `timeout-minutes: 10` (or proportional).",
    "type": "missing_timeout_minutes",
    "file": ".github/workflows/ci.yml",
    "action": "flag",
    "rule_module": "workflow_audit",
    "severity": "medium",
    "recipe_id": "recipe-add-workflow-timeout-minutes",
    "job": "build"
  },
  {
    "reason": "Job `lint` in ci.yml has no `timeout-minutes:` declaration. Default is 6 hours — a stuck codeload fetch or runner hang can burn budget. Add `timeout-minutes: 10` (or proportional).",
    "type": "missing_timeout_minutes",
    "file": ".github/workflows/ci.yml",
    "action": "flag",
    "rule_module": "workflow_audit",
    "severity": "medium",
    "recipe_id": "recipe-add-workflow-timeout-minutes",
    "job": "lint"
  },
  {
    "reason": "Job `mirror-to-gitlab` in ci.yml has no `timeout-minutes:` declaration. Default is 6 hours — a stuck codeload fetch or runner hang can burn budget. Add `timeout-minutes: 10` (or proportional).",
    "type": "missing_timeout_minutes",
    "file": ".github/workflows/ci.yml",
    "action": "flag",
    "rule_module": "workflow_audit",
    "severity": "medium",
    "recipe_id": "recipe-add-workflow-timeout-minutes",
    "job": "mirror-to-gitlab"
  },
  {
    "reason": "Job `test` in ci.yml has no `timeout-minutes:` declaration. Default is 6 hours — a stuck codeload fetch or runner hang can burn budget. Add `timeout-minutes: 10` (or proportional).",
    "type": "missing_timeout_minutes",
    "file": ".github/workflows/ci.yml",
    "action": "flag",
    "rule_module": "workflow_audit",
    "severity": "medium",
    "recipe_id": "recipe-add-workflow-timeout-minutes",
    "job": "test"
  },
  {
    "reason": "Job `analyze` in codeql.yml has no `timeout-minutes:` declaration. Default is 6 hours — a stuck codeload fetch or runner hang can burn budget. Add `timeout-minutes: 10` (or proportional).",
    "type": "missing_timeout_minutes",
    "file": ".github/workflows/codeql.yml",
    "action": "flag",
    "rule_module": "workflow_audit",
    "severity": "medium",
    "recipe_id": "recipe-add-workflow-timeout-minutes",
    "job": "analyze"
  },
  {
    "reason": "Job `deed-validate` in dogfood-gate.yml has no `timeout-minutes:` declaration. Default is 6 hours — a stuck codeload fetch or runner hang can burn budget. Add `timeout-minutes: 10` (or proportional).",
    "type": "missing_timeout_minutes",
    "file": ".github/workflows/dogfood-gate.yml",
    "action": "flag",
    "rule_module": "workflow_audit",
    "severity": "medium",
    "recipe_id": "recipe-add-workflow-timeout-minutes",
    "job": "deed-validate"
  },
  {
    "reason": "Job `dogfood-summary` in dogfood-gate.yml has no `timeout-minutes:` declaration. Default is 6 hours — a stuck codeload fetch or runner hang can burn budget. Add `timeout-minutes: 10` (or proportional).",
    "type": "missing_timeout_minutes",
    "file": ".github/workflows/dogfood-gate.yml",
    "action": "flag",
    "rule_module": "workflow_audit",
    "severity": "medium",
    "recipe_id": "recipe-add-workflow-timeout-minutes",
    "job": "dogfood-summary"
  }
]

Powered by Hypatia Neurosymbolic CI/CD Intelligence

@hyperpolymath
hyperpolymath merged commit c35f5e5 into main Oct 1, 2026
36 of 41 checks passed
@hyperpolymath
hyperpolymath deleted the ci/secret-scan-floor-caller branch October 1, 2026 23:47
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