Skip to content

ci(scorecard-enforcer): split score-threshold from publish job (OSSF run-step ban)#41

Merged
hyperpolymath merged 1 commit into
mainfrom
ci/scorecard-enforcer-split-publish-from-run
May 30, 2026
Merged

ci(scorecard-enforcer): split score-threshold from publish job (OSSF run-step ban)#41
hyperpolymath merged 1 commit into
mainfrom
ci/scorecard-enforcer-split-publish-from-run

Conversation

@hyperpolymath
Copy link
Copy Markdown
Owner

Summary

This repo's scorecard-enforcer.yml has the OSSF publish-contract violation that hyperpolymath/standards#304 fixed in the canonical template. Every Scorecard run fails with:

webapp: scorecard job must only have steps with uses

Root cause

OSSF's publish endpoint enforces a hard contract: the job that runs ossf/scorecard-action with publish_results: true must contain ONLY uses: steps. The pre-fix template's "Check minimum score" run: step in the same job fails the publish step and the whole workflow run.

Fix

Replace local file with the post-#304 standards template:

  • scorecard job: uses-only (now includes upload-artifact for SARIF hand-off)
  • check-score job: needs: scorecard, downloads artifact, runs the threshold gate

Detection going forward

Hypatia rule WF014 in hyperpolymath/hypatia#393 catches this pattern.

🤖 Generated with Claude Code

Replace local copy with the post-#304 standards template. The pre-fix
shape has the OSSF publish contract violation:

  webapp: scorecard job must only have steps with uses

Post-fix shape:
- `scorecard` job: uses-only (now includes upload-artifact for SARIF hand-off)
- `check-score` job: `needs: scorecard`, downloads artifact, runs threshold gate

Caught 49 estate repos on the 2026-05-30 audit. Detector: hypatia rule WF014.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@hyperpolymath hyperpolymath enabled auto-merge (squash) May 30, 2026 17:10
@hyperpolymath hyperpolymath merged commit 3d78460 into main May 30, 2026
10 of 21 checks passed
@hyperpolymath hyperpolymath deleted the ci/scorecard-enforcer-split-publish-from-run branch May 30, 2026 17:17
@github-actions
Copy link
Copy Markdown

🔍 Hypatia Security Scan

Findings: 90 issues detected

Severity Count
🔴 Critical 6
🟠 High 38
🟡 Medium 46

⚠️ Action Required: Critical security issues found!

View findings
[
  {
    "reason": "npm banned -- use Deno",
    "type": "banned",
    "file": "package-lock.json",
    "action": "delete",
    "rule_module": "root_hygiene",
    "severity": "high"
  },
  {
    "reason": "Stray AI.a2ml in root -- use 0-AI-MANIFEST.a2ml only",
    "type": "banned",
    "file": "AI.a2ml",
    "action": "delete",
    "rule_module": "root_hygiene",
    "severity": "high"
  },
  {
    "reason": "Superseded by 0-AI-MANIFEST.a2ml",
    "type": "banned",
    "file": "AI.djot",
    "action": "delete",
    "rule_module": "root_hygiene",
    "severity": "high"
  },
  {
    "reason": "No test directory or test files found",
    "type": "no_tests",
    "file": "/home/runner/work/coq-jr/coq-jr",
    "action": "flag",
    "rule_module": "honest_completion",
    "severity": "high",
    "deduction": 20
  },
  {
    "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 codeql.yml",
    "type": "missing_timeout_minutes",
    "file": "codeql.yml",
    "action": "flag",
    "rule_module": "workflow_audit",
    "severity": "medium"
  },
  {
    "reason": "Issue in governance.yml",
    "type": "missing_timeout_minutes",
    "file": "governance.yml",
    "action": "flag",
    "rule_module": "workflow_audit",
    "severity": "medium"
  },
  {
    "reason": "Issue in hypatia-scan.yml",
    "type": "missing_timeout_minutes",
    "file": "hypatia-scan.yml",
    "action": "flag",
    "rule_module": "workflow_audit",
    "severity": "medium"
  },
  {
    "reason": "Issue in instant-sync.yml",
    "type": "missing_timeout_minutes",
    "file": "instant-sync.yml",
    "action": "flag",
    "rule_module": "workflow_audit",
    "severity": "medium"
  },
  {
    "reason": "Issue in mirror.yml",
    "type": "missing_timeout_minutes",
    "file": "mirror.yml",
    "action": "flag",
    "rule_module": "workflow_audit",
    "severity": "medium"
  }
]

Powered by Hypatia Neurosymbolic CI/CD Intelligence

@github-actions
Copy link
Copy Markdown

Dependency Review

✅ No vulnerabilities or license issues or OpenSSF Scorecard issues found.

OpenSSF Scorecard

PackageVersionScoreDetails
actions/actions/download-artifact 018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 🟢 5.3
Details
CheckScoreReason
Packaging⚠️ -1packaging workflow not detected
Dangerous-Workflow🟢 10no dangerous workflow patterns detected
Code-Review🟢 10all changesets reviewed
Maintained⚠️ 23 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 2
Binary-Artifacts🟢 10no binaries found in the repo
CII-Best-Practices⚠️ 0no effort to earn an OpenSSF best practices badge detected
Token-Permissions⚠️ 0detected GitHub workflow tokens with excessive permissions
Pinned-Dependencies⚠️ 0dependency not pinned by hash detected -- score normalized to 0
Fuzzing⚠️ 0project is not fuzzed
License🟢 10license file detected
Signed-Releases⚠️ -1no releases found
Security-Policy🟢 9security policy file detected
SAST🟢 10SAST tool is run on all commits
Branch-Protection⚠️ 0branch protection not enabled on development/release branches
actions/actions/upload-artifact 330a01c490aca151604b8cf639adc76d48f6c5d4 🟢 5.6
Details
CheckScoreReason
CII-Best-Practices⚠️ 0no effort to earn an OpenSSF best practices badge detected
Binary-Artifacts🟢 10no binaries found in the repo
Maintained🟢 66 commit(s) and 2 issue activity found in the last 90 days -- score normalized to 6
Dangerous-Workflow🟢 10no dangerous workflow patterns detected
Code-Review🟢 8Found 8/9 approved changesets -- score normalized to 8
Token-Permissions⚠️ 0detected GitHub workflow tokens with excessive permissions
Packaging⚠️ -1packaging workflow not detected
Pinned-Dependencies⚠️ 1dependency not pinned by hash detected -- score normalized to 1
License🟢 10license file detected
Fuzzing⚠️ 0project is not fuzzed
Signed-Releases⚠️ -1no releases found
Security-Policy🟢 9security policy file detected
SAST🟢 10SAST tool is run on all commits
Branch-Protection⚠️ 0branch protection not enabled on development/release branches
actions/github/codeql-action/upload-sarif c6f931105cb2c34c8f901cc885ba1e2e259cf745 UnknownUnknown

Scanned Files

  • .github/workflows/scorecard-enforcer.yml

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