docs(contributing): DCO sign-off is review-enforced, not a required status check - #3001
Conversation
…tatus check CONTRIBUTING.md § Enforcement claimed the DCO GitHub App runs as a required status check on every PR. It does not: the app is not installed on this repo, and the develop ruleset's only required status check is 'Bot PR TDD Gate' (verified via gh api repos/wheels-dev/wheels/rules/branches/develop). The same false claim in .claude/commands/_shared-rails.md caused Reviewer A to escalate an unsigned commit on #2998 as a check-blocked merge. Reword both to describe the actual policy: sign-off is required via git commit -s, verified during code review (human and bot), with a missing trailer surfacing as a fix-before-merge review request -- never as a failing CI check. Also soften § Grandfathering from 'enforced on' to 'applies to' for consistency. No CI workflow or required check is added here; automated DCO enforcement remains a separate maintainer decision (see PR body). Fixes #3000 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Signed-off-by: Peter Amiri <peter@alurium.com>
There was a problem hiding this comment.
Wheels Bot — Reviewer A
TL;DR: This is a docs-only correction that aligns CONTRIBUTING.md and _shared-rails.md with the repository's actual DCO enforcement policy. Both files previously claimed the DCO GitHub App was a required status check that blocks merges; it is not. The PR fixes that gap in both the contributor-facing docs and the bot-rails shared instruction file. The changes are accurate, self-consistent, and well-evidenced. Verdict: approve.
Correctness
No issues. The factual claims in both files are consistent with each other and with the evidence supplied in the PR body:
CONTRIBUTING.md§ Enforcement: now correctly states sign-off is verified during code review, not by an automated status check; notes thatBot PR TDD Gateis the only merge-blocking check ondevelop._shared-rails.md: updated to instruct bot reviewers to treat a missing sign-off as a fix-before-merge review request, not a CI failure.- The
git rebase --signoff developsuggestion added to_shared-rails.mdis consistent with the existingCONTRIBUTING.md§ Forgot to sign off? example (line 74). - The
#forgot-to-sign-offanchor referenced atCONTRIBUTING.md:85exists (line 63 heading).
Docs
Four other command files (update-docs.md, address-review.md, write-docs.md, propose-fix.md) still contain the phrase "DCO enforcement; see _shared-rails.md" in their commit-step instructions. Each defers to _shared-rails.md for the policy detail, so they will naturally surface the corrected text to any bot that reads them. No update is strictly required, but a follow-up pass to s/DCO enforcement/DCO sign-off policy/ in those four files would remove any residual ambiguity for a human reader skimming one file in isolation.
No changelog fragment needed — docs-type PRs are exempt per CLAUDE.md § Changelog entries.
Commits
Single commit 9032301fd:
- Type
docs, scopecontributing— both valid. - Header
docs(contributing): DCO sign-off is review-enforced, not a required status check= 80 chars (under 100). - Body explains the why clearly (false claim caused Reviewer A false-escalation on #2998).
Signed-off-by: Peter Amiri <peter@alurium.com>present.- PR title is a valid conventional-commit header under 100 chars.
Wheels Bot — Reviewer B (round 1)A's review is accurate and well-evidenced. Verified all cited claims against the diff and the repo state; found no sycophancy, no false positives, and no missed issues. Verdict alignment is correct. Converging on approve. SycophancyNone detected. A explicitly verified each factual claim rather than rubber-stamping: the anchor existence, line numbers, file references, and commit metadata were all checked. False positivesNone detected. Spot-checked A's specific claims:
Missed issuesNone detected. The diff is markdown-only ( Verdict alignmentA's ConvergenceFully aligned. The PR corrects a false factual claim in both contributor docs and bot-rails, is docs-only with no functional impact, has a valid signed commit, and has been independently verified. No changes are needed before merge. |
What
Docs-only fix for the DCO documentation drift reported in #3000.
CONTRIBUTING.md§ Enforcement — rewritten. It claimed the DCO GitHub App "runs as a required status check on every PR" and blocks merge. It does not: the app is not installed on this repository, and the develop ruleset's only required status check isBot PR TDD Gate(verified:gh api repos/wheels-dev/wheels/rules/branches/developlists exactly that one context; no DCO check appears on fix(public): encode path in route-tester verb-mismatch message, scan alternatives only on no-match #2995/test(router): cover nested named capture groups in constraint normalization #2996/test(wheelstest): cover the empty-server_name localhost guard in base-URL CGI detection #2998). The section now describes the actual policy: sign every commit withgit commit -s; the trailer is verified during code review (human and bot); a missing sign-off surfaces as a fix-before-merge review request, never as a failing check.CONTRIBUTING.md§ Grandfathering — "The DCO is enforced on new PRs only" → "The DCO applies to new PRs only" for consistency (the rest is unchanged)..claude/commands/_shared-rails.md— the bot-rails DCO bullet carried the same false claim and is read byreview-pr.md; it is exactly how Reviewer A false-escalated the unsigned commit on test(wheelstest): cover the empty-server_name localhost guard in base-URL CGI detection #2998 into a check-blocked "blocker". The bullet now states there is no DCO status check and instructs reviewers to treat a missing sign-off as a review request (suggestinggit rebase --signoff develop). The bot's own sign-off requirement for commits it authors is unchanged.Why
Contributors and bot reviewers were both reasoning from documentation that does not match the repo. This takes option 2 from the issue ("make the docs honest").
Follow-up: automated enforcement (deliberately NOT in this PR)
This PR intentionally adds no CI workflow and no required status check. Automated DCO enforcement remains available as a separate maintainer decision, either of:
Signed-off-by:trailers on PR commits and reports (without blocking).Test evidence
Markdown-only diff (
CONTRIBUTING.md,.claude/commands/_shared-rails.md) — neither file is on any CFML load path. Full core suite run anyway on Lucee 7 + SQLite (dockerwheels-test-lucee7:v1.0.0):wheels.tests.specs.internal.testClientSpec(TestClient loopback HTTP in the port-mapped container). Verified pre-existing: with this diff stashed (pristine develop @345b30dcb), the same bundle yields the identical 41 pass / 12 fail / 0 error — zero new failures from this change.apps/dcomentions left are the corrected sections and a historicalCHANGELOG.mdrelease entry, which is not edited per project policy).Fixes #3000
🤖 Generated with Claude Code