chore: add Contributor License Agreement workflow#430
Merged
Conversation
Self-hosted CLA enforcement. Contributors sign once by posting a magic phrase as a PR comment; signatures are recorded in signatures/version1/cla.json and matched on stable GitHub user ID, so returning signers are recognized automatically on every future PR. - CLA.md: Apache 2.0 ICLA, party names substituted - .github/workflows/cla.yml: triggers on PR open/sync/reopen and on PR comments containing the sign phrase or `recheck` - .github/cla/cla.sh: workflow logic, sourceable + testable - .github/cla/cla.test.sh: 37 hermetic tests (no network, no git, no gh) - ci.yml: runs the CLA tests on every PR - CONTRIBUTING.md: CLA section above "Making Changes" - README.md: short Contributing pointer Allowlists bots, named maintainers, and members of the eigenpal org (via gh api orgs/eigenpal/members/<login>). Wording in bot comments matches the templates from contributor-assistant/github-action so the experience is familiar to contributors who have signed CLAs elsewhere. Manual follow-ups after merge: - Comment `recheck` on existing open external PRs to evaluate them. - Once those are clean, mark the "CLA" status check as required in branch protection. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
Two findings from /review on the CLA workflow: 1. Commits whose author email isn't linked to any GitHub account were silently dropped from the CLA check — same flaw as the original contributor-assistant action's gate. Now surfaced in the bot comment with the standard "link your email" instruction (text matches the original action). Per upstream, the gate stays warn-only: it does not block on unknowns. 2. Combined the two `gh pr view` calls (commits + headRefOid) into one, one fewer API request per workflow run. 41 tests passing. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Two findings from /simplify on the CLA workflow: 1. The "is this user allowlisted-or-org-member" check was duplicated in cla_main — once for the sign-comment author, once in the partition loop. Extracted to cla_should_skip(login, allowlist, org). 2. cla_unsigned was no longer called by cla_main (which does its own inline partition). Existed only to be tested. Deleted; the underlying filter logic is now tested directly via cla_should_skip + cla_signed. Net: production code shrinks by ~6 lines, test code by ~25, with no loss of coverage. 41 tests passing. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
jedrazb
added a commit
that referenced
this pull request
May 11, 2026
Brings in 13 main commits: - #425 (f7a1060): header/footer table render + inline-editor parity (core HF measurement + renderPage + editor.css; React PagedEditor / DocxEditor / InlineHeaderFooterEditor). - #441 (cbff36e): resolve themed table-cell border colors against the document theme. - #429 (2158433): Turkish (tr) translation, 100% coverage. - #430–#437 + the per-PR signature commits: Contributor License Agreement workflow (.github/cla/*, .github/workflows/cla.yml, CLA.md, signatures/version1/cla.json) and its follow-ups. Conflict resolution: - .github/workflows/ci.yml: kept the train's three-job layout (lint / test / build needs:[lint,test]); added main's "CLA logic tests" step (bash .github/cla/cla.test.sh) to the test job. - i18n tr.json: main added it under the pre-rename path packages/react/i18n/; relocated to packages/i18n/ (the shared @eigenpal/docx-editor-i18n package from #444), ran i18n:fix to add the 5 newer dialogs.insertTable.* keys as null, and listed `tr` in packages/i18n/README.md. - React DocxEditor.tsx: kept the train's resolveHeaderFooter() core helper; adopted #425's fix of resolving headers/footers against finalSectionProperties ?? initialSectionProperties (was initialSectionProperties only). - React PagedEditor.tsx: kept the train's version (measureTableBlock already lives in core); ported #425's measureTableCellBlockVisualHeight (image-only single-line paragraphs use intrinsic image height) and per-cell vertical-border-height contribution into core/layout-bridge/measureTable.ts; retargeted the new PagedEditor.tableMeasure.test.ts onto @eigenpal/docx-editor-core (was @eigenpal/docx-core). All 6 packages typecheck. Core layout-bridge tests + the new table-measure test pass; i18n parity gate green. Known pre-existing failure (NOT a merge regression): e2e hf-toolbar-and-zindex.spec.ts:9 ("removing a header still allows recreating it") fails identically on origin/main. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Self-hosted CLA enforcement. Contributors sign once via a PR comment; signatures are recorded in
signatures/version1/cla.json, matched on stable GitHub user ID, and recognized on every future PR.Built our own because
contributor-assistant/github-actionwas archived in March 2026. Bot wording matches its templates so the experience is familiar.What's in here
CLA.md.github/workflows/cla.ymlactions/checkout(SHA-pinned).github/cla/cla.sh.github/cla/cla.test.shci.ymlCONTRIBUTING.md,README.mdAllowlist
Three layers: literal allowlist (
dependabot[bot], etc. +jedrazb),eigenpalorg membership (auto-recognizes 3 public members today), and the signatures JSON.Manual follow-ups after merge
recheckon existing open external pull requests so the workflow evaluates them.CLAstatus check as required in branch protection.CLA.mdbefore flipping the required check on.🤖 Generated with Claude Code