Skip to content

feat(tcfeed): sign off every commit so a DCO check cannot block the ask - #132

Merged
ralyodio merged 1 commit into
masterfrom
worktree-tcfeed-dco-signoff
Aug 14, 2026
Merged

feat(tcfeed): sign off every commit so a DCO check cannot block the ask#132
ralyodio merged 1 commit into
masterfrom
worktree-tcfeed-dco-signoff

Conversation

@ralyodio

Copy link
Copy Markdown
Contributor

Two open outreach requests are stuck on a failed DCO check — Saxy/Tellstone#44 from today's batch and inspektor-gadget#5748 from an earlier one. Neither is a disagreement about the change; both are a missing Signed-off-by trailer.

DCO is unusual among the checks tcfeed meets in that it cannot be fixed forward. The bot reads every commit already on the branch, so the only remedy is rewriting the commit and force-pushing — a poor thing to be doing on somebody else's review, and entirely avoidable by writing the trailer the first time.

What changed

All three commit sites now sign:

site what it commits how
openPr the initial request --signoff
pushFix a remedy after a red check --signoff
refreshOne the pack update contents API, so by hand

The third is the one worth spelling out. It never runs git, so it had no way to pick the trailer up — and left alone it would push an unsigned commit onto a request that had already satisfied DCO, breaking a green check on our own initiative.

signoff() reads git's configuration so it agrees with what the other two sign, and falls back to the account behind the token, which is who the API records as committer anyway. It returns empty rather than guessing when only half an identity is available: a trailer with no address looks right and fails the check regardless, and a silent failure there is worse than none.

Verification

Resolved trailer is Signed-off-by: Anthony Ettinger <anthony@chovy.com> — the author DCO named in its report on #44. Confirmed cached on the second call.

Not covered

This does not fix the two already blocked. Those need their branches rewritten, which is a force-push, and it is not something to do unasked.

🤖 Generated with Claude Code

Two of the open requests are stuck on a failed DCO check — Saxy/Tellstone
#44 from today's batch and inspektor-gadget #5748 from an earlier one.
Neither is a disagreement about the change. Both are a missing trailer.

DCO is unusual among the checks this meets in that it cannot be fixed
forward: the bot reads every commit already on the branch, so the only
remedy is rewriting the commit and force-pushing. That is a poor thing to
be doing on somebody else's review, and it is entirely avoidable by
writing the trailer the first time.

All three commit sites now sign:

  openPr    the initial request        --signoff
  pushFix   a remedy after a red check --signoff
  refreshOne the pack update           contents API, so by hand

The third is the one worth spelling out. It never runs git, so it had no
way to pick the trailer up, and left alone it would push an unsigned
commit onto a request that had already satisfied DCO — breaking a green
check on our own initiative. signoff() reads git's configuration so it
agrees with what the other two sign, and falls back to the account behind
the token, which is who the API records as committer anyway.

It returns empty rather than guessing when only half an identity is
available. A trailer with no address looks right and fails the check
regardless, and a silent failure there is worse than none.

Verified the resolved trailer is "Signed-off-by: Anthony Ettinger
<anthony@chovy.com>", which is the author DCO named in its report on #44.

This does not fix the two already blocked. Those need their branches
rewritten, which is a force-push, and it is not mine to do unasked.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@github-actions

Copy link
Copy Markdown

ThreatCrush Security Scan

67 finding(s)

HIGH/CRITICAL: 11 | MEDIUM: 55 | LOW: 1

Severity Rule Location
HIGH secret-aws-access-key prd/0003-detect-hardcoded-secrets-before-they-are-committed-or-served.md:126
HIGH sh-eval-expansion .githooks/pre-commit:26
HIGH sh-remote-script-execution apps/web/public/install.sh:272
HIGH sh-remote-script-execution apps/web/public/install.sh:320
HIGH secret-generic-credential modules/spend-guard/config/example.conf.toml:13
HIGH secret-generic-credential modules/spend-guard/README.md:84
HIGH secret-generic-credential PRD.md:268
HIGH tls-verification-disabled prd/0004-find-dangerous-code-patterns-without-pretending-to-be-a-compiler.md:121
HIGH tls-verification-disabled prd/0004-find-dangerous-code-patterns-without-pretending-to-be-a-compiler.md:122
HIGH sh-remote-script-execution scripts/smoke-test.sh:46
HIGH sh-remote-script-execution scripts/smoke-test.sh:47
MEDIUM insecure-temp-file .githooks/commit-msg:16
MEDIUM insecure-temp-file .githooks/post-commit:20
MEDIUM js-shell-exec-interpolation apps/cli/src/commands/init.ts:70
MEDIUM js-shell-exec-interpolation apps/cli/src/commands/init.ts:79
MEDIUM js-shell-exec-interpolation apps/cli/src/commands/service.ts:88
MEDIUM js-shell-exec-interpolation apps/cli/src/commands/service.ts:111
MEDIUM sql-template-interpolation apps/cli/src/core/state.ts:121
MEDIUM sql-template-interpolation apps/cli/src/core/state.ts:125
MEDIUM js-shell-exec-interpolation apps/cli/src/daemon/firewall/adapters.ts:31
MEDIUM js-shell-exec-interpolation apps/cli/src/daemon/firewall/adapters.ts:33
MEDIUM js-shell-exec-interpolation apps/cli/src/daemon/firewall/adapters.ts:34
MEDIUM js-shell-exec-interpolation apps/cli/src/daemon/firewall/adapters.ts:35
MEDIUM js-shell-exec-interpolation apps/cli/src/daemon/firewall/adapters.ts:36
MEDIUM js-shell-exec-interpolation apps/cli/src/daemon/firewall/adapters.ts:43
MEDIUM js-shell-exec-interpolation apps/cli/src/daemon/firewall/adapters.ts:49
MEDIUM js-shell-exec-interpolation apps/cli/src/daemon/firewall/adapters.ts:56
MEDIUM js-shell-exec-interpolation apps/cli/src/daemon/firewall/adapters.ts:63
MEDIUM js-shell-exec-interpolation apps/cli/src/daemon/firewall/adapters.ts:82
MEDIUM js-shell-exec-interpolation apps/cli/src/daemon/firewall/adapters.ts:84
MEDIUM js-shell-exec-interpolation apps/cli/src/daemon/firewall/adapters.ts:85
MEDIUM js-shell-exec-interpolation apps/cli/src/daemon/firewall/adapters.ts:93
MEDIUM js-shell-exec-interpolation apps/cli/src/daemon/firewall/adapters.ts:98
MEDIUM js-shell-exec-interpolation apps/cli/src/daemon/firewall/adapters.ts:105
MEDIUM js-shell-exec-interpolation apps/cli/src/daemon/firewall/adapters.ts:112
MEDIUM js-shell-exec-interpolation apps/cli/src/index.ts:419
MEDIUM js-unescaped-html-sink apps/web/src/app/about/page.tsx:180
MEDIUM js-unescaped-html-sink apps/web/src/app/about/page.tsx:184
MEDIUM js-open-redirect apps/web/src/app/auth/login/page.tsx:50
MEDIUM js-unescaped-html-sink apps/web/src/app/blog/[slug]/page.tsx:125
MEDIUM js-unescaped-html-sink apps/web/src/app/blog/[slug]/page.tsx:153
MEDIUM js-unescaped-html-sink apps/web/src/app/blog/[slug]/page.tsx:157
MEDIUM js-unescaped-html-sink apps/web/src/app/get-whitepaper/page.tsx:346
MEDIUM js-unescaped-html-sink apps/web/src/app/layout.tsx:211
MEDIUM js-unescaped-html-sink apps/web/src/app/layout.tsx:215
MEDIUM js-unescaped-html-sink apps/web/src/app/layout.tsx:219
MEDIUM js-unescaped-html-sink apps/web/src/app/page.tsx:120
MEDIUM js-unescaped-html-sink apps/web/src/app/store/[slug]/page.tsx:107
MEDIUM js-open-redirect apps/web/src/components/funding/FundingClient.tsx:97
MEDIUM manifest-install-lifecycle-script package.json:24

…and 17 more. Full results in the Security tab.

Snippets are redacted; ThreatCrush never prints matched credential material.

@ralyodio
ralyodio merged commit dd4f44e into master Aug 14, 2026
11 checks passed
@ralyodio
ralyodio deleted the worktree-tcfeed-dco-signoff branch August 14, 2026 01:02
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