Let check executors provide the rubric schema for their own check kinds
## Problem/Motivation
The rubric schema (schema/rubric.schema.json) is a closed list of check kinds. RubricCheckEvaluator already dispatches through tagged check executors, so another module can execute a new kind, but its rubrics fail validation because the schema does not know the kind. That blocks domain modules (design fidelity, accessibility, performance) from shipping their own kinds without patching core.
## Proposed resolution
Add a CheckSchemaProviderInterface as the extension point. A tagged check executor that implements it returns one JSON Schema definition per kind it introduces, and RubricValidator splices those definitions into the check oneOf at validation time. A definition that collides with an existing kind is ignored, so core kinds cannot be overridden. Core keeps only the generic kinds. Domain kinds live in the module that can actually run them.
Covered by 4 kernel tests (CheckSchemaProviderTest), including the collision guard, next to the existing RubricValidatorTest. phpstan level max and phpcs are clean.
First consumer is an ai_eval_geometry module that grades layout and design token fidelity in headless Chromium. It stays out of core on purpose: it needs Node and a browser on the eval host.
AI-Generated: Yes (Used Claude Code to draft and implement, reviewed and tested by me.)
issue