Skip to content

Add CODEOWNERS for plumbing + unblock Scorecard Dependency-Update-Tool#45

Merged
wnstfy merged 1 commit into
mainfrom
chore/codeowners-and-scorecard-fix
May 22, 2026
Merged

Add CODEOWNERS for plumbing + unblock Scorecard Dependency-Update-Tool#45
wnstfy merged 1 commit into
mainfrom
chore/codeowners-and-scorecard-fix

Conversation

@wnstfy

@wnstfy wnstfy commented May 22, 2026

Copy link
Copy Markdown
Contributor

Summary

  • CODEOWNERS: lists @wnstify as required reviewer for plumbing paths (workflows, scripts, security policy, .gitattributes, renovate.json, contributor configs, CODEOWNERS itself). Routine Renovate compose-only bumps don't match any pattern → their auto-merge flow is preserved unchanged.
  • .gitattributes: remove renovate.json export-ignore. Scorecard scans via the tarball endpoint, which honors export-ignore, so hiding renovate.json caused the Dependency-Update-Tool check to score 0. This restores it.

Why now

  • Scorecard dropped 8.0 → 6.5 in the latest scan. Dep-Update-Tool flipped 10 → 0 because of the export-ignore. This PR restores ~0.6 points.
  • Code-Review dropped 10 → 0 because all 18 recent PRs auto-merged with no approving reviews. CODEOWNERS doesn't fix that directly (review counts are forward-looking), but it sets up the architecture for hermes-as-LLM-reviewer to start posting advisory approvals without becoming a sock-puppet (hermes is intentionally NOT in CODEOWNERS).

Architectural notes

With require_code_owner_reviews: true already active and required_approving_review_count: 0:

PR class Matches CODEOWNERS? Behaviour
Renovate compose-only bumps No Auto-merges as today
Renovate workflow/action bumps Yes Needs @wnstify approval
Routine maintainer PR (compose, docs, templates) No Merges without review
Maintainer plumbing PR Yes Deadlocks (can't self-approve own PR). Resolved via temporary enforce_admins: false toggle — accepted operational friction.
Hermes-authored PR Whichever paths it touches If yes, @wnstify approves as code owner. Hermes can't self-approve.

Test plan

  • CODEOWNERS validates client-side (GitHub will validate server-side after push)
  • .gitattributes change doesn't break existing exclusions (only one line removed)
  • CI: scan + misconfig + lint + Analyze (actions) all green
  • After merge: next Scorecard run (Tuesday 07:20 UTC) restores Dep-Update-Tool to 10

CODEOWNERS: lists @wnstify as required reviewer for high-risk paths
(.github/workflows, .github/scripts, /scripts, SECURITY.md, .gitattributes,
renovate.json, .pre-commit-config.yaml, .yamllint.yml, CODEOWNERS itself).
Combined with the existing branch-protection setting
require_code_owner_reviews: true, any PR touching plumbing now needs
@wnstify approval. Routine Renovate compose bumps don't match any pattern,
so their auto-merge flow is preserved.

.gitattributes: remove `renovate.json export-ignore`. OpenSSF Scorecard
scans the repo via GitHub's tarball endpoint, which honors export-ignore.
Hiding renovate.json caused the Dependency-Update-Tool check to score 0
("no update tool detected") despite the file being correctly configured
at repo root. Restoring it to the tarball is a ~4 KB cost and brings the
check back to 10.
@wnstfy
wnstfy enabled auto-merge (squash) May 22, 2026 12:36
@github-actions

Copy link
Copy Markdown
Contributor

Trivy misconfiguration findings (HIGH + CRITICAL)

✅ No HIGH or CRITICAL misconfigurations detected.

@wnstfy
wnstfy merged commit 97effa9 into main May 22, 2026
3 checks passed
wnstfy added a commit that referenced this pull request May 22, 2026
…hecks (#48)

Same root cause as the renovate.json export-ignore restored in PR #45:
OpenSSF Scorecard scans the repo via GitHub's /tarball/ endpoint, which
honors .gitattributes export-ignore. Excluding .github/ caused four
checks (Dangerous-Workflow, Pinned-Dependencies, Token-Permissions,
Packaging) to report "no workflows found" and skip with score -1 —
rendered as "?" in the scorecard.dev viewer.

Restoring .github/ to the tarball adds ~30-40 KB but unblocks Scorecard's
validation of the workflow hardening that's already in place:
SHA-pinned actions, least-privilege permissions blocks, no
pull_request_target with checkout, env-hoisted user input.

Projected score impact: 7.4 → ~8.7-9.0 after next scan, depending on
how Packaging's heuristic evaluates our `gh release create`-based
release workflow.

Tracked upstream as ossf/scorecard#5069.
wnstfy added a commit that referenced this pull request May 25, 2026
CODEOWNERS was introduced in PR #45 with `@wnstify` listed as the owner
for every plumbing path. `wnstify` is the organization handle, not a
user. GitHub's CODEOWNERS validator rejects this with "Unknown owner"
errors (verifiable via `gh api repos/wnstify/docker/codeowners/errors`),
which silently disables the `require_code_owner_reviews: true` gate for
every covered path.

Result: every plumbing PR since 2026-05-22 has merged through the
count=1 review gate without any actual code-owner enforcement. No
maintainer review was ever required for `.github/workflows/`,
`.github/scripts/`, `CODEOWNERS` itself, etc.

Fix: rewrite every entry to use the real user handle `@wnstfy`. After
this lands, the CODEOWNERS gate becomes effective, and plumbing PRs
authored by @wnstfy will block on the code-owner self-review condition
— requiring the documented enforce_admins toggle dance to merge.

Validate after merge with:
  gh api repos/wnstify/docker/codeowners/errors
which should return `{"errors":[]}`.
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