CI: add Python validation job (uv, validate.py, unit tests) (#7) The existing workflow only ran `mvn -B verify`, so the repo's own gate — `tools/validate.py` plus the validator's unit tests — was never enforced on PRs. Adds a python-validate job that installs uv via pipx (already on the runner image, avoids a new third-party action on the ASF allowlist), syncs dev dependencies, validates examples, and runs the unittest suite. Note: validate.py currently exits 0 vacuously since examples/ is not yet on main; the job starts validating records automatically once examples land. The unit tests provide real signal in the meantime. Apache-ai: Yes Generated-by: Devin (SWE-2 High) Reviewed-by: nkn
sourcelume-spec)This repository contains our Apache Sourcelume specification.
ssourcelume-spec/ ├── LICENSE # Apache 2.0 (code/tooling) ├── README.md ├── NOTICE # required for ASF releases ├── CHANGELOG.md ├── context/ │ ├── 0.0.1/ │ │ └── sourcelume.jsonld # the JSON-LD @context document, pinned │ └── latest -> 0.0.1/ # symlink or redirect, NOT a moving target for actual releases ├── schema/ │ ├── 0.0.1/ │ │ ├── sourcelume.schema.json # JSON Schema for structural validation │ │ └── sourcelume.shacl.ttl # SHACL shapes for RDF-level validation (optional but common for JSON-LD vocabs) │ └── ... ├── spec/ # the prose specification │ ├── 0.0.1/ │ │ └── index.md (or .adoc) # human-readable spec text, versioned alongside schema ├── examples/ │ ├── minimal-record.jsonld │ ├── full-provenance-card.jsonld │ └── crosswalk/ # worked examples showing mapping to Croissant / SPDX / OTDI fields ├── mappings/ │ ├── croissant-crosswalk.md │ ├── spdx-ai-profile-crosswalk.md │ └── otdi-crosswalk.md ├── tools/ │ ├── validate.py # or JS — validates examples/ against schema/shacl on every PR │ └── render-docs.py # generates human-readable HTML/MD from schema ├── .github/workflows/ │ └── validate.yml # CI: lint JSON-LD, run schema+SHACL validation, check examples └── .gitignore
This project follows Semantic Versioning. See VERSIONING.md for how MAJOR, MINOR, and PATCH apply to specification changes, and for the rules around the latest pointer and immutable released versions.
This project is licensed under Apache License, Version 2.0.