feat(validation): accept a checkout as a meta-schema source - #132
Merged
Conversation
Contributor
Release previewMerging this PR would release v0.18.0 (current: Changelog preview (truncated)## v0.18.0 (2026-08-24)
### Features
- **validation**: Accept a checkout as a meta-schema source
([`d2b632f`](https://github.com/OO-LD/oold-python/commit/d2b632f820a933ab242a3f2cfd00bbf2cd0901d1))
Preview via python-semantic-release and conventional commits. |
Contributor
📊 Benchmark ResultsClick to see benchmark comparisonThreshold: 1.3x (30% slower triggers a regression warning) Note: Benchmarks are informational only and won't fail the build. 💡 Tip: Download the |
Codecov Report✅ All modified and coverable lines are covered by tests. 📢 Thoughts on this report? Let us know! |
- a tracked version is a tag and remote is refs/heads/main, so a rule added on a branch was invisible to both: its checks skipped, and the PR introducing a rule was the one run that could not enforce it - --meta <path> reads oold-schema's working tree, catalogue included - a directory selector is recognised by being a directory, so no tracked version name can collide - nothing here is checksummed, deliberately: these are working files
simontaurus
force-pushed
the
feat/local-meta-source
branch
from
August 24, 2026 03:21
5b251c9 to
d2b632f
Compare
Contributor
📊 Benchmark ResultsClick to see benchmark comparisonThreshold: 1.3x (30% slower triggers a regression warning) Note: Benchmarks are informational only and won't fail the build. 💡 Tip: Download the |
16 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
The blocker for replacing
validate.mjsin oold-schema's CI.The problem
Every route this package has to a meta-schema is a released tag or
refs/heads/main:latest,0.7.0, ...remoterefs/heads/main, and its file list carries nooold-rules.jsonat allSo a rule added on a branch is invisible to both. The
rule.*checks bound to it skip, each reporting that the version never stated it, and the run passes. The pull request that introduces a rule is the one run that cannot enforce it. Pointing oold-schema's CI at this validator without fixing that would be a straight regression againstvalidate.mjs, which reads the working tree.The change
--meta <path>loads the meta-schemas and the catalogue from a checkout. Both the repository root and itsmeta/directory work.A selector is treated as a path by being a directory, not by a prefix, so
--meta ../oold-schemareads the way a path should and no tracked version name can collide - none of them is a directory here.Nothing loaded this way is checksummed, deliberately. These are working files and expected to change, which is the point.
load_trackedstays the only route to a released version, so its checksums keep meaning what they say.Verified against the real repository
Planting an unreleased rule in an oold-schema checkout and reading both sources:
The vendored release cannot see
OOLD-CNF-dabd; the checkout can. Tests cover both selector forms, that the tracked copy is untouched, and that a directory holding no meta-schemas is rejected by name - the likely mistake being a wrong path.558 tests pass,
make checkexits 0.Next
With this in place, oold-schema's CI can run
oold validate --meta <working tree>and see every rule in the branch under test. Parity gating (#125 item 1) should land before the swap, so the equivalence claim is enforced at the moment it becomes load-bearing.