fix(ci): remove orphan mapping key that made scorecard.yml unparseable - #46
Conversation
`permissions: read-all` is a SCALAR. The indented `actions: read` beneath it is a mapping entry under a scalar, which is invalid YAML, so GitHub never parsed this workflow: the run emits zero jobs and the Scorecard check never appears at all. The gate was therefore ABSENT, not red — which is why this survived unnoticed. `read-all` already grants `actions: read`, so deleting the orphan line restores the file with no loss of permission. Same repair as aerie#76, merged 2026-09-13. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0178nN4Nm3neFRy5K9StZKnB
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Organization UI Review profile: ASSERTIVE Plan: Advanced Run ID: 📒 Files selected for processing (1)
Included review availability: 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. (2)
|
| Layer / File(s) | Summary |
|---|---|
Remove redundant actions permission .github/workflows/scorecard.yml |
Removes the top-level actions: read entry and retains permissions: read-all. The analysis job permissions remain unchanged. |
Priority: ⬇️ Low
Estimated code review effort: 1 (Trivial) | ~2 minutes
Change: Bug fix
Merge Risk: ⚪ Minimal · up to b4fa3
The YAML repair preserves the Scorecard job’s required permission and is mergeable. The separate repository allowlist setting remains external to this change.
🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
| Check name | Status | Explanation |
|---|---|---|
| Title check | ✅ Passed | The title clearly identifies the main change: removing the orphan mapping key that made the Scorecard workflow YAML unparseable. |
| Description check | ✅ Passed | The description directly explains the invalid YAML, the permission impact, and the verification performed. It is related to the changeset. |
| 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 💡
❌ Error running CI fixer.
- Create stacked PR
- Commit on current branch
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.
A rabbit checks the workflow gate
Read-all keeps the permission state
One extra entry hops away
The analysis job stands today
Clean YAML marks the change complete
Comment @coderabbitai help to get the list of available commands.
⚠ Correction: this repair is correct, but the gate will NOT arm on mergeMeasured on this repo today (2026-09-14):
What that means for this PR: the YAML fix is right and should still land — the file Do not read "no check appeared" as a failed repair here. Enforcement is transitive: The remaining half is a settings change, not a YAML change, and it is the owner's Verified by GitHub's own refusal text, read off the HTML run page (the REST API does not
Only this repo and |
The job-level `permissions:` block REPLACES the workflow-level block, so the reusable workflow's own `actions: read` cannot elevate the caller's token. Without it the caller's effective `actions` permission is `none`, and Scorecard's Packaging check (Actions.ListWorkflowRunsByFileName) can error. Caught by CodeRabbit on palimpsest-license#151; verified against the whole family: 11 of 13 scorecard.yml callers omit it, including aerie which is already on main. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0178nN4Nm3neFRy5K9StZKnB
|
✅ Coding Agent task started: View task and status The task will inspect the CI failures, validate its fix, and open a stacked fix pull request automatically.
|
Rate Limit Exceeded
|
scorecard.yml is already repaired on branch fix/repair-startup-dead-scorecard-yml (PR #46), which re-indents `actions: read` INTO the analysis job's own permissions block. That is the correct cure: job-level permissions REPLACE the top-level map, so the analysis job never inherited `read-all` and Scorecard was running without `actions: read`. Deleting the stray line made the file parse but left the job functionally short. Restoring this file from main so PR #46 owns it uncontested. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0178nN4Nm3neFRy5K9StZKnB
Deletes one line: an orphan
actions: readindented beneath the scalarpermissions: read-all.A mapping entry under a scalar is invalid YAML, so this workflow has never been parsed by GitHub.
read-allalready grantsactions: read, so nothing is lost.Same repair as aerie#76, merged 2026-09-13. One of 10 repos in this class.
Why this was never noticed
A workflow that fails to parse does not go red. GitHub emits zero jobs, so the
Scorecard check run is never created and the context is absent from the rollup.
required ∩ failingis satisfied vacuously, and the board reads clean.An unrepaired repo therefore looks greener than a repaired one. When this merges
you will see checks appear where there were none before. That is the gate arming, not
this PR introducing failures.
Screen this class by job count, never by conclusion colour.
Verification
yq e '.'— parses (it did not before)actionlint— cleansecrets: inheritunchanged; no other file touched.Merging nothing — this is for your review.
🤖 Generated with Claude Code
https://claude.ai/code/session_0178nN4Nm3neFRy5K9StZKnB