Skip to content

ci(scorecard): add job-level permissions for reusable workflow - #103

Merged
hyperpolymath merged 1 commit into
mainfrom
chore/scorecard-job-level-perms-282
May 30, 2026
Merged

hyperpolymath merged 1 commit into
mainfrom
chore/scorecard-job-level-perms-282

Conversation

@hyperpolymath

Copy link
Copy Markdown
Owner

Summary

Adds the job-level permissions: { security-events: write, id-token: write } block to the analysis job in .github/workflows/scorecard.yml, fixing the silent startup_failure on every Scorecard run.

Why

scorecard-reusable.yml's docstring states:

Caller MUST grant security-events: write and id-token: write on the calling job. The reusable re-asserts these on its own analysis job, but called-workflow permissions are CAPPED by the caller's permissions block.

Without this, ossf/scorecard-action cannot upload SARIF, the workflow fails at startup, and there are no logs.

Sweep

Part of estate-wide sweep tracked at metadatastician/standards#282. Pattern shipped in julia-professional-registry#19 (2026-05-27) and absolute-zero#68 (2026-05-30).

Test plan

  • Next Scorecard run completes successfully (cron '23 4 * * 1')
  • SARIF appears in Security tab
  • No startup_failure runs after merge

Refs metadatastician/standards#282

🤖 Generated with Claude Code

The `scorecard-reusable.yml` reusable requires the calling `analysis` job
to declare `security-events: write` and `id-token: write` — called-workflow
permissions are CAPPED by the caller's block (the reusable docstring
states this explicitly).

Without this, every Scorecard run silently fails with `startup_failure`
because ossf/scorecard-action cannot upload SARIF.

Estate-wide sweep tracked at metadatastician/standards#282; same pattern as
julia-professional-registry#19 (2026-05-27) and absolute-zero#68
(2026-05-30).

Refs metadatastician/standards#282

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@hyperpolymath
hyperpolymath enabled auto-merge (squash) May 30, 2026 16:10
@sonarqubecloud

Copy link
Copy Markdown

@hyperpolymath
hyperpolymath merged commit 0343e2b into main May 30, 2026
9 of 20 checks passed
@hyperpolymath
hyperpolymath deleted the chore/scorecard-job-level-perms-282 branch May 30, 2026 16:32
@github-actions

Copy link
Copy Markdown

🔍 Hypatia Security Scan

Findings: 331 issues detected

Severity Count
🔴 Critical 130
🟠 High 31
🟡 Medium 170

⚠️ Action Required: Critical security issues found!

View findings
[
  {
    "reason": "Action perpolymath/standards/.github/workflows/governance-reusable.yml@main\n needs attention",
    "type": "unpinned_action",
    "file": "governance.yml",
    "action": "pin_sha",
    "rule_module": "workflow_audit",
    "severity": "medium"
  },
  {
    "reason": "Issue in architecture-enforcement.yml",
    "type": "missing_timeout_minutes",
    "file": "architecture-enforcement.yml",
    "action": "flag",
    "rule_module": "workflow_audit",
    "severity": "medium"
  },
  {
    "reason": "Issue in architecture-enforcement.yml",
    "type": "missing_timeout_minutes",
    "file": "architecture-enforcement.yml",
    "action": "flag",
    "rule_module": "workflow_audit",
    "severity": "medium"
  },
  {
    "reason": "Issue in boj-build.yml",
    "type": "missing_timeout_minutes",
    "file": "boj-build.yml",
    "action": "flag",
    "rule_module": "workflow_audit",
    "severity": "medium"
  },
  {
    "reason": "Issue in casket-pages.yml",
    "type": "missing_timeout_minutes",
    "file": "casket-pages.yml",
    "action": "flag",
    "rule_module": "workflow_audit",
    "severity": "medium"
  },
  {
    "reason": "Issue in casket-pages.yml",
    "type": "missing_timeout_minutes",
    "file": "casket-pages.yml",
    "action": "flag",
    "rule_module": "workflow_audit",
    "severity": "medium"
  },
  {
    "reason": "Issue in cflite_batch.yml",
    "type": "missing_timeout_minutes",
    "file": "cflite_batch.yml",
    "action": "flag",
    "rule_module": "workflow_audit",
    "severity": "medium"
  },
  {
    "reason": "Issue in cflite_pr.yml",
    "type": "missing_timeout_minutes",
    "file": "cflite_pr.yml",
    "action": "flag",
    "rule_module": "workflow_audit",
    "severity": "medium"
  },
  {
    "reason": "Issue in codeql.yml",
    "type": "missing_timeout_minutes",
    "file": "codeql.yml",
    "action": "flag",
    "rule_module": "workflow_audit",
    "severity": "medium"
  },
  {
    "reason": "Issue in dogfood-gate.yml",
    "type": "missing_timeout_minutes",
    "file": "dogfood-gate.yml",
    "action": "flag",
    "rule_module": "workflow_audit",
    "severity": "medium"
  }
]

Powered by Hypatia Neurosymbolic CI/CD Intelligence

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