Skip to content

Add dedicated Falcon-H1 model and GGUF import - #610

Merged
justinchuby merged 2 commits into
mainfrom
justinchuby-falcon-h1-gguf
Aug 25, 2026
Merged

Add dedicated Falcon-H1 model and GGUF import#610
justinchuby merged 2 commits into
mainfrom
justinchuby-falcon-h1-gguf

Conversation

@justinchuby

Copy link
Copy Markdown
Member

Summary

  • add a dedicated Falcon-H1 decoder where attention and Mamba2 run in parallel from the same normalized input, followed by the exact residual and SwiGLU topology
  • add a dynamic four-state-per-layer ABI ordered as attention key, attention value, convolution state, and SSM state
  • add strict Falcon-H1 GGUF metadata, tensor-closure, bias-family, transform, and quantization validation against llama.cpp 8d9af256337d1a501250f9bbf4c0859a654bddd6
  • register the model/task/config, update the generated GGUF census, and add graph, parity, state, import, CLI, save/reload, and failure-path coverage

Validation

  • python -m pytest tests/falcon_h1_test.py tests/build_graph_test.py tests/weight_alignment_test.py tests/synthetic_parity_test.py -q -k 'falcon_h1' --tb=short — 11 passed
  • python -m pytest tests/falcon_h1_test.py -m integration -k pinned -q --tb=short — pinned tiiuae/Falcon-H1-Tiny-90M-Base@7994372e93b62822ae25f8bfb19f653649cea3a3 full-logit parity passed
  • python -m pytest src/mobius/integrations/gguf -q --tb=short -n auto — 2,583 passed
  • python -m pytest tests/yaml_schema_test.py tests/falcon_h1_test.py tests/build_graph_test.py tests/weight_alignment_test.py tests/synthetic_parity_test.py -q -k 'falcon_h1 or yaml_schema' --tb=short -n auto — 261 passed
  • python -m pytest tests/build_graph_test.py tests/cli_test.py src/ -q -k 'not phi4mm and not apply_weights_unknown and not glm_moe_dsa' --tb=short -n auto — 7,056 passed, 52 skipped
  • python scripts/generate_gguf_support_docs.py --check — passed
  • lintrunner f --output oneline --all-files && lintrunner -a — clean after initialized lintrunner

Reviews

  • independent architecture review: no high-confidence findings; confirmed parallel branch topology, multiplier placement, Mamba ordering, grouped gated RMSNorm, clamp/masking, and backward-compatible defaults
  • independent state/GGUF review: found missing package config, unstamped output ABI, and late malformed-decay rejection; all fixed with regression coverage

Runtime and quantization verdict

Graph construction and GGUF import are supported. Runtime packaging remains DEFERRED because the downstream package schema cannot represent heterogeneous K/V plus convolution/SSM states; tracked by #605. No ORT GenAI runtime-support claim is made.

Quantized Falcon-H1 sources can be imported through explicit dequantization. keep_quantized=True fails closed because the current route cannot preserve only compatible attention/FFN MatMul roles while safely dequantizing recurrent/state-sensitive tensors and retaining every quantization sidecar.

Waivers

  • L4/L5 ORT GenAI package/generation goldens: blocked by the heterogeneous four-state package schema tracked in Represent heterogeneous state and auxiliary graph topology in runtime packages #605. The pinned real checkpoint has direct full-logit graph parity, but downstream stateful generation is not claimed.
  • CUDA and reduced-precision runtime evidence: not claimed by this PR; support remains limited to the validated graph/import surface.

Comment thread src/mobius/models/falcon_h1.py Fixed
Comment thread src/mobius/models/falcon_h1.py Fixed
Comment thread src/mobius/models/falcon_h1.py Fixed
Comment thread src/mobius/models/falcon_h1.py Fixed
Comment thread src/mobius/models/falcon_h1.py Fixed
Comment thread src/mobius/tasks/_falcon_h1.py Fixed
Comment thread src/mobius/tasks/_falcon_h1.py Fixed
Comment thread tests/falcon_h1_test.py Fixed
Comment thread tests/falcon_h1_test.py Fixed
Comment thread tests/falcon_h1_test.py Fixed
@github-actions

github-actions Bot commented Aug 25, 2026

Copy link
Copy Markdown

Performance Comparison

