Skip to content

ci: migrate DCO to GitHub App + skip lint/test on docs-only PRs#161

Merged
krakennetworks merged 1 commit into
mainfrom
ci/dco-app-and-docs-skip
Jun 25, 2026
Merged

ci: migrate DCO to GitHub App + skip lint/test on docs-only PRs#161
krakennetworks merged 1 commit into
mainfrom
ci/dco-app-and-docs-skip

Conversation

@se-jo-ma

Copy link
Copy Markdown
Member

Summary

Two contributor-friction fixes to CI, motivated by recurring DCO failures (e.g. #159) and full lint/test cycles running on docs-only PRs.

1. DCO → dcoapp GitHub App

Replaces the in-repo tim-actions/dco job with the dcoapp GitHub App (config in .github/dco.yml):

  • require.members: false — org members' commits no longer need a sign-off line.
  • allowRemediationCommits — a missing sign-off is fixed by pushing one remediation commit (the app comments the exact command), instead of a git rebase --signoff history rewrite. thirdParty: true lets a maintainer sign off on someone else's behalf — including unsigned bot commits (autofix.ci) that previously deadlocked DCO even after a human signed off.

The DCO App is already installed on the org. This PR removes the now-redundant in-repo job.

2. Skip lint + test on docs-only PRs

Adds a code output to the existing changes paths-filter (** minus *.md/docs/**/mkdocs.yml/LICENSE) and gates the two required jobs on it. A skipped required check counts as a pass, so docs-only PRs stay mergeable without running the full toolchain. Negation-only design means the worst-case failure mode is "runs anyway," never "wrongly skips code."

Changes

  • .github/workflows/ci.ymlcode filter + gate lint/test; remove dco job.
  • .github/dco.yml — new dcoapp config.
  • CONTRIBUTING.md — remediation-without-rebase guidance.
  • .github/PULL_REQUEST_TEMPLATE.md — sign-off reminder promoted from hidden comment to visible checklist item.
  • .pre-commit-config.yaml — codespell ignore for the thirdParty config key.

Note on ruff

No ruff changes needed — autofix.yml, .pre-commit-config.yaml, and lint already share ruff 0.15.12 via uv.lock, so autofix.ci already auto-applies + pushes style fixes. The real blocker was the unsigned-bot-commit DCO deadlock, which #1 resolves.

Testing

  • uv run pytest passes — n/a, CI-only change (no Python touched)
  • uv run ruff check src/ tests/ passes — n/a, no Python touched
  • uv run pyright passes — n/a, no Python touched
  • New tests added for new functionality — n/a
  • Documentation updated (if applicable) — CONTRIBUTING + PR template
  • All commits are signed off (DCO)

🤖 Generated with Claude Code

- Replace the in-repo tim-actions/dco job with the dcoapp GitHub App
  (config in .github/dco.yml): exempts org members and lets contributors
  fix a missing sign-off with a remediation commit instead of a rebase,
  which also clears unsigned bot commits (autofix.ci) that deadlocked DCO.
- Gate the required lint + test jobs on a new `code` paths-filter output so
  docs-only PRs skip them; a skipped required check counts as a pass, so
  those PRs stay mergeable without running the full toolchain.
- CONTRIBUTING.md: document remediation-without-rebase.
- PR template: promote the sign-off reminder from a hidden comment to a
  visible checklist item.
- pre-commit: tell codespell `thirdParty` (a dcoapp config key) is not a typo.

Signed-off-by: Sean Mauk <seanmauk@krakennetworks.com>
@krakennetworks krakennetworks self-requested a review June 25, 2026 15:26
@krakennetworks krakennetworks merged commit f63cf0d into main Jun 25, 2026
14 checks passed
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.

2 participants