Skip to content

Restore model coverage gates - #647

Merged
justinchuby merged 2 commits into
mainfrom
justinchuby/fix-model-coverage-gates
Aug 26, 2026
Merged

Restore model coverage gates#647
justinchuby merged 2 commits into
mainfrom
justinchuby/fix-model-coverage-gates

Conversation

@justinchuby

Copy link
Copy Markdown
Member

Summary

  • read L2 coverage from finalized registry registrations
  • map Bailing/DeepSeek legacy aliases to canonical config checkpoints
  • document internal and GGUF-only routes that cannot own independent HF config or golden cases

Validation

  • python -m pytest tests/model_coverage_test.py -q --tb=short
  • lintrunner --output oneline --all-files

This restores the currently failing main-branch test matrix and unblocks dependent PRs.

Read L2 test IDs from the finalized registry, cover legacy aliases with their canonical checkpoints, and document internal/GGUF routes that cannot have independent Hugging Face config or golden cases.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Signed-off-by: justinchuby <justinchuby@users.noreply.github.com>
@justinchuby
justinchuby requested review from a team and a lite review from Copilot August 26, 2026 06:01
@justinchuby
justinchuby enabled auto-merge (squash) August 26, 2026 06:02
@github-actions

github-actions Bot commented Aug 26, 2026

Copy link
Copy Markdown

🏗️ Architecture Diff

Comparing 136cad88033a68

Model Sub-model Changes Status

No architecture changes detected.


Legend: ⚪ No change · 🔵 Minor (attrs/inits) · 🟡 Moderate (nodes added/removed) · 🔴 Major (interface changed)

@github-actions

github-actions Bot commented Aug 26, 2026

Copy link
Copy Markdown

Performance Comparison

Comparing 136cad88033a68

Model Metric Baseline Current Delta
bert (feature-extraction) model_size_bytes 359 KB 359 KB +0.0%
bert (feature-extraction) num_nodes 68 68 +0.0%
falcon model_size_bytes 364 KB 364 KB +0.0%
falcon num_nodes 66 66 +0.0%
gemma2 model_size_bytes 428 KB 428 KB +0.0%
gemma2 num_nodes 105 105 +0.0%
gpt2 model_size_bytes 324 KB 324 KB +0.0%
gpt2 num_nodes 54 54 +0.0%
llama model_size_bytes 425 KB 425 KB +0.0%
llama num_nodes 60 60 +0.0%
llama (static-cache) model_size_bytes 425 KB 425 KB +0.0%
llama (static-cache) num_nodes 56 56 +0.0%
mamba (ssm-text-generation) model_size_bytes 296 KB 296 KB +0.0%
mamba (ssm-text-generation) num_nodes 94 94 +0.0%
phi3 model_size_bytes 421 KB 421 KB +0.0%
phi3 num_nodes 58 58 +0.0%
phi3 (static-cache) model_size_bytes 421 KB 421 KB +0.0%
phi3 (static-cache) num_nodes 54 54 +0.0%
qwen2 model_size_bytes 425 KB 425 KB +0.0%
qwen2 num_nodes 60 60 +0.0%
qwen2 (static-cache) model_size_bytes 425 KB 425 KB +0.0%
qwen2 (static-cache) num_nodes 56 56 +0.0%
qwen3_5_moe (hybrid-text-generation) model_size_bytes 506 KB 506 KB +0.0%
qwen3_5_moe (hybrid-text-generation) num_nodes 265 265 +0.0%
qwen3_5_text (hybrid-text-generation) model_size_bytes 458 KB 458 KB +0.0%
qwen3_5_text (hybrid-text-generation) num_nodes 127 127 +0.0%
qwen3_5_vl (hybrid-qwen-vl) model_size_bytes 977 KB 977 KB +0.0%
qwen3_5_vl (hybrid-qwen-vl) num_nodes 450 450 +0.0%
t5 (seq2seq) model_size_bytes 836 KB 836 KB +0.0%
t5 (seq2seq) num_nodes 176 176 +0.0%
whisper (speech-to-text) model_size_bytes 1008 KB 1008 KB +0.0%
whisper (speech-to-text) num_nodes 128 128 +0.0%

