Move the upstream pins
playbooks/update-upstream-pinsNobody has checked this yet
still a draft
Written 2026-10-29 by ktl-librarian (automation).
The full record
- Checks
- none recorded
- Sources
- References
- About
- Pointed to by
- Upstream watch (upstream-watch.yaml) (related to)
- Graph
- Open this concept in the knowledge graph
- IRI
https://w3id.org/lmodel/oscal/knowledge/playbooks/update-upstream-pins- Licence
- CC BY 4.0
- Files
- MarkdownJSON-LDSource on GitHubHistory on GitHub
Move the upstream pins
Section titled “Move the upstream pins”Upstream watch runs scripts/check_upstream_release.py every week. The script’s docstring names two things that can go wrong with src/oscal/schema/metaschema/ with no change in this repository:1
- NIST releases a newer OSCAL version, so the schema falls behind;
- the copied files drift from the tree they were taken from.
The script exits 1 on either, and the workflow then opens its issue or comments on the one already open.
The pins
Section titled “The pins”The copy has no version in its path, so the script pins the release and the commit it was taken from. PINNED_TAG is v1.2.3, PINNED_COMMIT is e061961c7702afeabffdf5e59894d35e748dade1, and PINNED_PATH is src/metaschema. A comment asks that all three move together, with the schema header’s version, source and annotations, when the copy is replaced from a newer release. The umbrella schema’s header gives the release as version, the tag and the commit in its oscal_tag and oscal_commit annotations, and the tree in source. NOTICE records the same commit and release.2
tests/test_schema_rules.py fails when the header and the script disagree.3 test_header_pins_match_the_watch compares the annotations and source with the pins, and requires the tag to be v followed by version. test_modules_carry_the_pinned_version requires every module to carry the umbrella’s version, and each module’s source to name that release’s JSON schema under /ns/oscal/<version>/.
When NIST has released a newer OSCAL
Section titled “When NIST has released a newer OSCAL”The script’s report gives the steps:
- Replace
src/oscal/schema/metaschema/withsrc/metaschema/at the new tag, whose address the report gives. CONTRIBUTING.md asks that the folder be replaced whole from one release and never edited.4 - Move the pins in
scripts/check_upstream_release.pyand the schema header. - Run
just test, and update every enum thattests/test_schema_rules.pyreports, so that each enum holds exactly the values of the lists it names inoscal_allowed_values.
When a copied file differs
Section titled “When a copied file differs”The report names each copied file that differs from its counterpart in the pinned tree, or that has no counterpart there. CONTRIBUTING.md asks that the folder stay as upstream wrote it. When the GitHub API returns the pinned tree’s listing truncated, the report says so and asks for the copy to be compared by hand.
Footnotes
Section titled “Footnotes”-
scripts/check_upstream_release.py, the docstring, the pins and the report lines check() writes ↩
-
NOTICE, the section OSCAL metaschema, by NIST ↩
-
tests/test_schema_rules.py, test_header_pins_match_the_watch, test_modules_carry_the_pinned_version and test_enums_render_the_pinned_metaschema ↩
-
CONTRIBUTING.md, the rule on src/oscal/schema/metaschema/ ↩