title: Organizations (governance + backend defaults grouped per org) status: experimental kind: feature mode: infra source: > Extends project-agnosticism.md and adapters.md. An organization groups the governance vocabulary and capability→backend defaults shared by every project under one governing body (foundation, company, maintainer collective), so those defaults live once instead of being copied into each project's manifest. Implemented under organizations/ (organizations/ASF/, organizations/independent/, organizations/_template/). acceptance:
Introduces a configuration layer between a single project's <project-config>/ and the framework defaults. An organization captures what a governing organization makes default for all its projects:
<governance-body>), how contributors are admitted (contributor_intake: ICLA / DCO / none), the project-lifecycle stages (<project-stage>), role names; andThis removes the duplication whereby every ASF project re-declared the identical “ASF default” values in its own project.md.
organizations/README.md — the entity overview.organizations/ASF/ — the reference organization (Apache Software Foundation defaults: PMC governance, Vulnogram, PonyMail, apache-projects-mcp, ASF-security forwarder, *.apache.org infra).organizations/independent/ — the no-formal-org baseline (DCO, GHSA, GitHub Releases, no list/forwarder/metadata backends); inherited by projects/non-asf-example/.organizations/_template/ — authoring skeleton.AGENTS.md §“Configuration resolution order”.ALLOWLIST_PATHS += "organizations/" in skill-and-tool-validator.organization: <org> in <project-config>/project.md (default independent).project.md → organizations/<org>/organization.md → framework default, first hit wins. This is the only inheritance in the config model.organization: key to branch behaviour; they read capability keys (cve_authority.tool, archive_system.kind, <governance-body>, …) and take the first value the chain yields.project.md.organizations/ASF/organization.md keys mirror the namespaces of the project manifest's Security workflow configuration section so resolution is mechanical.projects/_template/project.md (the reflow to actually inherit) — a follow-up change.asf:false skill families fully agnostic (moving residual PMC/ICLA/incubator vocabulary behind placeholders) — a follow-up.asf: true/false metadata with an optional family-level organization: scope — a follow-up.organizations/<org>/organization.md, not duplicated per project.organization: <org> in project.md selects the adapter.project.md → organization → framework default, first hit wins; no skill branches on the organization.organizations/_template/ with no skill edits.# Validator passes; organizations/ is allowlisted so ASF terms inside # organizations/ASF/ do not trip the placeholder / asf-coupling checks. uv run --project tools/skill-and-tool-validator skill-and-tool-validate # Doc + link + placeholder hooks green on the new files. prek run --files organizations/**/*.md docs/vendor-neutrality.md AGENTS.md
Manual resolution check: a project.md with organization: ASF and a key omitted resolves to the ASF adapter value; organization: independent resolves to the baseline.
projects/_template/ + projects/non-asf-example/ to set organization: and drop the now-inherited values is not yet done (tracked as the next change); until then the ASF defaults exist in both projects/_template/project.md and organizations/ASF/.organizations/<org>/ (currently README + organization.md by convention).organization: scope (replacing asf: true/false) and the external-adapter discovery index are separate follow-ups.