Add independent tooling schema parity guard - #105
Conversation
|
@codex review |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 13b388071a
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
|
@codex review |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 0ed97c5527
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
|
@codex review |
|
Codex Review: Didn't find any major issues. Swish! Reviewed commit: ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
If Codex has suggestions, it will comment; otherwise it will react with 👍. Codex can also answer questions or update the PR. Try commenting "@codex address that feedback". |
What changed
jsonschema-rsvalidator to the development dependency groupblackcell adapters schemaunder Draft 2020-12Why
PR #104 exposed a gap between runtime validation and the public machine-readable schema. Structural keyword assertions fixed that defect, but they did not independently execute the advertised schema. This follow-up adds deterministic corroboration with a separate standards implementation so future schema projection drift fails locally and in CI.
Codex review then found that the first parity matrix omitted custom model validators. The follow-up commit adds representative cases for duplicate capabilities, duplicate shared facets, and inconsistent version-preflight fields, and makes the emitted schema reject them consistently with Pydantic.
A second exact-head Codex review found the analogous nested-key invariant for difference facets. The final remediation preserves the catalog payload while using a closed facet-name type plus Draft 2020-12
contains/maxContainsconstraints to reject repeated facets even when the descriptive fields differ.Impact
The emitted catalog payload is unchanged. Runtime and schema acceptance are now closed to the seven difference facets the catalog emits, and both reject duplicate facet keys. The Rust-backed validator remains development-only, and the guard is intentionally limited to the tooling catalog before any reusable framework abstraction is introduced.
Verification
uv run python tools/run_pytest.py tests/unit/test_tooling_surfaces.py -q --blackcell-require-all-pass(18 passed)uv run ruff format --check src/blackcell/gateway/__init__.py src/blackcell/gateway/tooling.py tests/unit/test_tooling_surfaces.pyuv run ruff check src/blackcell/gateway/__init__.py src/blackcell/gateway/tooling.py tests/unit/test_tooling_surfaces.pyuv run ty checkuv run python tools/run_pytest.py --cov=blackcell --cov-report=term-missing(593 passed,1opt-in Podman test skipped,86.11%coverage)