This is an automated email from the ASF dual-hosted git repository.
potiuk pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/airflow-steward.git
The following commit(s) were added to refs/heads/main by this push:
new e50e063 feat(project-agnosticism): add committer-onboarding-config.md
capability-flag vocabulary (#556)
e50e063 is described below
commit e50e0636bc3a908c472d50df03a6ce695862f4df
Author: Justin Mclean <[email protected]>
AuthorDate: Sat Jun 27 20:06:33 2026 +1000
feat(project-agnosticism): add committer-onboarding-config.md
capability-flag vocabulary (#556)
Enumerates the option sets and defaults for committer intake and
governance models, closing the third gap in project-agnosticism.md
Known Gaps (deferred pending option enumeration in IMPLEMENTATION_PLAN.md
notes).
The `committer-onboarding-config.md` template follows the same
backend-flag pattern as `release-management-config.md`:
- `committer_intake.model`: icla (ASF default) | dco | no-cla
with model-specific keys for ICLA lookup URL / DCO reference URL
- `committer_governance.model`: asf-pmc (ASF default) |
github-codeowners | maintainer-roster
with model-specific keys for Whimsy roster URL / GitHub team /
roster file path
The `committer-onboarding` skill currently defaults to ASF-PMC/ICLA;
a follow-on update wires it to read these flags at run time.
Updates `projects/_template/README.md` to add a "Contributor growth"
section listing the new file alongside contributor-nomination-config.md.
Updates `project-agnosticism.md` Known Gaps to reflect that security
intake (security_inbox.kind) and CVE allocation (cve_authority.tool)
are already declared in project.md, and contributor intake/governance
is now declared in committer-onboarding-config.md.
Generated-by: Claude (Opus 4.7)
---
projects/_template/README.md | 13 ++
projects/_template/committer-onboarding-config.md | 250 ++++++++++++++++++++++
tools/spec-loop/specs/project-agnosticism.md | 13 +-
3 files changed, 273 insertions(+), 3 deletions(-)
diff --git a/projects/_template/README.md b/projects/_template/README.md
index 316620e..ad410b2 100644
--- a/projects/_template/README.md
+++ b/projects/_template/README.md
@@ -11,6 +11,7 @@
- [CVE-allocation mechanics](#cve-allocation-mechanics)
- [Remediation workflow](#remediation-workflow)
- [Editorial + reporter-facing](#editorial--reporter-facing)
+ - [Contributor growth](#contributor-growth)
- [Issue management](#issue-management)
- [Repo-health audits](#repo-health-audits)
- [PR triage and review](#pr-triage-and-review)
@@ -91,6 +92,18 @@ the rest.
| [`naming-conventions.md`](naming-conventions.md) | Project-specific
editorial rules. Keep only the ones that differ from the generic rules in
`../../AGENTS.md`. |
| [`canned-responses.md`](canned-responses.md) | Reusable reporter-facing
reply templates. |
+### Contributor growth
+
+These files configure the contributor-nomination, committer-onboarding,
+and contributor-to-committer skill family. Adopters that do not use
+these skills can delete this group.
+
+| File | Purpose |
+|---|---|
+| [`contributor-nomination-config.md`](contributor-nomination-config.md) |
Nomination-brief thresholds and assessment window. Used by
`contributor-nomination`. |
+| [`committer-onboarding-config.md`](committer-onboarding-config.md) |
**Capability-flag vocabulary for committer intake and governance models**
(`icla`/`dco`/`no-cla`; `asf-pmc`/`github-codeowners`/`maintainer-roster`).
Used by `committer-onboarding`. |
+| `committer-readiness.md` | Activity thresholds the
`contributor-to-committer` readiness tracker compares against. Added by the
`contributor-to-committer` skill. |
+
### Issue management
These files configure the [`issue-*`](../../skills/) skill
diff --git a/projects/_template/committer-onboarding-config.md
b/projects/_template/committer-onboarding-config.md
new file mode 100644
index 0000000..4654e5a
--- /dev/null
+++ b/projects/_template/committer-onboarding-config.md
@@ -0,0 +1,250 @@
+<!-- START doctoc generated TOC please keep comment here to allow auto update
-->
+<!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE -->
+**Table of Contents** *generated with
[DocToc](https://github.com/thlorenz/doctoc)*
+
+- [TODO: `<Project Name>` — committer-onboarding
configuration](#todo-project-name--committer-onboarding-configuration)
+ - [Intake model](#intake-model)
+ - [Intake-model-specific keys](#intake-model-specific-keys)
+ - [Governance model](#governance-model)
+ - [Governance-model-specific keys](#governance-model-specific-keys)
+ - [Cross-references](#cross-references)
+
+<!-- END doctoc generated TOC please keep comment here to allow auto update -->
+
+<!-- SPDX-License-Identifier: Apache-2.0
+ https://www.apache.org/licenses/LICENSE-2.0 -->
+
+# TODO: `<Project Name>` — committer-onboarding configuration
+
+**This file enumerates the capability-flag vocabulary for the
+`committer-onboarding` skill.** It is the contributor-growth
+counterpart to `release-management-config.md`'s backend-flag model:
+an adopter declares the intake and governance model that suits their
+community, and the skill emits onboarding steps shaped for that model,
+without any skill-body edit.
+
+**Currently the `committer-onboarding` skill defaults to the ASF-PMC
+/ ICLA model** (the ASF default). This file establishes the flag
+vocabulary so that a non-ASF adopter can declare their model here;
+the skill will read these flags in a follow-on update. New adopters
+should copy this file into their own
+`<project-config>/committer-onboarding-config.md` and replace every
+`TODO`.
+
+Related scaffolds in the same adopter directory:
+
+- `committer-readiness.md` — activity thresholds the
+ `contributor-to-committer` readiness tracker compares against
+ (added by the `contributor-to-committer` skill).
+- [`contributor-nomination-config.md`](contributor-nomination-config.md)
+ — nomination-brief thresholds and assessment window.
+- [`pmc-roster.md`](pmc-roster.md) — PMC-member roster used by
+ `release-vote-tally` to classify binding vs non-binding votes.
+
+---
+
+## Intake model
+
+Declares how new committers are formally onboarded to the project's
+IP policy after a vote passes.
+
+```yaml
+committer_intake:
+ # Model under which new committers are formally onboarded to the
+ # project's IP policy.
+ # ASF default: icla — every new committer must file a signed ICLA
+ # with the Apache Software Foundation before commit bits are
+ # granted. The skill checks Whimsy and blocks the account-request
+ # step if no ICLA is on file.
+ # Override when:
+ # dco — Developer Certificate of Origin (Linux Foundation model).
+ # A per-commit `Signed-off-by:` line replaces the one-time CLA;
+ # the skill links the DCO guide and verifies that the candidate's
+ # recent merged PRs carry sign-off.
+ # no-cla — No formal contributor agreement required (open/trust-
+ # based model). The skill skips IP-check steps entirely.
+ # Allowed values: icla, dco, no-cla
+ # Consumed by: committer-onboarding (intake-check step).
+ model: TODO # icla | dco | no-cla
+```
+
+### Intake-model-specific keys
+
+Fill in only the block that matches your `model` above; leave the
+others absent or blank.
+
+#### `icla` model
+
+```yaml
+committer_intake_icla:
+ # URL the skill links when asking the nominator to check the
+ # candidate's ICLA status.
+ # ASF default: Whimsy's committer lookup.
+ # Non-ASF adopters using ICLA: point at your foundation's CLA
+ # query endpoint.
+ # Consumed by: committer-onboarding.
+ lookup_url: https://whimsy.apache.org/roster/committer/
+
+ # Whether ICLA filing is a hard prerequisite that the skill refuses
+ # to bypass. When true, the skill blocks until the nominator
+ # confirms the ICLA is on file; when false, the skill flags the
+ # gap but allows the nominator to proceed with a warning.
+ # ASF default: true.
+ # Consumed by: committer-onboarding.
+ mandatory: true
+```
+
+#### `dco` model
+
+```yaml
+committer_intake_dco:
+ # Reference URL the skill links in onboarding communications
+ # explaining what DCO sign-off means for contributors.
+ # Linux Foundation / CNCF projects typically link
+ # https://developercertificate.org/ plus their own CONTRIBUTING.md.
+ # Consumed by: committer-onboarding.
+ reference_url: TODO # e.g. https://developercertificate.org/
+
+ # Minimum number of the candidate's recently merged PRs that must
+ # carry a valid `Signed-off-by:` line before the skill considers
+ # the DCO check passed.
+ # Set to 0 to skip the check (honour-system model).
+ # Consumed by: committer-onboarding.
+ min_signed_off_prs: 1
+```
+
+#### `no-cla` model
+
+```yaml
+committer_intake_nocla:
+ # Free-text explanation shown in the onboarding checklist in place
+ # of an IP-agreement check. Leave null for a default message.
+ # Consumed by: committer-onboarding.
+ explanation: null
+ # e.g. "This project uses an Apache-2.0 inbound/outbound model; no
+ # CLA or DCO sign-off is required — contributors retain copyright."
+```
+
+---
+
+## Governance model
+
+Declares how committer and PMC (or equivalent) status is formally
+tracked, voted on, and applied after a vote passes.
+
+```yaml
+committer_governance:
+ # Model under which committer and committee status is granted and
+ # tracked.
+ # ASF default: asf-pmc — the PMC votes on the dev@ list, submits a
+ # secretary account-creation request via Whimsy, and the new
+ # committer appears on the Apache Whimsy committee/committer roster.
+ # Override when:
+ # github-codeowners — CODEOWNERS file + GitHub maintainer-team
+ # membership drives merge permissions; no formal committee vote
+ # and no external account-creation request.
+ # maintainer-roster — an adopter-managed roster file voted on by
+ # existing maintainers, outside any foundation's governance
+ # machinery.
+ # Allowed values: asf-pmc, github-codeowners, maintainer-roster
+ # Consumed by: committer-onboarding (roster-management steps).
+ model: TODO # asf-pmc | github-codeowners | maintainer-roster
+```
+
+### Governance-model-specific keys
+
+Fill in only the block that matches your `model` above.
+
+#### `asf-pmc` model
+
+```yaml
+committer_governance_asf_pmc:
+ # Whether the project is an incubating podling or a graduated
+ # top-level project. This switches between Whimsy's PPMC
+ # self-service UI (podling) and `committee-info.txt` edits (TLP).
+ # Allowed values: podling, tlp
+ # Consumed by: committer-onboarding (roster-management path
+ # selection).
+ stage: TODO # podling | tlp
+
+ # Whimsy URL the skill links the nominator to for roster management.
+ # TLP default: committee detail page.
+ # Podling default: PPMC roster page.
+ # Consumed by: committer-onboarding.
+ whimsy_roster_url: TODO
+ # TLP example: https://whimsy.apache.org/roster/committee/<project>
+ # Podling example: https://whimsy.apache.org/roster/ppmc/<project>
+
+ # URL of the ASF's new-committer / new-PMC-member secretary request
+ # form. The skill prints this and asks the nominator to fill it in.
+ # ASF default: the standard secretary request page.
+ # Consumed by: committer-onboarding.
+ secretary_request_url: https://whimsy.apache.org/officers/acreq
+
+ # Dev-list address the skill uses when drafting the welcome
+ # announcement. Matches `dev_list` in project.md — kept here for
+ # self-contained configuration.
+ # Consumed by: committer-onboarding.
+ dev_list: TODO # e.g. dev@<project>.apache.org
+```
+
+#### `github-codeowners` model
+
+```yaml
+committer_governance_github_codeowners:
+ # GitHub team slug (in `org/team` form) that maps to the
+ # committer/maintainer team. The skill invites the new committer
+ # to this team after the vote passes.
+ # Consumed by: committer-onboarding.
+ maintainers_team: TODO # e.g. apache/airflow-committers
+
+ # Path to the CODEOWNERS file in the upstream repo, relative to
+ # the repo root. The skill optionally opens a PR adding the new
+ # committer's handle to the file.
+ # Leave null to skip the CODEOWNERS update.
+ # Consumed by: committer-onboarding.
+ codeowners_file: CODEOWNERS # or null
+
+ # Whether a GitHub-discussion or a GitHub-issue thread is the
+ # canonical "vote thread" for this model.
+ # Allowed values: github-discussion, github-issue, off-band
+ # `off-band` = the vote happened in Slack / email / another channel
+ # and the skill just records the outcome.
+ # Consumed by: committer-onboarding (vote-validation step).
+ vote_channel: TODO # github-discussion | github-issue | off-band
+```
+
+#### `maintainer-roster` model
+
+```yaml
+committer_governance_maintainer_roster:
+ # Path to the roster file (relative to <project-config>/) that
+ # the skill updates when a vote passes.
+ # Consumed by: committer-onboarding.
+ roster_file: TODO # e.g. MAINTAINERS.md
+
+ # Minimum number of approvals required from existing listed
+ # maintainers before the skill considers the vote passed.
+ # Consumed by: committer-onboarding (vote-validation step).
+ min_approvals: TODO # e.g. 2
+
+ # Channel where votes are held — used by the skill when
+ # summarising the vote result.
+ # Allowed values: github-discussion, github-issue, mailing-list,
+ # slack-channel, off-band
+ # Consumed by: committer-onboarding.
+ vote_channel: TODO
+```
+
+---
+
+## Cross-references
+
+- `committer-readiness.md` — activity thresholds for the
+ `contributor-to-committer` readiness tracker (added by the
+ `contributor-to-committer` skill).
+- [`contributor-nomination-config.md`](contributor-nomination-config.md)
+ — nomination-brief thresholds and assessment window.
+- [`pmc-roster.md`](pmc-roster.md) — PMC-member roster for vote tally.
+-
[`committer-onboarding`](../../.claude/skills/magpie-committer-onboarding/SKILL.md)
+ — the skill that reads this configuration.
diff --git a/tools/spec-loop/specs/project-agnosticism.md
b/tools/spec-loop/specs/project-agnosticism.md
index 906ac6e..2655a84 100644
--- a/tools/spec-loop/specs/project-agnosticism.md
+++ b/tools/spec-loop/specs/project-agnosticism.md
@@ -141,6 +141,13 @@ uv run --project tools/skill-and-tool-validator --group
dev skill-and-tool-valid
forwarder relay, CNA tool, allocation gate, and new
`disclosure_governance` flags). Skills read these flags in follow-on
updates as each flag is wired in.
-- **Contributor intake capability flags** (ICLA vs DCO vs none, governance
- model) are documented in `projects/_template/committer-onboarding-config.md`
- (added by the `capability-flags-committer-intake` work item).
+- **Contributor intake and governance capability flags are now declared**
+ in `projects/_template/committer-onboarding-config.md` (`icla` / `dco`
+ / `no-cla` for intake; `asf-pmc` / `github-codeowners` /
+ `maintainer-roster` for governance), added by the
+ `capability-flags-committer-intake` work item. The `committer-onboarding`
+ skill currently defaults to ASF-PMC / ICLA; a follow-on update will wire
+ it to read these flags at run time. Remaining coupling in the live
+ catalogue (bare `PMC`, `ICLA`, `[email protected]`) is surfaced by the
+ advisory lint (check #10 in `skill-and-tool-validator`) for human
+ judgement.