Skip to content

DeepSeek-V4 B2: block-FP8 / packed-FP4 weight-loading + expert-emission primitives (DRAFT) - #602

Merged
justinchuby merged 1 commit into
mainfrom
squad/deepseek-v4-block-fp4-loading
Aug 24, 2026
Merged

DeepSeek-V4 B2: block-FP8 / packed-FP4 weight-loading + expert-emission primitives (DRAFT)#602
justinchuby merged 1 commit into
mainfrom
squad/deepseek-v4-block-fp4-loading

Conversation

@justinchuby

Copy link
Copy Markdown
Member

Summary

DeepSeek-V4 real-checkpoint blocker B2: generic block-FP8 / packed-FP4 weight-loading + expert-emission primitives, classified by tensor properties (never by model name). Separate artifact from PR #591 (native BQMoE fusion) — touches none of its files, and does not touch deepseek_v4.py (Deckard/CSA #593).

Root cause

QuantizationConfig.from_transformers treated quant_method='fp8' as ordinary per-tensor float8 and returned None, so the model built bf16 Linear initializers. The real experts are FP4-packed in int8 (E2M1, block-32, UE8M0 micro-scales), so a packed [2048,2048] expert was compared to its logical [2048,4096] initializer → confusing Weight shape mismatch. Projections are block-FP8 (E4M3 weight + 2D UE8M0 [128,128] block scales).

What this adds (mobius.integrations._block_quant)

  • BlockQuantScheme — property parser over quantization_config + top-level expert_dtype. Per-tensor fp8 (no weight_block_size) is not owned.
  • QuantizedTensorDescriptor — clean, breaking contract: logical and packed shape, weight qtype, block geometry, scale name/dtype/shape/layout, exact byte counts, routed/shared role.
  • classify_tensor / validate_descriptor — distinguish ORDINARY, BLOCK_FP8, FP4_PACKED, UNSUPPORTED. Logical-vs-packed shape, scale pairing, and wrong/missing/orphan scales fail closed. No dequantization, no copy-to-float.
  • read_raw_tensor_bytes / LazyRawTensor — byte-exact, header-only, bounded lazy per-shard loading (one tensor resident).
  • stack_expert_bank / PackedExpertBank — byte-exact expert-major bank packing (reusable lowering primitive; ragged banks are a hard error).
  • runtime_representation_gap / plan_routed_expert_bank — the emission gate.

ABI verdict (why it typed-rejects, no fake fusion)

onnx-genai nxrt CPU kernels (block_quantized_{matmul,moe}.rs) accept only the interleaved llama.cpp block_mxfp4 layout (QK=32, 17 bytes/block) and the iq* GGUF formats:

  • block-FP8 projections → no block_fp8 BlockFormat + no E4M3×2D-UE8M0 dequant path → typed reject.
  • FP4 experts are numerically MXFP4 but stored planar (separate I8 nibbles + separate E8M0 block-32 scale), while nxrt MXFP4 needs a single interleaved tensortyped reject (planar→interleaved transcode is unproven; no planar-FP4 bank ABI).

plan_routed_expert_bank raises BlockQuantExportError naming the exact gap rather than emitting an unrunnable node. No dense fallback, no env-flag emission.

from_transformers change (property-guarded)

Block-scaled fp8 / fp4-expert checkpoints now surface a precise typed blocker instead of None → shape-mismatch. Ordinary per-tensor fp8 still returns None; GPTQ/AWQ/GGUF/ModelOpt paths unchanged.

Preflight (B2 moved)

ArchitectureConfig.from_file(<real checkpoint>) now raises BlockQuantExportError with the exact layout + ABI gap — the failure moved from a confusing shape-mismatch to an actionable typed reject.

Tests

Real quantization_config + a measured slice of the checkpoint index metadata + tiny synthetic packed safetensors (real I8 / F8_E4M3 / F8_E8M0 dtypes): classification, logical-vs-packed validation, byte preservation, scale pairing (missing/duplicate/orphan/wrong), shared-vs-routed, bounded lazy load, byte-exact bank stacking, emission typed-reject. An opt-in suite exercises the mounted checkpoint headers directly. ruff check + ruff format clean.

Deckard #593 handoff (stable public API)

from mobius.integrations._block_quant import (BlockQuantScheme, QuantizedTensorDescriptor, QuantKind, classify_tensor, validate_descriptor, build_descriptors, pair_weight_scales, read_raw_tensor_bytes, LazyRawTensor, stack_expert_bank, PackedExpertBank, plan_routed_expert_bank, runtime_representation_gap, BlockQuantError, BlockQuantValidationError, BlockQuantExportError). No edits to deepseek_v4.py.

Remaining typed blockers (not this PR)

  1. nxrt has no block-FP8 BlockFormat.
  2. FP4 experts are planar, nxrt MXFP4 is interleaved — needs a proven byte-exact planar→interleaved transcode or a planar-FP4 bank ABI extension.
  3. End-to-end runnable export additionally needs Deckard's model wiring (feat(deepseek-v4): default-off native CompressedSparseAttention (HCA ratio-128) export [C1, DRAFT] #593).

No A100 benchmark (no runnable shape-faithful path yet). Draft — do not merge.

🤖 Flagged for squad review (needs review): touches the shared QuantizationConfig.from_transformers config seam.

…on primitives

Real DeepSeek-V4-flash routed experts are FP4-packed in int8 (E2M1, block-32,
UE8M0 micro-scales) and its projections are block-FP8 (E4M3 weight + 2D UE8M0
[128,128] block scales). QuantizationConfig.from_transformers treated
quant_method='fp8' as ordinary per-tensor fp8 and returned None, so the model
built bf16 and rejected the packed [2048,2048] expert against the logical
[2048,4096] initializer with a confusing "Weight shape mismatch".

Add a clean, breaking quantized-tensor descriptor + load contract
(mobius.integrations._block_quant), classified by tensor properties (never by
model name):

- BlockQuantScheme: property parser over quantization_config + expert_dtype.
- QuantizedTensorDescriptor: logical + packed shape, qtype, block geometry,
  scale name/dtype/shape/layout, byte counts, routed/shared role.
- classify_tensor / validate_descriptor: distinguish ORDINARY, BLOCK_FP8,
  FP4_PACKED, UNSUPPORTED; logical-vs-packed shape, scale pairing, wrong/
  missing/orphan scale all fail closed. No dequantization, no copy-to-float.
- read_raw_tensor_bytes / LazyRawTensor: byte-exact, header-only, bounded
  lazy per-shard loading (one tensor resident).
- stack_expert_bank / PackedExpertBank: byte-exact expert-major bank packing
  (reusable lowering primitive; ragged banks are a hard error).
- runtime_representation_gap / plan_routed_expert_bank: the emission gate.
  nxrt's BlockFormat accepts only interleaved llama.cpp block_mxfp4 + iq*;
  it has no block-FP8 format and no planar-FP4 bank layout, so both families
  typed-reject with BlockQuantExportError naming the exact ABI gap instead of
  emitting an unrunnable node. No dense fallback.

Route block-scaled fp8 / fp4-expert checkpoints through the typed blocker in
QuantizationConfig.from_transformers (property-guarded: per-tensor fp8 without
weight_block_size still returns None). This moves the real-checkpoint failure
from a shape-mismatch to a precise, actionable BlockQuantExportError.

Tests use the real quantization_config + a measured slice of the checkpoint
index metadata plus tiny synthetic packed safetensors (real I8 / F8_E4M3 /
F8_E8M0 dtypes): classification, logical-vs-packed validation, byte
preservation, scale pairing (missing/duplicate/orphan/wrong), shared vs routed,
bounded lazy load, byte-exact bank stacking, and the emission typed-reject.
An opt-in suite exercises the mounted checkpoint headers directly.

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

Copy link
Copy Markdown

🏗️ Architecture Diff

Comparing 0665542a38d38d

Model Sub-model Changes Status

No architecture changes detected.


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

@github-actions

Copy link
Copy Markdown

Performance Comparison

Comparing 0665542a38d38d

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 264 +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 126 126 +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 428 428 +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.

@justinchuby

Copy link
Copy Markdown
Member Author

APPROVE PRODUCER SLICE

Independent, read-only review at exact HEAD a38d38d760a44bdb6bd346fd63921296c99359e9 (draft). Reviewed the block-FP8 / packed-FP4 weight-loading + expert-emission primitives (mobius.integrations._block_quant) and the QuantizationConfig.from_transformers routing change.

Verified against the real DeepSeek-V4-flash checkpoint

The checkpoint is mounted on disk5 and the opt-in TestRealCheckpointHeaders suite actually ran and passed (2 tests) — real preflight evidence, not just synthetic fixtures. The real quantization_config (quant_method=fp8, fmt=e4m3, scale_fmt=ue8m0, weight_block_size=[128,128]) and measured header shapes were confirmed internally consistent:

  • Routed experts (experts.<i>.w1/w3): I8 (2048, 2048) packed ↔ logical (2048, 4096), paired F8_E8M0 (2048, 128) micro-scale (= in/32) → FP4_PACKED (E2M1 nibble-packed, block-32, UE8M0).
  • Down (w2): I8 (4096, 1024) ↔ logical (4096, 2048), scale (4096, 64).
  • Shared experts (shared_experts.w1/w2): F8_E4M3 (2048, 4096) + F8_E8M0 (16, 32) (ceil(2048/128), ceil(4096/128)) → BLOCK_FP8.
  • Router gate: BF16 (256, 4096) → ordinary (256 experts). Matches the stated topology.

Gates — verified

Property-based descriptor (never by model name).

  • classify_tensor decides the numeric family solely from (weight_dtype, scale_dtype): F8_E4M3 + F8_E8M0 → BLOCK_FP8; I8 + F8_E8M0 → FP4_PACKED; float + no scale → ORDINARY; anything else → UNSUPPORTED with a reason (fail closed, never a guess). Routed/shared role comes from the standard structural HF module path (.experts. / shared_expert), documented as structural, not a model-name allowlist.

Logical-vs-packed, scale pairing, block geometry, byte preservation.

  • validate_descriptor enforces FP4 in_logical == in_packed * 2 (the exact [2048,4096] vs [2048,2048] relation), UE8M0 (F8_E8M0) scale required, micro-scale block-32 with scale == (out, in/32); block-FP8 logical == packed (E4M3 not sub-byte-packed) with scale == (ceil(out/bs0), ceil(in/bs1)). pair_weight_scales raises on an orphan scale (duplicate/misnamed), and a missing scale on a quantized kind fails closed. Byte preservation: read_raw_tensor_bytes returns the exact on-disk span (with a header-vs-read length check), and stack_expert_bank concatenates expert-major byte-for-byte — a ragged bank is a hard error, never zero-padded.

Bounded lazy load, no float work.

  • read_safetensors_header reads only the 8-byte length prefix + header JSON. LazyRawTensor holds only path/key/metadata and reads one tensor's payload on demand → peak resident is one tensor. No dtype interpretation, no cast, no copy-to-float anywhere.

Emission gate: emit only if the runtime ABI really supports the layout, else typed-reject.

  • NXRT_BLOCK_FORMATS mirrors the onnx-genai nxrt BlockFormat::parse set (interleaved llama.cpp block_mxfp4 + iq*). runtime_representation_gap returns a precise gap for both quantized families; plan_routed_expert_bank validates a uniform bank (mixed kind/shape/dtype/layout → hard error) then raises BlockQuantExportError naming the exact ABI gap — no node emitted, no dense fallback, no dequantization, no env flag. It explicitly refuses to pretend a planar→interleaved MXFP4 transcode is proven (E2M1 nibble order + E8M0 bias vs llama.cpp unverified). This is consistent with the sibling BlockQuantizedMoE ABI PR: that runtime supports only interleaved mxfp4/iq*, so DeepSeek-V4's block-FP8 and planar-FP4 genuinely cannot run today. The representable path builds a bank only from caller-supplied byte-exact payloads (never placeholders).

Routing change is property-guarded and non-regressing.

  • QuantizationConfig.from_transformers routes block-scaled-fp8 / fp4-expert schemes to the typed BlockQuantExportError before the none/fp8 early-returns (so expert_dtype=fp4 with unset quant_method is caught). Per-tensor fp8 without weight_block_size → scheme None → still returns None; GPTQ/INT4/ModelOpt paths unchanged. This converts the prior confusing "Weight shape mismatch" into a precise, actionable blocker.

Scope honesty.

Independent test/lint runs (isolated worktree, PYTHONPATH=src)

  • _block_quant_test.py: 38 passed (incl. 2 real-checkpoint header tests against the mounted disk5 checkpoint).
  • src/mobius/_configs/: 31 passed.
  • Full src/mobius/integrations/: 1170 passed, 3 skipped (no regression; lazy-import layering avoids a cycle).
  • ruff check + ruff format --check on the 3 changed files: clean.

Non-blocking

Verdict: APPROVE PRODUCER SLICE. Do not merge (draft, rebase recommended). The producer primitives are byte-exact and honestly gated; native emission stays typed-rejected until a block-FP8 / planar-FP4 runtime BlockFormat (or a proven byte-exact planar→interleaved transcode) lands.

— Independent reviewer, requested by Justin Chu

@justinchuby
justinchuby marked this pull request as ready for review August 24, 2026 22:53
@justinchuby
justinchuby requested review from a team and a lite review from Copilot August 24, 2026 22:53
@justinchuby
justinchuby merged commit d16cd4a into main Aug 24, 2026
24 checks passed
@justinchuby
justinchuby deleted the squad/deepseek-v4-block-fp4-loading branch August 24, 2026 22:53

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 property-based block-FP8 and packed-FP4 loading, validation, expert-bank packing, and typed runtime rejection.

Changes:

  • Adds quantization descriptors and validation.
  • Adds byte-preserving safetensors loading and expert-bank stacking.
  • Updates transformer quantization parsing and adds comprehensive tests.

Reviewed changes

Copilot reviewed 3 out of 3 changed files in this pull request and generated 5 comments.

File Review findings
src/mobius/integrations/_block_quant.py Four moderate findings: validate unsupported descriptors, reject truncated reads, validate dtype and byte counts, and verify expert payload sizes.
src/mobius/integrations/_block_quant_test.py No final comments.
src/mobius/_configs/_quantization.py One moderate finding: classify top-level expert_dtype before the early qc is None return.
Suppressed comments (1)

src/mobius/integrations/_block_quant_test.py:77

  • The opt-in real-checkpoint tests are tied to a developer-specific absolute path, so they silently skip on every runner whose mount differs and cannot provide the advertised real-header coverage. Make the checkpoint root configurable (for example via an environment variable) while retaining a missing-path skip for default test runs.
REAL_CHECKPOINT = pathlib.Path(
    "/datadisks/disk5/justinchu/onnx-genai-models/deepseek-v4-flash/checkpoint"
)

💡 Configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment on lines +87 to +90
from mobius.integrations._block_quant import BlockQuantScheme

scheme = BlockQuantScheme.from_quantization_config(
qc, expert_dtype=getattr(hf_config, "expert_dtype", None)
Comment on lines +630 to +631
if validate and desc.kind is not QuantKind.UNSUPPORTED:
validate_descriptor(desc)
Comment on lines +175 to +177
with open(path, "rb") as f:
f.seek(start)
return f.read(end - start)
Comment on lines +504 to +512
# Both quantized kinds require a paired scale.
if desc.scale_shape is None or desc.scale_dtype is None:
raise BlockQuantValidationError(
f"{desc.name}: {desc.kind.value} tensor has no paired scale"
)
if desc.scale_dtype != "F8_E8M0":
raise BlockQuantValidationError(
f"{desc.name}: expected UE8M0 (F8_E8M0) scale, got {desc.scale_dtype}"
)
Comment on lines +680 to +685
n0 = len(per_expert_bytes[0])
for i, b in enumerate(per_expert_bytes):
if len(b) != n0:
raise BlockQuantValidationError(
f"ragged expert bank: expert 0 has {n0} bytes but expert {i} has {len(b)}"
)
justinchuby added a commit that referenced this pull request Aug 25, 2026
…able export on nxrt runtime capability

Rebased #593 (native pkg.nxrt::CompressedSparseAttention export, ratio-4 CSA +
ratio-128 HCA) onto Mobius main now that #578 (6992181) and #602 (d16cd4a,
mobius.integrations._block_quant block-FP8 / packed-FP4 loading contract) are
merged. Consumes the merged _block_quant API directly; the temporary stacked
duplicate-parse branch is retired.

#602 rejects the block-scaled-FP8 + packed-FP4 DeepSeek-V4-Flash checkpoint at
config resolution (the INT4/per-tensor path cannot load it). That is correct
for a normal export, but it also blocks a native-CSA export before any graph
exists. Split the behavior into the two stages the directive requires:

  * Non-native (default) export keeps #602's early, loud config-resolution
    reject -- unchanged, its tests still pass.
  * native_csa opts into DEFERRING that reject: ArchitectureConfig.from_transformers
    catches the typed BlockQuantExportError, records the parsed block_quant_scheme
    on the config, and lets graph construction PROGRESS past the former generic
    "Weight shape mismatch" (build_from_module emits the CSA nodes + compressed
    state IO). The runnable FULL EXPORT then fails closed at a runtime-capability
    gate (assert_native_runtime_supports_block_quant, enforced at the top of
    DeepSeekV4 preprocess_weights, before apply_weights) while nxrt cannot
    execute block-FP8 / planar-FP4 weights. The gap string is sourced from
    _block_quant.runtime_representation_gap, so the gate tracks the real nxrt
    format strings and opens automatically when the native runtime slice lands
    -- no change here. Never a silent dense fallback, never partial-native.

No BC shims: ArchitectureConfig gains a block_quant_scheme field; deepseek_v4.py
adds no FP8/FP4 weight parsing (delegates to _block_quant). No performance claim
-- ratio-4 sparse execution and >=16-decode remain blocked on the unmerged
native block-FP8 / planar-FP4 runtime.

Tests (deepseek_v4_flash_test.py, 45 pass): non-native fail-closed at config
resolution; fp4-experts-alone owned; native_csa defers (scheme recorded, quant
None); full export typed-rejects at the runtime-capability gate; graph
construction progresses past block-quant (CSA node built); preprocess_weights
enforces the gate; property-gated not a blanket V4/native_csa refusal;
per-tensor fp8 not over-owned. #602 (_block_quant_test) + config
(_base_test/_extractors_test) suites unchanged (69 pass).

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
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>
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