ci(workflows): add timeout-minutes to all jobs#28
Merged
Conversation
Adds a conservative 15-minute timeout-minutes cap to all 20 runs-on jobs across 9 workflow files (boj-build, casket-pages, codeql, dogfood-gate, instant-sync, release, rhodibot, scorecard-enforcer, static-analysis-gate). Clears the missing_timeout_minutes findings raised by the Hypatia workflow_audit. Pure additions — no other workflow logic changed; per-job values can be tuned later if any job legitimately needs longer. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Y2MWTAqX2x7goVJzjFB4j5
hyperpolymath
marked this pull request as ready for review
June 20, 2026 04:42
🔍 Hypatia Security ScanFindings: 35 issues detected
View findings[
{
"reason": "Issue in scorecard-enforcer.yml",
"type": "scorecard_publish_with_run_step",
"file": "scorecard-enforcer.yml",
"action": "split_scorecard_publish_job",
"rule_module": "workflow_audit",
"severity": "high"
},
{
"reason": "Issue in instant-sync.yml",
"type": "secret_action_without_presence_gate",
"file": "instant-sync.yml",
"action": "peter-evans/repository-dispatch",
"rule_module": "workflow_audit",
"severity": "high"
},
{
"reason": "Issue in scorecard.yml",
"type": "scorecard_wrapper_missing_job_permissions",
"file": "scorecard.yml",
"action": "flag",
"rule_module": "workflow_audit",
"severity": "high"
},
{
"reason": "Download-and-execute pattern (curl|wget pipe to shell) -- verify integrity before execution (3 occurrences, CWE-494)",
"type": "shell_download_then_run",
"file": "/home/runner/work/wokelangiser/wokelangiser/setup.sh",
"action": "flag",
"rule_module": "code_safety",
"severity": "high"
},
{
"line": 24,
"reason": "Secret found: Generic API key",
"type": "secret_detected",
"file": "/home/runner/work/wokelangiser/wokelangiser/.envrc",
"action": "revoke_rotate_and_purge",
"rule_module": "security_errors",
"severity": "critical"
},
{
"reason": "Nominal-only SAST in wokelangiser: codeql.yml language matrix contains no language present in the repo and lacks `actions`, so CodeQL records zero results on every commit. Remediation: set the CodeQL matrix to `language: actions`.",
"type": "StaticAnalysis",
"file": "/home/runner/work/wokelangiser/wokelangiser",
"action": "auto_fix",
"rule_module": "scorecard",
"severity": "medium",
"remediation": "Add CodeQL or equivalent SAST workflow.",
"scorecard_check": "SAST"
},
{
"reason": "1 workflow(s) with tag-pinned (not SHA-pinned) actions in wokelangiser",
"type": "DependencyPinning",
"file": "/home/runner/work/wokelangiser/wokelangiser",
"action": "auto_fix",
"rule_module": "scorecard",
"severity": "medium",
"remediation": "Pin GitHub Actions and Docker base images by SHA hash.",
"scorecard_check": "Pinned-Dependencies"
},
{
"reason": "Repository has 7 non-main remote branch(es). Policy: single main branch only.",
"type": "GS007",
"file": ".",
"action": "delete_remote_branches",
"rule_module": "git_state",
"severity": "medium"
},
{
"reason": "Code scanning (Hypatia): hypatia/workflow_audit/scorecard_wrapper_missing_job_permissions -- Hypatia workflow_audit: scorecard_wrapper_missing_job_permissions -- 19 day(s) old [STALE]",
"type": "CSA001",
"file": "scorecard.yml",
"action": "escalate",
"rule_module": "code_scanning_alerts",
"severity": "high"
},
{
"reason": "Code scanning (Hypatia): hypatia/workflow_audit/secret_action_without_presence_gate -- Hypatia workflow_audit: secret_action_without_presence_gate -- 19 day(s) old [STALE]",
"type": "CSA001",
"file": "instant-sync.yml",
"action": "escalate",
"rule_module": "code_scanning_alerts",
"severity": "high"
}
]Powered by Hypatia Neurosymbolic CI/CD Intelligence |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Why
The Hypatia
workflow_audit(surfaced in the security-scan comments on #26/#27) flaggedmissing_timeout_minutesacross the repo's GitHub Actions workflows. Withouttimeout-minutes, a hung job can run up to the 6-hour default, wasting the shared account-wide Actions concurrency pool.Change
Adds
timeout-minutes: 15to all 20runs-onjobs across 9 workflows:boj-build,casket-pages,codeql,dogfood-gate,instant-sync,release,rhodibot,scorecard-enforcer,static-analysis-gate.9 files changed, 20 insertions(+), 0 deletions(-); no other workflow logic touched.15min is a conservative safety cap (every current job completes in well under a minute per CI history); bump per-job later if anything legitimately needs longer.runs-on:, e.g. ingovernance.yml/rust-ci.yml/mirror.yml/secret-scanner.yml/scorecard.yml/hypatia-scan.yml) are intentionally untouched —timeout-minutesbelongs in the called workflow there.Scope note
This clears the
missing_timeout_minutesfindings only. The scan's other finding types (the 1 critical / 10 high) are unrelated to timeouts and out of scope for this PR — happy to tackle them separately if you want.Verification (actually run)
git diff --stat→ 9 files, 20 insertions, 0 deletions; each addition is atimeout-minutes: 15placed as a sibling of aruns-on:line at matching indentation (full diff reviewed).timeout-minutesin any workflow beforehand (no duplicate YAML keys), and reverted an incidental EOF-newline change so the diff is purely the timeout additions.🤖 Generated with Claude Code
https://claude.ai/code/session_01Y2MWTAqX2x7goVJzjFB4j5
Generated by Claude Code