Follow-up to #35, which labelled each recorded licence with its subject rather than moving it. The labels make this migration mechanical; it was not safe to attempt before them.
What is wrong
access.* is the paper-access axis — type, is_oa, oa_route, verified_via. But access.license currently holds the tool's repository licence for 357 of 402 licensed entries in metabolomics/v2, and the paper's licence for the remaining 45 and for every entry in the other three collections.
Both values are legitimate; they belong to different axes. governance/LICENSE_TIERS.md keeps the tool licence and the paper's open-access status deliberately apart, and the corpus does not.
What the migration looks like
Now that every entry carries license_subject, the set to move is exactly the tool-labelled entries — 357 in v2, 18 in v1, none elsewhere.
- Add a corpus-level
tool_license block (spdx + detection + verified_on), mirroring the per-skill metadata.tool_license shape already in every SKILL.md.
- Move each
subject: tool value from access.license into it. access.license then holds only the paper's licence, or nothing.
- Repoint the consumers.
propagate_license_tiers.corpus_tier_by_doi is the first — it reads access.license and feeds each skill's metadata.tool_license.ref. resolve_paper_license, check_license_tiers and release_gate's licence checks follow.
- Drop
license_subject, which exists only to describe the ambiguity this removes.
Why it is not urgent
The tier values are correct today and the acknowledgment gate fires correctly; what is muddled is which axis a value sits on. With #35's labels in place, nothing can silently cross axes any more, and a reader can tell them apart. This is cleanup, not a defect with a live consequence.
Worth doing before the corpus is deposited under a DOI and third parties begin keying on the field.
Follow-up to #35, which labelled each recorded licence with its subject rather than moving it. The labels make this migration mechanical; it was not safe to attempt before them.
What is wrong
access.*is the paper-access axis —type,is_oa,oa_route,verified_via. Butaccess.licensecurrently holds the tool's repository licence for 357 of 402 licensed entries inmetabolomics/v2, and the paper's licence for the remaining 45 and for every entry in the other three collections.Both values are legitimate; they belong to different axes.
governance/LICENSE_TIERS.mdkeeps the tool licence and the paper's open-access status deliberately apart, and the corpus does not.What the migration looks like
Now that every entry carries
license_subject, the set to move is exactly thetool-labelled entries — 357 in v2, 18 in v1, none elsewhere.tool_licenseblock (spdx + detection + verified_on), mirroring the per-skillmetadata.tool_licenseshape already in every SKILL.md.subject: toolvalue fromaccess.licenseinto it.access.licensethen holds only the paper's licence, or nothing.propagate_license_tiers.corpus_tier_by_doiis the first — it readsaccess.licenseand feeds each skill'smetadata.tool_license.ref.resolve_paper_license,check_license_tiersandrelease_gate's licence checks follow.license_subject, which exists only to describe the ambiguity this removes.Why it is not urgent
The tier values are correct today and the acknowledgment gate fires correctly; what is muddled is which axis a value sits on. With #35's labels in place, nothing can silently cross axes any more, and a reader can tell them apart. This is cleanup, not a defect with a live consequence.
Worth doing before the corpus is deposited under a DOI and third parties begin keying on the field.