Comparing fada98a5db3720

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 388 KB 388 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 264 265 +0.4%
qwen3_5_text (hybrid-text-generation) model_size_bytes 458 KB 458 KB +0.0%
qwen3_5_text (hybrid-text-generation) num_nodes 126 127 +0.8%
qwen3_5_vl (hybrid-qwen-vl) model_size_bytes 977 KB 977 KB +0.0%
qwen3_5_vl (hybrid-qwen-vl) num_nodes 428 429 +0.2%
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.

@github-actions

github-actions Bot commented Aug 25, 2026

Copy link
Copy Markdown

🏗️ Architecture Diff

Comparing fada98a5db3720

Model Sub-model Changes Status
bert (feature-extraction) model 0
falcon model 0
gemma2 model 0
gemma4 (gemma4) decoder 0
gemma4 (gemma4) embedding 0
gemma4 (gemma4) vision_encoder 0
gemma4_text model 0
gpt2 model 0
llama model 0
llama (static-cache) model 0
mamba (ssm-text-generation) model 0
phi3 model 0
phi3 (static-cache) model 0
qwen model 0
qwen (static-cache) model 0
qwen2 model 0
qwen2 (static-cache) model 0
qwen2_moe model 0
qwen2_moe (static-cache) model 0
qwen3 model 0
qwen3 (static-cache) model 0
qwen3_5_moe (hybrid-text-generation) model 19 🟡
qwen3_5_text (hybrid-text-generation) model 11 🟡
qwen3_5_vl (hybrid-qwen-vl) decoder 12 🟡
qwen3_5_vl (hybrid-qwen-vl) embedding 0
qwen3_5_vl (hybrid-qwen-vl) vision_encoder 0
qwen3_moe model 0
qwen3_moe (static-cache) model 0
qwen3_next (hybrid-text-generation) model 97 🟡
t5 (seq2seq) decoder 0
t5 (seq2seq) encoder 0
whisper (speech-to-text) decoder 0
whisper (speech-to-text) encoder 0
qwen3_5_moe (hybrid-text-generation) / model — 19 change(s)

Op summary: 264 → 265 nodes

--- base
+++ head
@@ -60,10 +60,11 @@
 Constant
 Reshape
 Reshape
-RMSNormalization
-Cast
-Swish
-Cast
+Cast
+Cast
+RMSNormalization
+Cast
+Swish
 Mul
 CastLike
 Constant

Added nodes:

  • + Cast
  • + Cast
  • + RMSNormalization
  • + Cast
  • + Swish

Removed nodes:

  • - RMSNormalization
  • - Cast
  • - Swish
  • - Cast

Modified attributes:

  • node[173] RotaryEmbedding: num_heads: 2 → 4

Connectivity changes:

  • node[63] Cast: input_ids [140] → [25]
  • node[65] Cast: input_ids [141] → [140]
  • node[74] Add: input_ids [27, 16] → [75, 152]
  • node[153] Add: input_ids [152, 232] → [220, 232]
  • node[154] Add: input_ids [45, 16] → [153, 233]
  • node[171] Reshape: input_ids [250, 48] → [249, 48]
  • node[180] Add: input_ids [55, 16] → [234, 262]
  • node[259] Add: input_ids [262, 342] → [330, 342]
  • node[260] Add: input_ids [73, 16] → [263, 343]
qwen3_5_text (hybrid-text-generation) / model — 11 change(s)

Op summary: 126 → 127 nodes

--- base
+++ head
@@ -60,10 +60,11 @@
 Constant
 Reshape
 Reshape
+Cast
+Cast
 RMSNormalization
 Cast
 Swish
-Cast
 Mul
 CastLike
 Constant

Added nodes:

  • + Cast
  • + Cast

Removed nodes:

  • - Cast

Modified attributes:

  • node[104] RotaryEmbedding: num_heads: 2 → 4

Connectivity changes:

  • node[63] Cast: input_ids [112] → [25]
  • node[65] Cast: input_ids [113] → [112]
  • node[74] Add: input_ids [27, 16] → [47, 124]
  • node[85] Add: input_ids [31, 16] → [125, 135]
  • node[102] Reshape: input_ids [152, 34] → [151, 34]
  • node[111] Add: input_ids [41, 16] → [136, 164]
  • node[122] Add: input_ids [45, 16] → [165, 175]
qwen3_5_vl (hybrid-qwen-vl) / decoder — 12 change(s)

Op summary: 149 → 150 nodes

--- base
+++ head
@@ -82,10 +82,11 @@
 Constant
 Reshape
 Reshape
+Cast
+Cast
 RMSNormalization
 Cast
 Swish
-Cast
 Mul
 CastLike
 Constant

Added nodes:

  • + Cast
  • + Cast

Removed nodes:

  • - Cast

Modified attributes:

  • node[127] RotaryEmbedding: num_heads: 2 → 4

Connectivity changes:

  • node[85] Cast: input_ids [139] → [30]
  • node[87] Cast: input_ids [140] → [139]
  • node[96] Add: input_ids [32, 21] → [0, 151]
  • node[107] Add: input_ids [162, 53] → [152, 162]
  • node[108] Add: input_ids [36, 21] → [163, 53]
  • node[125] Reshape: input_ids [180, 39] → [179, 39]
  • node[134] Add: input_ids [46, 21] → [164, 192]
  • node[145] Add: input_ids [50, 21] → [193, 203]
qwen3_next (hybrid-text-generation) / model — 97 change(s)

Op summary: 562 → 565 nodes

--- base
+++ head
@@ -60,10 +60,11 @@
 Constant
 Reshape
 Reshape
-RMSNormalization
-Cast
-Swish
-Cast
+Cast
+Cast
+RMSNormalization
+Cast
+Swish
 Mul
 CastLike
 Constant
@@ -203,10 +204,11 @@
 Constant
 Reshape
 Reshape
-RMSNormalization
-Cast
-Swish
-Cast
+Cast
+Cast
+RMSNormalization
+Cast
+Swish
 Mul
 CastLike
 Constant
@@ -346,10 +348,11 @@
 Constant
 Reshape
 Reshape
-RMSNormalization
-Cast
-Swish
-Cast
+Cast
+Cast
+RMSNormalization
+Cast
+Swish
 Mul
 CastLike
 Constant

Added nodes:

  • + Cast
  • + Cast
  • + RMSNormalization
  • + Cast
  • + Swish
  • + Cast
  • + Cast
  • + RMSNormalization
  • + Cast
  • + Swish
  • + Cast
  • + Cast
  • + RMSNormalization
  • + Cast
  • + Swish

Removed nodes:

  • - RMSNormalization
  • - Cast
  • - Swish
  • - Cast
  • - RMSNormalization
  • - Cast
  • - Swish
  • - Cast
  • - RMSNormalization
  • - Cast
  • - Swish
  • - Cast

Modified attributes:

  • node[314] Transpose: perm: [0, 2, 1] → [1, 0]
  • node[317] Constant: value_float: None → 0.0, value_ints: [128] → None
  • node[326] Constant: value_ints: [32] → [2, 16]

