[CI/Build] Gate maintained recipe probes in conformance CI - #2835
Conversation
✅ Deploy Preview for vllm-semantic-router ready!
To edit notification comments on pull requests, go to your Netlify project configuration. |
There was a problem hiding this comment.
Pull request overview
Adds a first-class “recipe conformance” CI domain that automatically discovers all maintained recipes, strictly validates their probe manifests, generates deterministic coverage/sharding plans, and executes every base probe against a live CPU router with EvalTrace enabled—integrated into the existing PR/Main domain dispatchers.
Changes:
- Introduces versioned, strict
probes.yamlparsing + JSON schema (v1) and removes hardcoded maintained-recipe enumeration in favor of directory discovery. - Adds a hermetic decision-engine conformance corpus (v0.3) with a Go test harness.
- Wires a reusable
Recipe Conformanceworkflow into PR/Main gating, plus local Make targets and a live-CPU runner script.
Reviewed changes
Copilot reviewed 36 out of 36 changed files in this pull request and generated 4 comments.
Show a summary per file
| File | Description |
|---|---|
| tools/make/recipe-conformance.mk | Adds Make targets for static conformance, shard planning, and live CPU execution. |
| tools/ci/tests/test_pr_change_classifier.py | Adds classifier tests ensuring recipe conformance domain is selected. |
| tools/ci/classify_pr_changes.py | Adds recipe_conformance signal detection and job selection. |
| tools/agent/task-matrix.yaml | Registers a maintained-recipes task with fast/feature gates. |
| tools/agent/scripts/router_calibration_support.py | Tightens probe evaluation semantics (trace, alias, exact/contains matching, forbidden sets). |
| tools/agent/scripts/router_calibration_support_test.py | Extends tests for trace scoping, alias enforcement, and non-zero exit on failure. |
| tools/agent/scripts/router_calibration_report.py | Enhances markdown failure reporting with failed-check details and trace diagnostics. |
| tools/agent/scripts/router_calibration_manifest.py | Introduces v1 manifest validation (unknown-field rejection, unique IDs, match modes, forbidden sets). |
| tools/agent/scripts/router_calibration_loop.py | Returns non-zero when evaluation acceptance fails. |
| tools/agent/scripts/recipe_conformance.py | New: recipe discovery, strict four-file contract enforcement, reference validation, inventory/sharding, eval runner. |
| tools/agent/scripts/recipe_conformance_test.py | New: tests for schema/field parity, discovery validity, deterministic sharding, and directory contract enforcement. |
| tools/agent/schemas/recipe-probes-v1.schema.json | New: published JSON schema for maintained probe manifests (v1). |
| tools/agent/repo-manifest.yaml | Registers tools/agent/schemas/** and adds the PL-0040 plan to governance tracking. |
| tools/agent/e2e-profile-map.yaml | Adds a workflow-driven suite entry for recipe-conformance-live. |
| tools/agent/docs/testing-strategy.md | Documents the new blocking static + live-CPU maintained recipe conformance layers. |
| tools/agent/docs/plans/README.md | Adds PL-0040 to the indexed plan list. |
| tools/agent/docs/plans/pl-0040-recipe-conformance-ci.md | New: execution plan for implementing recipe conformance CI. |
| src/semantic-router/pkg/decision/testdata/conformance/v0.3/README.md | New: documents the hermetic decision-engine corpus contract and coverage matrix. |
| src/semantic-router/pkg/decision/testdata/conformance/v0.3/cases.jsonl | New: 23-case deterministic JSONL corpus for decision semantics. |
| src/semantic-router/pkg/decision/conformance_test.go | New: Go test harness that loads corpus, validates, and asserts trace invariants. |
| src/semantic-router/pkg/config/maintained_recipe_probe_contract_test.go | Tightens Go-side maintained probe manifest contract checks (schema/name + variant constraints). |
| src/semantic-router/pkg/config/maintained_asset_contract_test.go | Removes hardcoded maintained recipe list; iterates discovered recipe directories. |
| Makefile | Includes the new tools/make/recipe-conformance.mk. |
| e2e/testing/run_recipe_conformance.sh | New: orchestrates per-recipe live-CPU conformance runs and artifact/log collection. |
| config/recipes/README.md | Documents v1 probe schema + new conformance commands and CI behavior. |
| config/recipes/privacy/probes.yaml | Adds schema_version: v1. |
| config/recipes/multi-objective/probes.yaml | Adds schema_version: v1. |
| config/recipes/knowledge/probes.yaml | Adds schema_version: v1. |
| config/recipes/feedback/probes.yaml | Adds schema_version: v1. |
| config/recipes/balance/probes.yaml | Adds schema_version: v1. |
| config/recipes/agent/probes.yaml | Adds schema_version: v1. |
| config/recipes/accuracy/probes.yaml | Adds schema_version: v1. |
| .github/workflows/recipe-conformance.yml | New reusable workflow: static inventory + sharded live CPU execution with artifacts. |
| .github/workflows/pr.yml | Dispatches recipe conformance domain and includes it in PR Gate aggregation. |
| .github/workflows/main.yml | Dispatches recipe conformance domain on main when signaled. |
| .github/workflows/ci-changes.yml | Exports recipe_conformance change signal from the classifier workflow. |
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
82b40d8 to
b89ec04
Compare
Centralize domain selection, execution receipts, and reporting while adding versioned, ratcheted conformance coverage for every maintained recipe. Name the baseline for Envoy AI Gateway, retain distinct CRD and routing-strategy contracts, keep agentgateway blocking with canonical config validation, and make remote Helm installs resilient to bounded registry failures. Signed-off-by: Xunzhuo <xunzhuo.liu@amd.com>
b89ec04 to
963e629
Compare
Merge Queue Status
This pull request spent 5 minutes 39 seconds in the queue, including 2 seconds running CI. ReasonPull request #2835 has been merged manually at 56f9375 HintYou were too fast! Tick the box to put this pull request back in the merge queue (same as
|
Summary
origin/main, authored and committed only byXunzhuo <xunzhuo.liu@amd.com>kubernetesbaseline profile to the implementation-accurateenvoy-ai-gatewayname, with a compatibility alias for local callersdynamic-config,multimodal-routing,routing-strategies, andagentgatewayprofiles because they own distinct CRD, image-modality, live-gateway, and external-controller contractsMain CI failures repaired
The latest main failures exposed stale test assets and infrastructure assumptions. This change repairs them without lowering acceptance thresholds:
ml-model-selectionremains a separate main defect: its current 20-case E2E mixes domain-classifier accuracy into model-selection acceptance and later reaches a native/runtime instability. This PR does not hide it by lowering thresholds.Test plan
make workflow-ci-validatemake agent-validatemake recipe-conformance-staticmake build-e2emake test-semantic-routerFinal passing run: https://github.com/vllm-project/semantic-router/actions/runs/31408748763
Closes #2832