Skip to content

chore(ci): make Scorecard periodic, not per-push - #94

Merged
hyperpolymath merged 1 commit into
mainfrom
chore/scorecard-periodic
Aug 6, 2026
Merged

hyperpolymath merged 1 commit into
mainfrom
chore/scorecard-periodic

Conversation

@hyperpolymath

Copy link
Copy Markdown
Owner

Makes the OpenSSF Scorecard workflow periodic by dropping its push (and, in one repository, pull_request) trigger. schedule, workflow_dispatch and branch_protection_rule are all kept.

Why. Scorecard measures the repository's supply-chain posture, not the change under review. That is the 📅 PERIODIC: tier in the estate's signal-discipline standard: on a schedule against the default branch, feeding a dashboard — not on every event. It cannot meaningfully pass or fail a diff.

Measured across 303 scorecard workflows before this sweep:

199  push, schedule, workflow_dispatch
 93  branch_protection_rule, schedule, push
  1  push, pull_request, schedule, workflow_dispatch
  1  schedule, workflow_dispatch          <- the target shape

So ~292 repositories ran a full posture scan on every push to the default branch. That is pure cost: the score cannot meaningfully change between two consecutive merges.

Deliberately kept: branch_protection_rule. It fires on a settings change — not per pull request — so it does not violate the PERIODIC rule, and it re-measures precisely what Scorecard scores after exactly the change most likely to alter it.

🤖 Generated with Claude Code

Scorecard measures the REPOSITORY's supply-chain posture, not the change under
review. The estate's signal-discipline standard puts repository-level
measurements in the PERIODIC tier: on a schedule against the default branch,
feeding one dashboard — not on every event.

Measured across 303 scorecard workflows before this sweep:

  199  push, schedule, workflow_dispatch
   93  branch_protection_rule, schedule, push
    1  push, pull_request, schedule, workflow_dispatch
    1  schedule, workflow_dispatch                        <- the target shape

So roughly 292 repositories ran a full posture scan on EVERY push to the
default branch. That is pure cost: a supply-chain score cannot meaningfully
change between two consecutive merges, and it never gated anything.

WHAT IS DELIBERATELY KEPT:

  schedule                the point of the tier
  workflow_dispatch       manual re-run when one is actually wanted
  branch_protection_rule  event-driven re-measurement of precisely what
                          Scorecard scores. It fires on a settings change, not
                          per pull request, so it does not violate the PERIODIC
                          rule — and it keeps the score honest after exactly
                          the change most likely to alter it.

Only `push` and `pull_request` are removed. `pull_request` existed in one
repository and was the genuine violation; `push` was the cost.

Related, and the reason this matters beyond minutes: Scorecard was ALSO
required as a `code_scanning` tool in 78 repositories at alertsThreshold=all,
while producing code-scanning results in essentially none — because it does not
emit per-commit SARIF. That made it an estate-wide merge blocker asking to do
something it does not do. Those requirements have been removed separately.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Signed-off-by: Jonathan D.A. Jewell <6759885+hyperpolymath@users.noreply.github.com>
@gitar-bot

gitar-bot Bot commented Aug 6, 2026 •

Copy link
Copy Markdown

Note

Automatic reviews are paused because your trial's included automatic processing has been used for this period. Upgrade now, or comment "Gitar review" to run a review anytime.
Learn more

Code Review ✅ Approved

Updates the OpenSSF Scorecard CI workflow to run on a periodic schedule instead of every push and pull request. No issues found.

Auto-approved and auto-merge armed: No blocking issues found.
Please see Auto-approve Docs for details on setting custom approval criteria. — merges when pipeline and required approvals pass.

Options

Display: compact → Showing less information.

Comment with these commands to change the behavior for this request:

Compact
gitar display:verbose         

Important

Your trial ends in 4 days — upgrade now to keep code review, CI analysis, auto-apply, custom automations, and more.

Was this helpful? React with 👍 / 👎 | Gitar

@gitar-bot gitar-bot Bot added the gitar-approved Added by Gitar label Aug 6, 2026

@gitar-bot gitar-bot 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.

Gitar has auto-approved this PR and enabled auto-merge (configure)

@hyperpolymath
hyperpolymath merged commit ac52292 into main Aug 6, 2026
21 of 22 checks passed
@hyperpolymath
hyperpolymath deleted the chore/scorecard-periodic branch August 6, 2026 12:53
hyperpolymath added a commit that referenced this pull request Sep 22, 2026
…estate-wide startup_failure) (#119)

## Summary

Estate-wide incident: `github/codeql-action` **v4.38.1** fails GitHub
workflow **startup** on every repo that took it — CodeQL/Hypatia runs
die with `startup_failure`, zero jobs dispatched, no error text in any
API surface. The evidence chain (full detail: **nexia-list#100**):

| repo | ref | status |
|---|---|---|
| nexia-list | `@v4.38.1` tag (via dependabot #94) | 🔴 startup_failure →
fixed by rollback #100 (merged) |
| hypatia | `@1c5b675` (4.38.1 SHA) | 🔴 |
| vexometer | `@v4.38.1` | 🔴 (since Sep-21) |
| rsr-template-repo | `@1c5b675` | 🔴 |
| affinescript / boj-server / deed-ecosystem | ≤ v4.38.0 | ✅ green |

The v4.38.1 tag *exists* (peels to `1c5b675`) and byte-identical
workflow content runs under a fresh path — so the failure is the
**version value itself** at GitHub's start-validation layer, not
content, permissions (probes with `security-events` start fine), or the
default-setup conflict.

## Changes here

- `codeql-reusable.yml`, `hypatia-scan-reusable.yml`: `codeql-action/*`
re-pinned `1c5b675` (v4.38.1) → `b96794f0` (**v4.38.0** commit; wrong `#
v3` comments corrected to `# v4.38.0`).
- `actions.lock`: re-keyed to the v4.38.0 SHA entries (dependabot bumped
the reusable pins without regenerating the lock).
- `dependabot.yml`: **full hold** on `github/codeql-action` — scoped
`versions:` ignores do NOT hold for this bot path (nexia-list#101
re-raised the bump in SHA form within an hour, copying the inline
warning comment verbatim while swapping the SHA).

## Follow-ups

Consumer rollbacks shipped in the same batch: nexia-list (merged ✅),
**hypatia**, **vexometer**, **rsr-template-repo**,
**metadatastician/burble** (each with the same dependabot hold).
Reconsider the hold when upstream clears v4.38.1 or a newer release
verifies green on one canary repo.

Co-authored-by: arena-agent <arena-agent@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

gitar-approved Added by Gitar

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant