Declare your WarmHub repo's license as a traversable graph fact — the WarmHub equivalent of a LICENSE file at the repo root. Seed-only component; no handlers, no credentials, no subscriptions.
Shipped alongside warmhub-data/global.reference.licenses, the canonical substrate: every SPDX license as a License/<SPDX-ID> thing with full text, term stances (commercial use, share-alike, …), scope suitability (software vs data vs content), and supersession chains.
wh component install warmhub-data/license-declaration --repo <org>/<repo>This creates two shapes and seeds one thing:
LicenseSubject+ seededLicenseSubject/repo— "the contents of this repo as a licensable work"LicenseDeclaration— the declaration shape (empty until you declare)
Write the well-known LicenseDeclaration/repo assertion about the seeded subject:
wh commit submit --repo <org>/<repo> -m "declare repo license" --ops '[
{
"operation": "add", "kind": "assertion",
"name": "LicenseDeclaration/repo",
"about": "LicenseSubject/repo",
"data": {
"spdxIdRaw": "CC-BY-SA-4.0",
"licenseWref": "wh:warmhub-data/global.reference.licenses/License/CC-BY-SA-4.0",
"appliesTo": "data",
"declaredBy": "<you>"
}
}
]'Conventions:
LicenseDeclaration/repois reserved for the repo-scope declaration — tools resolve it blindly, like/LICENSEin a git repo. Use other names for scoped declarations (per-dataset, docs-vs-data), each about its ownLicenseSubject.licenseWrefmust be a resolved wref into the substrate (look your id up first:wh thing view 'License/<SPDX-ID>' --repo warmhub-data/global.reference.licenses). If your id isn't there, or you have a compound expression (MIT OR Apache-2.0), leavelicenseWrefunset and carryspdxIdRaw/spdxExpressiononly.- Mirror the license into your repo description and README for human readers; the declaration is the machine truth.
- Reverse lookup: the substrate can answer "everything declaring license X" via
wh thing refs License/X --inbound— your declaration participates automatically becauselicenseWrefis wref-typed. - Answers behind the wref: full text for LICENSE files, "does this require share-alike?", "is it suitable for data?", "is there a newer version?" — all one hop from your declaration.
- Doctor:
wh component doctor warmhub-data/license-declaration --repo <org>/<repo>verifies shapes + the seeded subject.
Schema is deliberately minimal and platform-donation-shaped: this component incubates a convention proposed to become platform-native repo metadata (a peer of Readme/Agents — see warmhub/warmhub-app#7668). Component-installed declarations will remain valid verbatim if/when that lands.
The substrate (warmhub-data/global.reference.licenses) is a verbatim pass-through of cited third-party sources; WarmHub does not interpret license text and none of this is legal advice. Verify any classification, flag, or quote at the assertion's sourceUrl and against the license text itself before relying on it.