You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.md
+6-5Lines changed: 6 additions & 5 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -8,7 +8,7 @@ It gives org admins a place to manage CLA text and signing history, and gives co
8
8
9
9
- If a contributor has signed a non-current CLA version, they must re-sign before being considered compliant.
10
10
- Contributor compliance status is evaluated per org using the contributor's latest signed version for that org.
11
-
- Admins can define an org-scoped bypass list of GitHub accounts that should always receive a passing CLA check.
11
+
- Admins can define org-scoped bypass lists for both GitHub users and GitHub Apps/system bots that should always receive a passing CLA check.
12
12
- If a contributor has open pull requests and their signature becomes outdated after a CLA update, checks may need to be re-opened/re-evaluated and set to failing until re-signing is completed.
13
13
- After a contributor signs/re-signs the latest CLA, the app schedules an async workflow that updates their open PR CLA checks to success and removes stale CLA prompt comments.
14
14
- When an org is activated/deactivated, the app schedules an async workflow to re-check open PRs for that org so checks converge to the new enforcement mode.
@@ -110,7 +110,7 @@ This section is the behavior contract for UI routes.
110
110
|`/auth/signin`| Start sign-in flow | Shows GitHub sign-in CTA | Same | Sends user to `/api/auth/github?returnTo=...`; `returnTo` is sanitized to internal paths only |
111
111
|`/dashboard`| Mode selector page | Public page | Same + session shown in header | Navigate to `/admin` or `/contributor`|
112
112
|`/admin`| Org admin overview | Shows "Sign in required" card | Lists organizations user can administer; shows install CTA when none are authorized | Install app (`/api/github/install`), open org manage pages |
113
-
|`/admin/[orgSlug]`| Org CLA management | If data unavailable, shows "Organization not found" UI | Shows org details, CLA version, signers, archives, bypass list, branch-protection reminder | Edit/save CLA text with live markdown preview modes (`Edit`, `Split`, `Preview`), activate/deactivate bot, copy signing link, inspect signers/archives, manage bypass usernames, download current/archived CLA text, share tab links via `?tab=cla|signers|archives|bypass` |
113
+
|`/admin/[orgSlug]`| Org CLA management | If data unavailable, shows "Organization not found" UI | Shows org details, CLA version, signers, archives, bypass list, branch-protection reminder | Edit/save CLA text with live markdown preview modes (`Edit`, `Split`, `Preview`), activate/deactivate bot, copy signing link, inspect signers/archives, manage bypass users and app/bot slugs, download current/archived CLA text, share tab links via `?tab=cla|signers|archives|bypass` |
114
114
|`/contributor`| Contributor agreement dashboard | Shows "Sign in required" card | Lists signed CLA history grouped by org status | Re-sign prompts for outdated orgs, links to `/sign/[orgSlug]`, download previously signed CLA records |
115
115
|`/sign/[orgSlug]`| CLA read/sign page | Shows sign-in required (or org not found) | Shows signed state, or sign/re-sign workflow | Requires scroll-to-bottom before sign button enables; handles inactive org warning |
116
116
|`/terms`| Legal terms page | Public page | Same | Documents signing/enforcement terms and branch-protection requirement |
@@ -156,7 +156,7 @@ This section amends your scenario list and adds missing scenarios.
156
156
157
157
- Org member: check passes, no CLA comment.
158
158
- Personal-account repository owner: check passes, no CLA comment.
159
-
- User on org bypass list: check passes, no CLA comment.
159
+
- User or app/bot on org bypass list: check passes, no CLA comment.
160
160
- Non-member + current signature: check passes, no CLA comment.
@@ -182,7 +182,7 @@ This section amends your scenario list and adds missing scenarios.
182
182
183
183
- Org deactivated/uninstalled: signing blocked; webhook events set passing CLA checks and remove managed CLA prompts so PRs are not blocked by CLA while inactive.
184
184
- Activating or deactivating an org schedules an async open-PR recheck workflow so existing PR checks/comments converge automatically.
185
-
- Updating bypass list schedules async open-PR recheck so existing PRs converge to the latest policy.
185
+
- Updating either bypass section (users or app/bots) schedules async open-PR recheck so existing PRs converge to the latest policy.
186
186
-`/recheck` authorization: allowed for PR author, org member, or maintainer; unauthorized users are blocked.
187
187
- OAuth and install redirects sanitize `returnTo` to prevent open redirects.
188
188
- Webhook hardening: production signature verification and delivery de-duplication.
@@ -227,9 +227,10 @@ This section amends your scenario list and adds missing scenarios.
227
227
- Contributor dashboard status uses the latest stored signature per org to determine current/outdated state in UI.
228
228
- Outcomes:
229
229
- Org member: passing check, no CLA comment.
230
-
- Bypass-listed account: passing check, no CLA comment.
230
+
- Bypass-listed user/app/bot: passing check, no CLA comment.
231
231
- Signed current CLA: passing check, no CLA comment.
- App/bot bypass matching is slug-based and treats `<slug>` and `<slug>[bot]` as equivalent actor forms.
233
234
- When CLA text changes, contributors on older signatures are marked as requiring re-sign; open PRs may require check re-evaluation and failure until re-signing.
234
235
- After signing/re-signing, an async workflow updates signer-authored open PR CLA checks to success and removes stale CLA prompt comments.
0 commit comments