feat(minimax-h3): task/partition guard — mirror _resolve_task's raise (#77 follow-up) - #84
Closed
localai-bot wants to merge 1 commit into
Closed
feat(minimax-h3): task/partition guard — mirror _resolve_task's raise (#77 follow-up)#84localai-bot wants to merge 1 commit into
localai-bot wants to merge 1 commit into
Conversation
…se (#77 follow-up) The #70/#74 white grid cost three campaigns because the H3 driver silently accepted task=t2va on the Ref2VA-partition checkpoint. Upstream `pipeline._resolve_task` RAISES on the mismatch (vllm_omni/diffusion/models/minimax_h3/pipeline_minimax_h3.py:374-391, raise at 387-390); the recipe documents the split (recipes/MiniMaxAI/MiniMax-H3.md:50-51,289: one server serves one partition, FL2VA→{t2va,fl2va}, Ref2VA→{ref2va}). This mirrors the raise 1:1 and adds the community-file fallback. Partition detection. `MiniMaxH3PartitionFromModelIndex` mirrors upstream's exact release keys (model_index.json → `_minimax_h3` → {partition,tasks}, pipeline:279-282). Community GGUF/NVFP4 strip that block, and there is NO structural fallback: measured on the two real captured manifests, the Ref2VA NVFP4 (1051 tensors) and FL2VA GGUF (535) carry the IDENTICAL DiT — same 535 base tensor names AND shapes after collapsing the NVFP4 weight/scale/scale_2 split (ref2va prepends reference rows through the SAME video/audio_patch_proj, adding no tensor). So a stripped file must DECLARE the partition (`--partition fl2va|ref2va`; server `--video-partition`); `MiniMaxH3PartitionFromFlag` maps it to the recipe's served-task set. The refuse. `MiniMaxH3CheckTaskPartition` is the raise half of `_resolve_task`; the task is what the request encodes (`MiniMaxH3TaskOfRequest`), and `MiniMaxH3GenerateT2va` calls the pair before denoising. An unknown partition refuses every task as ambiguous and names the recipe lines. A default `declared=false` request leaves the guard inert (pipeline-math tests unaffected). RED-first: new case `test_minimax_h3 :: "the task/partition guard refuses the #77 mismatch"` (38 assertions) — the #77 combo throws, correct pairings pass, stripped refuses + --partition recovers, and the two real manifests are asserted to the same 535-name set. Neutralizing the guard body turned it RED at 10 assertions; restored → GREEN. Suite 67/67 (66 prior +1), 46549 assertions; test_video_api 4/4. Records: spec §8.7 (guard section + behavior table + discriminator finding), STATUS/BENCHMARKS H3 rows, benchmark-record, NOW, anchored state entry. FOLLOWING_AGENTS_PROTOCOL Assisted-by: Claude Code:claude-opus-4-8 [ClaudeCode]
mudler
force-pushed
the
row/H3-TASK-PARTITION-GUARD
branch
from
August 6, 2026 22:45
746572c to
838a079
Compare
mudler
added a commit
that referenced
this pull request
Aug 6, 2026
… loudly (#84) row/H3-TASK-PARTITION-GUARD squash. Mirrors upstream's _resolve_task raise (pipeline_minimax_h3.py:279-282,387-390): FL2VA serves {t2va,fl2va}, Ref2VA serves {ref2va}; any other pairing — including the exact t2va-on-ref2va mismatch that silently burned three render campaigns — refuses with the recipe contract in the message. DEFINITIVE finding: NO structural discriminator exists in principle — the two real captured manifests collapse to IDENTICAL 535 base tensor names AND shapes, so a stripped community file must DECLARE its partition (--partition / --video-partition); MiniMaxH3PartitionFromModelIndex reads the release model_index.json keys when present. RED-first proven (guard body neutralized -> 10 failed assertions); suite 67/67. Merge also repairs an anchorless state entry another session pushed (re-anchored 2026-08-06T23:55) and pays a 5-char STATUS ratchet squeeze. FOLLOWING_AGENTS_PROTOCOL Assisted-by: Claude Code:claude-opus-4-8 [ClaudeCode]
Collaborator
Author
|
Landed on main as the squash (mudler authorship); merge repaired an anchorless state entry from a parallel session and paid the ratchet squeeze. 🤖 Generated with Claude Code |
mudler
added a commit
that referenced
this pull request
Aug 7, 2026
main moved 17 commits under this branch (#82, #83, #84 plus the public-doc gate restoration), so every earlier green result was re-run on the merged tree rather than carried over. Three record conflicts, all resolved BY KEY rather than by taking a side: * docs/STATUS.md — main had COMPACTED this paragraph and lowered the size ratchet to 284062. Taking our side wholesale would have silently reverted their compaction and blown the gate, so the resolution keeps THEIR paragraph and swaps in only our Vulkan clause, then trims it to fit. * docs/BENCHMARKS.md — a keyed table. Kept THEIR rows (they updated MiniMax-H3 and MXFP4 and added H3-RENDER-CLOSE) and appended only our Vulkan row. * .agents/state.md — append-only log, unioned theirs then ours. Re-verified on the merged tree: clean -Werror Vulkan-ON build 0 warnings, e2e opt-125m on Vulkan STRICT token-exact 6/6 prompts / 96/96 tokens with 0 provider declines, test_vulkan_backend 10/10 (480), test_backend_cross_device 11/11 (123), clean CPU-only build 0 warnings, CPU ctest 336/337 with the one failure (test_engine_core_proc) passing serially in 0.01s — the known starve-under-`-j` pattern on a box running several suites at once, not a regression.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What & why
The #70/#74 white grid cost three campaigns because the H3 driver silently accepted
task=t2vaon the Ref2VA-partition checkpoint. Upstreampipeline._resolve_taskRAISES on that mismatch (vllm_omni/diffusion/models/minimax_h3/pipeline_minimax_h3.py:374-391, raise at 387-390); the recipe documents the split (recipes/MiniMaxAI/MiniMax-H3.md:50-51,289— one server serves one partition: FL2VA → {t2va, fl2va}, Ref2VA → {ref2va}). This mirrors the raise 1:1 and adds the community-file fallback.Partition discriminator — definitive finding (grounded both sides)
Upstream reads the served-task set from the release config
model_index.json → _minimax_h3 → {partition, tasks}(pipeline:279-282);MiniMaxH3PartitionFromModelIndexmirrors those exact keys. Community GGUF/NVFP4 strip that block, and there is NO structural fallback — measured on the two real captured manifests:minimax_h3_nvfp4_manifest.inc(1051){weight, weight_scale, weight_scale_2})minimax_h3_gguf_manifest.inc(535)commempty both ways)Ref2VA conditioning prepends reference rows through the same
video/audio_patch_projweights, adding no reference-specific tensor — so a name/shape auto-detector is impossible in principle. A stripped file must declare its partition (--partition fl2va|ref2va; server--video-partition).Guard behavior table (task × partition → pass/refuse)
--partition)RED-first proof
New case
test_minimax_h3 :: "the task/partition guard refuses the #77 mismatch"(38 assertions). Neutralizing the guard body (reviewer mutation) turned it RED at 10 failed assertions (t2va-on-ref2va, the stripped refusals, the dispatch-level combo); restoring it → GREEN. Suite 67/67 (66 prior + this), 46549 assertions;test_video_api4/4 (server wiring).Records
spec §8.7 (guard section + behavior table + discriminator finding), STATUS/BENCHMARKS H3 rows, benchmark-record, NOW, anchored state entry.
Gates
All doc gates green (check-doc-checkpoint, check-public-doc-tables, check-now-current, check-state-order, check-supported-models, check-protocol-consistency, …). The only preflight red —
check-fusion-consistencyforminimax_h3_video_vae_device— is pre-existing (red at this branch point, byte-identical) and out of scope for this row.🤖 Generated with Claude Code
https://claude.ai/code/session_014fZAcg1WcU8V629k6HWKys