Skip to content

ci: fix dependency-review permission cap and stop inherited fork noise#14

Merged
rldyourmnd merged 1 commit into
mainfrom
ci/fix-dependency-review-and-fork-cruft
Jul 24, 2026
Merged

ci: fix dependency-review permission cap and stop inherited fork noise#14
rldyourmnd merged 1 commit into
mainfrom
ci/fix-dependency-review-and-fork-cruft

Conversation

@rldyourmnd

Copy link
Copy Markdown

Three separate red or wasteful signals, all verified against real run history.

1. dependency-reviewstartup_failure on every PR

Including the ones opened today. No jobs are recorded at all, so nothing ran.

The caller granted only contents: read. The reusable public-dependency-review job declares contents: read and pull-requests: write, and GitHub caps a reusable call against what the called file declares. Positive control: github-device-sync and macos-ubuntu-bootstrap grant that pair on the identical reusable and SHA, and both run clean.

2. Daily Security Audit — red on main five days running

Every failure is at the Send to Slack step; the audit itself passes. gh secret list for this repository returns empty, so SLACK_WEBHOOK_URL does not exist and curl was posting to an empty URL, which fails the step and the job.

The notification is now skipped when the webhook is unset, and the variable is quoted rather than left to word splitting. This matters beyond tidiness: a security job that is always red is a job nobody reads.

3. top-issues.yml — deleted, not quarantined

Its job is gated on if: github.repository == 'browseros-ai/BrowserOS', so it has never run here — every run is skipped, on an hourly cron.

Deletion rather than quarantine because the guard is not the only problem: the script hardcodes the upstream owner and repo in the GraphQL query (-f owner='browseros-ai' -f repo='BrowserOS') and in gh issue edit --repo browseros-ai/BrowserOS. Even with the guard removed it would try to edit upstream's issue with this fork's scoped token. It is structurally inert in a fork.

Note

actionlint flags a pre-existing SC2086 at audit.yml:29, in a different step that I did not touch. Left alone to keep this diff scoped — worth a follow-up.

Scope

The remaining ~25 inherited upstream workflows (13 release-*, the nightlies, eval-weekly, branch-cleaner, …) are not classified here. Deciding which a fork genuinely needs is not something to guess at, and the audit that would have produced that list did not complete. They are untouched.

dependency-review has failed with startup_failure on every pull request,
including the ones opened today. The caller granted only contents: read, but the
reusable public-dependency-review job declares contents: read and
pull-requests: write, and GitHub caps the call against what the called file
declares. github-device-sync and macos-ubuntu-bootstrap grant that pair on the
identical reusable and SHA and both run clean.

The Daily Security Audit has been red on main for five consecutive days, always
at the Send to Slack step while the audit itself passed. gh secret list is empty
for this repository, so SLACK_WEBHOOK_URL does not exist and curl was posting to
an empty URL. Skip the notification when the webhook is unset, and quote the
variable instead of leaving it to word splitting.

top-issues.yml is removed rather than quarantined. Its job is gated on
github.repository == 'browseros-ai/BrowserOS', so it has never run here, and it
hardcodes the upstream owner and repo in both the GraphQL query and
gh issue edit --repo browseros-ai/BrowserOS. It is structurally inert in a fork,
and it fires on an hourly cron to skip.
@github-actions github-actions Bot added the CI/CD label Jul 24, 2026
@rldyourmnd
rldyourmnd merged commit 773eeb2 into main Jul 24, 2026
4 checks passed
@rldyourmnd
rldyourmnd deleted the ci/fix-dependency-review-and-fork-cruft branch July 24, 2026 19:06
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant