chore(compliance): retire legacy stub-based CLA system - #61
Merged
Conversation
Retires the oldest of three CLA/DCO generations in this repo: a
stub-distribution system where a central script wrote a
`cla-check-trigger.yml` stub into each target repo, and that stub called
a shared `workflow_call` workflow back here.
Archived to old/ subfolders rather than deleted, so the files stay
visible in the tree. For the workflows this also disables them, since
GitHub only scans .github/workflows/*.yml directly, not subdirectories:
- .github/workflows/reusable-cla-check.yml -> workflows/old/
- .github/workflows/manage-cla-stubs.yml -> workflows/old/
- scripts/cla_manager.py -> scripts/old/
- .github/scripts/check_and_install_stub.py -> .github/scripts/old/
Confirmed dead before retiring:
- reusable-cla-check.yml is `on: workflow_call` only, so it cannot run
without a stub calling it. Org-wide code search found zero stubs in any
repo — the only hits were inside this repo plus an inert
test-cla-gpl2/code/placeholder.py (a .py file, never executable as a
workflow).
- All 16 stub PRs the automation ever opened (head:automation/cla-stub)
were confined to test-cla-gpl2 in Oct 2025, mostly closed unmerged; the
same search excluding that repo returns 0. Manual PRs in Jan/Feb 2026
renamed-then-deleted the last stub out of it.
- Its only ruleset reference ("Require CLA workflow job (no license/cla)")
was deleted 2026-08-16.
- check_and_install_stub.py had zero callers and its import path
(.github/scripts/) no longer matches where requires_cla.py lives
(scripts/), so it would fail on import. It was superseded by
cla_manager.py in the 2025-10-15 refactor but never removed.
- Reverse-dependency check confirms the four files formed a closed loop,
referencing only each other.
scripts/requires_cla.py is deliberately untouched — the retired scripts
imported it, but so does the live policy_selector.py engine.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
aabusair
force-pushed
the
chore/retire-legacy-cla-stub-system
branch
from
August 17, 2026 19:24
576a660 to
1739c01
Compare
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.
Retires the oldest of three CLA/DCO generations in this repo: a stub-distribution system where a central script wrote a
cla-check-trigger.ymlstub into each target repo, and that stub called a sharedworkflow_callworkflow back here.Archived to workflows/old/ (which disables them, since GitHub only scans .github/workflows/*.yml directly, not subdirectories):
Deleted outright (nothing can invoke them once the above are archived; git history preserves them):
Confirmed dead before removing:
on: workflow_callonly, so it cannot run without a stub calling it. Org-wide code search found zero stubs in any repo — the only hits were inside this repo plus an inert test-cla-gpl2/code/placeholder.py (a .py file, never executable as a workflow).scripts/requires_cla.py is deliberately untouched — the removed scripts imported it, but so does the live policy_selector.py engine.