Connectivity changes:

  • node[63] Cast: input_ids [200] → [29]
  • node[65] Cast: input_ids [201] → [200]
  • node[74] Add: input_ids [31, 20] → [135, 212]
  • node[159] Add: input_ids [212, 298] → [286, 298]
  • node[160] Add: input_ids [49, 20] → [213, 299]
  • node[190] Reshape: input_ids [321, 325] → [332, 328]
  • node[204] Reshape: input_ids [306, 346] → [345, 347]
  • node[297] Transpose: input_ids [76] → [75]
  • node[298] MatMul: input_ids [362, 442] → [441, 442]
  • node[303] Add: input_ids [77, 20] → [435, 447]
  • node[308] Transpose: input_ids [81] → [80]
  • node[309] MatMul: input_ids [449, 453] → [451, 453]
  • node[310] Transpose: input_ids [82] → [81]
  • node[311] MatMul: input_ids [449, 455] → [451, 455]
  • node[312] Transpose: input_ids [83] → [82]
  • node[313] MatMul: input_ids [449, 457] → [451, 457]
  • node[314] Transpose: input_ids [452] → [83]
  • node[327] Concat: input_ids [450, 471, 474] → [452, 473, 474]
  • node[351] Cast: input_ids [497] → [85]
  • node[372] Transpose: input_ids [90] → [89]
  • node[373] MatMul: input_ids [510, 522] → [513, 522]
  • node[375] Transpose: input_ids [91] → [90]
  • node[376] MatMul: input_ids [524, 525] → [513, 525]
  • node[383] Mul: input_ids [526, 532] → [521, 532]
  • node[387] Transpose: input_ids [93] → [92]
  • node[388] MatMul: input_ids [510, 537] → [513, 537]
  • node[390] Transpose: input_ids [94] → [93]
  • node[391] MatMul: input_ids [539, 540] → [513, 540]
  • node[398] Mul: input_ids [541, 547] → [521, 547]
  • node[403] Transpose: input_ids [96] → [95]
  • node[404] MatMul: input_ids [510, 553] → [513, 553]
  • node[406] Transpose: input_ids [97] → [96]
  • node[407] MatMul: input_ids [555, 556] → [513, 556]
  • node[414] Mul: input_ids [557, 563] → [521, 563]
  • node[419] Transpose: input_ids [99] → [98]
  • node[420] MatMul: input_ids [510, 569] → [513, 569]
  • node[422] Transpose: input_ids [100] → [99]
  • node[423] MatMul: input_ids [571, 572] → [513, 572]
  • node[430] Mul: input_ids [573, 579] → [521, 579]
  • node[435] Transpose: input_ids [102] → [101]
  • node[436] MatMul: input_ids [510, 585] → [513, 585]
  • node[438] Transpose: input_ids [103] → [102]
  • node[439] MatMul: input_ids [587, 588] → [513, 588]
  • node[484] Transpose: input_ids [118] → [117]
  • node[485] MatMul: input_ids [626, 638] → [629, 638]
  • node[487] Transpose: input_ids [119] → [118]
  • node[488] MatMul: input_ids [640, 641] → [629, 641]
  • node[495] Mul: input_ids [642, 648] → [637, 648]
  • node[499] Transpose: input_ids [121] → [120]
  • node[500] MatMul: input_ids [626, 653] → [629, 653]
  • node[502] Transpose: input_ids [122] → [121]
  • node[503] MatMul: input_ids [655, 656] → [629, 656]
  • node[510] Mul: input_ids [657, 663] → [637, 663]
  • node[515] Transpose: input_ids [124] → [123]
  • node[516] MatMul: input_ids [626, 669] → [629, 669]
  • node[518] Transpose: input_ids [125] → [124]
  • node[519] MatMul: input_ids [671, 672] → [629, 672]
  • node[526] Mul: input_ids [673, 679] → [637, 679]
  • node[531] Transpose: input_ids [127] → [126]
  • node[532] MatMul: input_ids [626, 685] → [629, 685]
  • node[534] Transpose: input_ids [128] → [127]
  • node[535] MatMul: input_ids [687, 688] → [629, 688]
  • node[542] Mul: input_ids [689, 695] → [637, 695]
  • node[547] Transpose: input_ids [130] → [129]
  • node[548] MatMul: input_ids [626, 701] → [629, 701]
  • node[550] Transpose: input_ids [131] → [130]
  • node[551] MatMul: input_ids [703, 704] → [629, 704]

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

@justinchuby
justinchuby force-pushed the justinchuby-implement-deferred-recurrent-gguf branch from ef635bd to f09eb0c Compare August 25, 2026 17:10
Base automatically changed from justinchuby-implement-deferred-recurrent-gguf to main August 25, 2026 17:10
@justinchuby
justinchuby requested a review from a team August 25, 2026 17:10
justinchuby and others added 2 commits August 25, 2026 10:12
Implement the dedicated parallel attention and Mamba2 decoder, four-state dynamic cache ABI, strict pinned GGUF metadata and tensor closure, and fail-closed quantization handling. Add synthetic, stateful, real-checkpoint, CLI, and GGUF regression coverage while keeping downstream runtime support deferred on the heterogeneous-state schema.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Signed-off-by: Justin Chu <justinchuby@users.noreply.github.com>
Pin Falcon-H1 in the parent branch's explicit quantized-import policy while retaining dequantize-only fail-closed behavior. Reject SSM group geometries that cannot expand across Mamba heads, add regression coverage, and align the changed files with repository lint rules.\n\nCo-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

Signed-off-by: Justin Chu <justinchuby@users.noreply.github.com>
Copilot AI lite review requested due to automatic review settings August 25, 2026 17:23
@justinchuby
justinchuby force-pushed the justinchuby-falcon-h1-gguf branch from ea6f21f to 5db3720 Compare August 25, 2026 17:23
@justinchuby
justinchuby merged commit 2b46fc0 into main Aug 25, 2026
14 of 23 checks passed
@justinchuby
justinchuby deleted the justinchuby-falcon-h1-gguf branch August 25, 2026 17:24

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

Adds first-class Mobius support for the Falcon-H1 hybrid decoder architecture and its GGUF import path. This fits into Mobius’s “Models → Tasks → Registry/Exporter” stack by introducing a dedicated Falcon-H1 model implementation, a matching task with a four-state ABI, and GGUF metadata/tensor-contract validation plus extensive tests.

Changes:

  • Introduce a dedicated Falcon-H1 decoder graph (parallel Attention + Mamba2 per layer) and a task that exposes an ordered 4-state ABI: (key, value, conv_state, ssm_state).
  • Add GGUF support for falcon-h1: strict metadata validation, tensor closure enforcement, config/tensor mapping, and import-time policy enforcement (no static cache; quantized sources require dequantization).
  • Add comprehensive coverage: unit/integration parity, GGUF builder tests (including failure paths), docs/support census updates, and registration wiring.

Reviewed changes

Copilot reviewed 24 out of 24 changed files in this pull request and generated 2 comments.

Show a summary per file
File Description
tests/synthetic_parity_test.py Allows Falcon-H1 HF config creation to override mlp_bias for parity.
tests/falcon_h1_test.py Adds Falcon-H1 graph/parity/state ABI tests + pinned checkpoint integration parity.
tests/_test_configs.py Adds Falcon-H1 tiny config; adjusts CTRL tiny config bias flag usage.
testdata/cases/causal-lm/falcon-h1-tiny-90m.yaml Adds an L4/L5 case entry (skipped due to deferred runtime packaging).
src/mobius/tasks/_falcon_h1.py New Falcon-H1 task defining graph I/O and four-state ABI ordering.
src/mobius/tasks/_cache_utils.py Ensures recurrent function registration recognizes FalconH1Config as Mamba2-capable.
src/mobius/tasks/init.py Exports/registers FalconH1CausalLMTask and task name mapping.
src/mobius/models/falcon_h1.py New Falcon-H1 model implementation (parallel Attention+Mamba2 + SwiGLU).
src/mobius/models/init.py Exports FalconH1ForCausalLM.
src/mobius/integrations/gguf/_tensor_processors.py Treats Falcon-H1 as Mamba2-like for tensor processing rules.
src/mobius/integrations/gguf/_tensor_mapping.py Adds Falcon-H1 GGUF tensor-name → Mobius module-name mapping.
src/mobius/integrations/gguf/_config_mapping.py Adds Falcon-H1 GGUF metadata→config mapping + postprocess validation.
src/mobius/integrations/gguf/_builder.py Adds Falcon-H1 tensor-contract validation + import-time policy checks.
src/mobius/integrations/gguf/_builder_test.py Adds Falcon-H1 GGUF build/save/load/dequantize/bias-family/failure-path tests.
src/mobius/integrations/gguf/_arch_registry.py Marks falcon-h1 graph+import supported (runtime remains deferred).
src/mobius/integrations/gguf/_arch_registry_test.py Updates pinned supported-arch census and asserts Falcon-H1 resolves to dedicated graph.
src/mobius/components/_rms_norm.py Extends PostGatedRMSNorm with optional grouped normalization support.
src/mobius/components/_mamba_block.py Extends Mamba2Block controls (bias flags, multipliers, dt clipping, optional padding mask).
src/mobius/components/_attention.py Adds Falcon-H1 key scaling support via key_multiplier.
src/mobius/_registry.py Registers Falcon-H1 model/task/config and sets test_model_id/family.
src/mobius/_configs/_base.py Introduces FalconH1Config and transformers config extraction/validation.
src/mobius/_configs/init.py Exports FalconH1Config.
src/mobius/main.py Rejects --static-cache for Falcon-H1 model type.
docs/api/build_from_gguf.md Updates GGUF support matrix/census and Falcon-H1 narrative to “supported graph/import, deferred runtime”.

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

Comment on lines +2729 to +2731
def __post_init__(self) -> None:
self.attn_qkv_bias = self.attention_bias
self.attn_o_bias = self.attention_bias
Comment thread tests/_test_configs.py
Comment on lines 299 to 303
"hidden_act": "relu",
"tie_word_embeddings": True,
"num_key_value_heads": TINY_HEADS,
"attn_qkv_bias": True,
"attn_o_bias": True,
"attention_bias": True,
},
justinchuby added a commit that referenced this pull request Aug 25, 2026
## Summary

- clean up still-valid typing, documentation, test robustness,
error-message,
  maintainability, and performance findings left by the GGUF PR stack
- preserve the behavioral fixes merged in #625-#632
- hash reused multi-GB GGUF sources once, at the final pre-publication
integrity
  gate, while retaining cheap identity checks around staging

Exact base: `2db9d33debdc254d879a51b14434c9a81c230f4f`

Exact head: `4541ed2bc9d2ab4227484510b4a85b2d9113eb25`

## Reconstructed original 17-item low-priority tranche

The persisted audit retained only the totals, so this list was
reconstructed
from the live threads and current source. All but the already-fixed #596
comment are addressed in this PR.

| PR | Comment | Disposition |
|---|---:|---|
| #550 | 3837144656 | Implemented: correct tuple return annotation |
| #552 | 3837389183 | Implemented: multichannel waveform shape docs |
| #559 | 3837716261 | Implemented: name-based cache assertions |
| #573 | 3854308350 | Implemented: one final GGUF hash, with integrity
regression coverage |
| #574 | 3854345521 | Implemented: `TensorRole \| None` typing |
| #574 | 3854345597 | Implemented: removed obsolete verdict filtering |
| #577 | 3854472859 | Implemented: documented SSM sequence length |
| #578 | 3843112613 | Implemented: documented F64 passthrough |
| #579 | 3854518332 | Implemented: generalized fused-projection error |
| #580 | 3854576300 | Implemented: removed brittle node counts |
| #583 | 3854681386 | Implemented: documented conditional draft outputs
|
| #587 | 3854816872 | Implemented: corrected MTP output contract docs |
| #596 | 3846110059 | Already fixed on base: unambiguous GQA bias
comment |
| #600 | 3855174281 | Implemented: metadata-count-only MTP error |
| #607 | 3855776048 | Implemented: stable route-field assertions |
| #607 | 3855776086 | Implemented: public tensor iterator |
| #609 | 3856486136 | Implemented: fail-closed LM-head comment |

## Current unresolved-thread disposition

This covers all 48 Copilot threads returned by the reproducible
#600-#630
query. The one human #623 thread is excluded.

| PR | Comment | Current-main disposition and evidence |
|---|---:|---|
| #600 | 3855174177 | Already fixed by #629: package cycle and
reserved-sidecar validation |
| #600 | 3855174238 | Already fixed by #629: explicit MTP sidecar
naming/loading |
| #600 | 3855174281 | Implemented here: error no longer invents an
observed block count |
| #602 | 3848155961 | Outside exact stack; already fixed: top-level
`expert_dtype` is classified before early return |
| #602 | 3848155983 | Outside exact stack; still-valid behavioral
block-quant validation, unchanged |
| #602 | 3848156000 | Outside exact stack; still-valid truncated-read
behavioral finding, unchanged |
| #602 | 3848156022 | Outside exact stack; still-valid descriptor
byte/dtype validation, unchanged |
| #602 | 3848156040 | Outside exact stack; still-valid expert-bank
payload validation, unchanged |
| #603 | 3855249765 | Already fixed by #630: runtime preflight preserves
shard sets |
| #603 | 3855249840 | Already fixed by #630: success output follows
durable runtime publication |
| #604 | 3855343082 | Implemented here: graph-only MTP persistence
distinguished from runtime rejection |
| #604 | 3855343131 | Already fixed by #630: runtime success messages
are atomic |
| #607 | 3855776001 | Implemented here: missing generation golden skips
before provenance read |
| #607 | 3855776048 | Implemented here: only stable route fields are
asserted |
| #607 | 3855776086 | Implemented here: tensor count uses
`tensor_items_raw()` |
| #608 | 3856079371 | Still-valid behavioral cache-symlink containment
finding; unchanged |
| #608 | 3856079415 | Still-valid behavioral lowercase-digest validation
finding; unchanged |
| #609 | 3856486136 | Implemented here: comment matches value-preserving
policy |
| #610 | 3855541683 | Already fixed by #628: Falcon bias precedence is
explicit |
| #610 | 3855541761 | Already fixed by #628: CTRL tiny config exercises
projection biases |
| #611 | 3856595840 | Implemented here: runtime test resolves the
distribution providing the module |
| #612 | 3855677383 | Already fixed by #625: supported-version
endianness detection |
| #612 | 3855677427 | Implemented here: shared `INT64_MAX` sentinel |
| #612 | 3855677460 | Implemented here: shared PLaMo2 width inference |
| #612 | 3855677486 | Implemented here: accepted PLaMo2 activation
spellings are explicit |
| #613 | 3855845678 | Implemented here: canonical issue URL |
| #613 | 3855845757 | Implemented here: Mamba-1 function-registration
docs |
| #613 | 3855845806 | Implemented here: test expects the canonical issue
URL |
| #614 | 3855988545 | Implemented here: removed stale Nemotron-H
divergence comments |
| #614 | 3855988597 | Already fixed by #628: zero-head geometry raises
actionable `ValueError` |
| #615 | 3856082290 | Already fixed by #626: dense GraniteHybrid bias
closure |
| #618 | 3856729330 | Implemented here: required routes filter ORT GenAI
evidence |
| #618 | 3856729409 | Implemented here: env-selected runtime version is
authoritative |
| #618 | 3856729490 | Stale/N/A: PR-description-only matrix claim;
repository workflow claims one pinned version |
| #618 | 3856729563 | Implemented here: schema tail restored to normal
indentation |
| #619 | 3856342484 | Already fixed on base: Kimi Linear uses
`/issues/605` |
| #619 | 3856342532 | Already fixed by #628: config rejects convolution
kernels below 2 |
| #619 | 3856342580 | Already fixed by #628: GGUF contract rejects
convolution kernels below 2 |
| #620 | 3855717041 | Already fixed by #627: tied LM-head-only
checkpoints are retained |
| #621 | 3856722324 | Already fixed by #628: Kimi-K3 required metadata
is complete |
| #623 | 3855931210 | N/A to current main: comment belongs to open,
unmerged #623 |
| #623 | 3855939302 | N/A to current main: comment belongs to open,
unmerged #623 |
| #623 | 3855939358 | N/A to current main: comment belongs to open,
unmerged #623 |
| #623 | 3855939394 | N/A to current main: comment belongs to open,
unmerged #623 |
| #624 | 3856777152 | Implemented here: runtime compatibility reuses the
emitted model type |
| #625 | 3857049733 | Implemented here: unsupported header reports both
endian candidates |
| #629 | 3857313182 | Newer post-audit behavioral sidecar-symlink
cleanup finding; unchanged |
| #629 | 3857313251 | Newer post-audit cross-platform path-safety
finding; unchanged |

## Validation

- affected GGUF/package/ORT GenAI/model/schema tests: 1,040 passed
- broad non-integration suite: 7,851 passed, 56 skipped, 1 subtest
passed
- generated GGUF docs checks: 7 passed
- initialized `lintrunner`; full lint/format passed
- GPT-5.6 Sol medium review: one integrity finding fixed; re-review
found no significant issues

Signed-off-by: Justin Chu <justinchuby@users.noreply.github.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
titaiwangms added a commit that referenced this pull request Aug 26, 2026
## Summary

- align Jais2, CodeShell, Xverse, and Kimi-K3 model `config_class`
declarations with registry dispatch
- record Kimi-K3 and LFM2-MoE coverage limitations without fabricating
golden data
- support both tensor and mapping Transformers linear-attention cache
ABIs in Falcon-H1 and GatedDeltaNet parity tests
- mark the selective-MXFP4 Kimi-K3 checkpoint as a strict graph-only L2
xfail
- preserve independent dashboard confidence levels when L2 xfails but L3
passes

## Root causes

- #635 introduced the Jais2, CodeShell, and Xverse registry/model
contract mismatches
- #621 introduced the Kimi-K3 contract and coverage gaps
- #606 introduced LFM2-MoE without an L4/L5 coverage disposition
- #610 assumed the older tensor cache representation in Falcon-H1 parity
coverage
- #327 added a dashboard meta-assertion that incorrectly required every
L2 xfail to have confidence below L2, contradicting the
independent-level truth table

## Validation

- dashboard plus original CI regression gates: 90 passed
- affected graph and weight-alignment gates: 25 passed
- Kimi-K3 L2: 1 passed, 2 strict xfailed

---------

Signed-off-by: titaiwang <titaiwang@microsoft.com>
Copilot-Session: 2fe48e9f-4ebc-43a9-85f3-4e4f99f3ed5d
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.

3 participants