Skip to content

PURPOSE.yml reference

PURPOSE.yml is optional, and the normal case is not to have one. A repository without it is fully and equally adopted, with every default below applied.

Repository root, next to LICENSE:

LICENSE the canonical licence text — the whole of adoption
PURPOSE.yml optional operational metadata — this file

Every field is optional. This example shows all of them at once, which no real repository would need:

# PURPOSE.yml — operational metadata only. The LICENSE file governs.
# Informational mirrors (license, steward, registry) are NON-AUTHORITATIVE.
schemaVersion: 1
# --- Informational mirrors. Convenience for tooling; never a designation. ----------
license: PurposeSource-1.0-draft # mirror of the LICENSE text's own version
steward: Purpose Source Association # mirror; the licence text names the steward
registry: https://purposesource.org/registry
# --- Display metadata. Affects the registry listing, nothing else. ----------------
display:
name: purpose-cli # default: the repository name
summary: >- # default: the repository description
A command-line client for the public registry.
homepage: https://example.invalid/purpose-cli
tags: [cli, tooling] # facets on the registry browse page
# --- Cause categories. Advisory. Art. 7 of the statutes keeps final discretion. ----
causes:
# Must sum to 100. Categories are the seven published ones, no free text.
education: 50
research: 30
health: 20
# --- Weight class. A REQUEST, reviewed; never self-granted. -----------------------
weight:
requested: infrastructure # library | application | infrastructure
rationale: >-
Depended on by other registered projects as a build-time dependency.
# --- Attribution overrides. Operational, and bounded by the published algorithm. ---
attribution:
exclude_paths: # generated or vendored code, excluded from Impact Shares
- vendor/**
- '**/*.generated.ts'
bot_identities: # accounts whose commits are never attributed
- dependabot[bot]
- renovate[bot]
# --- Contact for waiver requests. A published address, not a person. --------------
contact:
waivers: opensource@example.invalid
FieldDefault when absentWhat it affectsAuthoritative?
schemaVersion1Parser selection. An unknown version is ignored with a warning, never guessed at
licenseRead from LICENSENothing. Tooling convenienceNo — mirror
stewardThe licence text’s constantNothingNo — mirror
registryThe licence text’s constantNothingNo — mirror
display.nameRepository nameThe registry listing’s titleYes, for display
display.summaryRepository descriptionThe listing’s one-line summaryYes, for display
display.homepageRepository homepageA link on the listingYes, for display
display.tagsnoneFacets on registry browseYes, for display
causesThe published fallback splitThe routing tier “project defaults” — advisoryAdvisory only
weight.requestedlibraryA request for weight class, reviewed against the published criteriaNo — a request
attribution.exclude_pathsnonePaths the attribution algorithm skipsYes, within the algorithm’s rules
attribution.bot_identitiesthe published bot listIdentities never attributedYes, additive to the default list
contact.waiversnoneAn address shown on the listing for waiver requestsYes, for display

Rules that constrain what a manifest can do

Section titled “Rules that constrain what a manifest can do”
  1. No legal designation. Restated because it is the whole point: the steward organisation is a licence constant, the Project Steward is whoever holds administrative control (and can be re-designated only through the registry’s verified claim flow), and steward succession is a clause in the licence. None of the three can be set here.
  2. No prices, bands, or terms. Prices live in one published schedule for everyone (Art. 9). A manifest that tried to set a price would be ignored, and the attempt is worth reporting.
  3. No free-text cause recipients. causes selects among the seven published categories only. There is no field for naming a charity, by design (Art. 7).
  4. causes is advisory. It sets the project-default routing tier. The Association keeps final discretion over distribution among the categories — which is both a governance choice and a requirement of the tax framework for a Swiss entity routing funds abroad.
  5. weight is a request. Self-granted weight would be an attribution exploit within a week. The published criteria and the review are on algorithms and schedule versions.
  6. Attribution overrides can only narrow. You can exclude vendored, generated, or bot contributions; you cannot inflate a contributor’s share, add an identity that did not contribute, or re-point a share at someone else.
  7. Invalid is ignored, never guessed. A malformed file, an unknown field, or a causes block that does not sum to 100 causes the manifest to be ignored in whole with the error published on the repository’s registry page. Silent partial application would make the manifest’s effect unknowable.
  • Not required. Not a registration. Not an account.
  • Not read by the licence. The licence text mentions no repository file at all.
  • Not a claim. The verified listing, the badge, and waiver powers come from the claim flow, which proves administrative control; committing a manifest proves nothing about who you are.
  • Not a channel for terms addressed to administrators. Those live in the claim terms, and only there.