No performance regressions.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR restores the model coverage gates by shifting L2 (“has test_model_id”) coverage checks to use the finalized ModelRegistry registrations (rather than a test-only map), while also bringing legacy alias model types (Bailing/DeepSeek) back under the same canonical HF checkpoint evidence and documenting routes that can’t own independent HF configs/golden cases.

Changes:

  • Update tests/model_coverage_test.py L2 validation to derive test_model_id from registry registrations and expand skip-list documentation for internal/GGUF-only routes.
  • Add test_model_id entries for bailing_moe and deepseek in src/mobius/_registry.py to match their canonical checkpoints.

Reviewed changes

Copilot reviewed 2 out of 2 changed files in this pull request and generated 1 comment.

File Description
tests/model_coverage_test.py Switch L2 coverage source to registry registrations; expand coverage skip documentation for alias/GGUF-only routes.
src/mobius/_registry.py Add missing test_model_id mappings for legacy aliases (bailing_moe, deepseek) to restore L2 gating.
Suppressed comments (1)

tests/model_coverage_test.py:450

  • The aggregate L2 failure message still tells contributors to update _TEST_MODEL_IDS, but the test logic now checks for a registered ModelRegistration.test_model_id. Updating the message to refer to the registered field (and optionally mention that it is currently populated via _TEST_MODEL_IDS) will make failures less confusing.
                f"{len(missing)} registered model(s) have no "
                f"test_model_id in _registry.py and are not in "
                f"_COVERAGE_SKIP:\n"
                + "\n".join(f"  {mt}" for mt in missing)
                + "\n\nFix: add test_model_id to _TEST_MODEL_IDS "

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment on lines 123 to +127
def _all_registered_with_test_id() -> dict[str, str]:
"""Return {model_type: test_model_id} for registered models with one."""
return {
arch: model_id for arch, model_id in _TEST_MODEL_IDS.items() if arch in registry._map
arch: registration.test_model_id
for arch, registration in registry._map.items()
Point L2 coverage failures at the finalized model registration field now used by the checks, rather than implying every identifier must come from the legacy helper map.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Signed-off-by: justinchuby <justinchuby@users.noreply.github.com>
justinchuby added a commit to justinchuby/onnx-genai that referenced this pull request Aug 26, 2026
…2171)

## Summary

- establish `package.tokenizer.special_tokens` as the sole package
authority for execution-relevant numeric token IDs
- preserve ordered multi-EOS defaults while treating request EOS values
as replacement overrides
- require complete-generation workflows to execute termination
semantics; keep logits-only packages explicitly valid without
sampler/termination claims
- materialize one effective token set for workflow graphs and
fused/native runtime paths
- document capability obligations, portable state invariants, policy
graphs, ONNX ABI versus workflow authority, and reserved versus
extensible identifiers
- validate and publish schema-v1.2 canonical plus annotated metadata
across the hosted collection

## Contract

Token IDs are package facts under `package.tokenizer.special_tokens`.
Token spellings, added-token mappings, and chat templates remain
authoritative in tokenizer assets. Workflow ports route semantic values
but do not duplicate ONNX physical ABI, and termination policy consumes
resolved token facts without owning another numeric copy.

Request EOS values replace package defaults when supplied. Pre-v1.2
compatibility may derive EOS from legacy tokenizer assets; v1.2 packages
fail closed on retired workflow/package EOS literals.

## Reader documentation

- [Metadata capability
model](https://github.com/justinchuby/onnx-genai/blob/justinchuby/special-token-authority/docs/genai/METADATA_CAPABILITY_MODEL.md)
- [Normative inference metadata
decisions](https://github.com/justinchuby/onnx-genai/blob/justinchuby/special-token-authority/docs/genai/INFERENCE_METADATA_DECISIONS.md)
- [Reader tracking issue
#2143](#2143)

## Producer and hosted examples

- Mobius producer migration:
onnxruntime/mobius#644
- Mobius baseline coverage repair:
onnxruntime/mobius#647
- Hosted collection: **28 repositories / 56 canonical+annotated files**,
including 12 complete-generation packages migrated to schema v1.2
- Catalogue revision:
[`8ba416600109201e10256841e20f0c1d2777af6e`](https://huggingface.co/datasets/justinchuby/onnx-genai-inference-metadata-catalogue/tree/8ba416600109201e10256841e20f0c1d2777af6e)

## Validation

- metadata and genai-config test suites
- engine authored-workflow and multi-EOS tests
- ORT tokenizer/chat-template tests
- server multimodal tests and Rust 1.98 Clippy with warnings denied
- generated schema synchronization, formatting, and `git diff --check`
- collection validator: semantic YAML equality, inline comments, README
links, provenance hashes, generation scope, token authority, executable
termination, schema, and shapes for all 56 files

The non-required **Mobius metadata packages (signal)** job is expected
to reject current Mobius `main` fixtures until producer PR #644 lands;
v1.2 validation is intentionally not weakened for that transition.

---------

Signed-off-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@justinchuby

Copy link
Copy Markdown
Member Author

Reviewer handoff: this focused baseline coverage repair is green, has no architecture or performance delta, and has auto-merge enabled. It is the only prerequisite blocking cleanup of the stacked metadata producer PR #644; requesting the required human approval when available.

@justinchuby

Copy link
Copy Markdown
Member Author

CI blocker diagnosis: this PR's Integration (fast) job is part of a repository-wide self-hosted runner backlog, not a PR-specific failure.

As of 2026-08-26 13:20 UTC:

  • this PR's job 98083618051 is still queued with no runner_name assigned;
  • at least 18 active Integration (fast) jobs are queued with no runner;
  • the oldest observed active job has waited since 2026-08-25 22:48 UTC;
  • no non-cancelled Integration (fast) execution was found in the latest 100 CI runs.

I am not rerunning the workflow because that would only add queue pressure and reset this PR's position. Auto-merge remains enabled; the remaining gates are this shared A10 check and the requested mobius-contributors approval.

@justinchuby
justinchuby merged commit 2e08e9b into main Aug 26, 2026
24 of 25 checks passed
@justinchuby
justinchuby deleted the justinchuby/fix-model-coverage-gates branch August 26, 2026 13:30
justinchuby added a commit that referenced this pull request Aug 26, 2026
## Summary

- emit execution-relevant numeric token IDs once under
`package.tokenizer.special_tokens`
- preserve ordered multi-EOS package defaults while making workflow EOS
tensors runtime-bound request overrides
- remove authored `package.eos_ids` and `package.eos_token_ids` literals
from decoder and VLM workflows
- cover image, video, audio, and vision-start placeholders; restrict CTC
metadata to relevant blank/padding semantics
- stamp schema v1.2 independently of tokenizer availability and retain
public `SpecialTokenFact` compatibility
- refresh decoder, static-cache, and VLM conformance fixtures

## Contract

Token IDs are package facts. Token spellings, added-token mappings, and
chat templates remain authoritative in tokenizer assets. Termination
policy consumes resolved package defaults or an explicit request
replacement but owns no duplicate IDs.

Consumer schema/runtime:
justinchuby/onnx-genai#2171 (**merged** as
`e599dc0f067d35aa5326ce5c97d83d2fd6d02f78`)
Reader guide: justinchuby/onnx-genai#2143
Baseline coverage repair: #647

## Validation

- **1,095 passed / 250 skipped** across
`src/mobius/integrations/onnx_genai` and `tests/model_coverage_test.py`
- full `lintrunner`
- generated schema and fixture validation
- `git diff --check`
- architecture and benchmark checks report no graph or performance
regression
- merged consumer validation passes **28/28 hosted repositories and
56/56 metadata files**

This branch is temporarily stacked on #647 solely to avoid known
current-`main` coverage failures. After #647 merges, rebase this PR onto
current `main` so only the two producer commits remain, rerun the
focused gates, and merge.

---------

Signed-off-by: justinchuby <justinchuby@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants