test(hy3): Hy3 Tier-1 5th family in integration matrix + Ultra-only docs (PR 3 of 3)#1072
Conversation
PR #1072 validation scorecardTitle: test(hy3): Hy3 Tier-1 5th family in integration matrix + Ultra-only docs (PR 3 of 3) Verdict: MERGE-SAFE
|
…-only docs (PR 3 of 3) Adds Hy3 (Tencent Hunyuan 3, 295B/21B-active MoE) as the 5th Tier-1 family across the agent + framework integration matrices, plus the Ultra-only launch docs. Stays strictly in the test/docs layer — no parser or engine code touched. A/B — matrix family + strict-xfail cells (conftest.py): * Register `hy3-preview-4bit` as the 5th `_FAMILY_ALIASES` entry with a reason documenting Ultra-only / 166 GB / weekly-Golden-Path. * Every Hy3 cell (11 agents + 3 frameworks = 14) is `xfail(strict=True)` via `pytest_collection_modifyitems`, mirroring the DeepSeek V4-Flash single-node-infeasible precedent (166 GB + G11 100 GB floor > 256 GB M3 Ultra). G8: strict-xfail, not plain skip. XPASSes force a revisit if a smaller quant / bigger Mac ever makes always-on CI feasible. * Family map recognises `hy3` / `hunyuan-3` served ids. C — offline parser-level integration test (test_hy3_offline.py): * The always-on-CI value-add. Drives captured Hy3 wire strings (from the same 2026-07-09 REAP50/75 spike that seeded PR-2's unit tests) through the `hy_v3` tool + reasoning parsers WITHOUT booting the 166 GB model, asserting the OpenAI-API-shape contract: tool_calls array well-formed, `<think>` reasoning routed to its own channel, no content leak, plus a composed reasoning-then-tool-call turn. 8 tests, sub-second, runs in the normal `pytest tests/` sweep. D — Ultra-only docs: * docs/reference/models.md: new "Ultra-only: Hunyuan 3 (Hy3)" section with the min_memory_gb=192 pre-download warning example + LM family row. * tests/integrations/README.md: Hy3 column in both status matrices, family-alias table row, counts (56→70 cells), and the offline-test note. * Verified the `min_memory_gb: 192` warning (PR-1 wiring, cli.py `_check_alias_min_memory`) fires for hy3-preview-4bit on a sub-192 GB Mac — no gap. Stacked on #1070 (PR-2 parsers) — rebase after #1070 merges. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
bff6b83 to
1b5098c
Compare
…dex converge) Address codex adversarial-review findings on the gpt-5.6-sol sign-off round: - test_hy3_offline.py: the `_tool_parser` / `_reasoning_parser` factories wrapped their imports in `try/except pytest.skip`, a vestigial guard from when this file predated the now-merged PR-2 parser (#1070). Post-merge the `hy_v3` tool + reasoning parsers are permanent, so the imports are now HARD: a parser-import regression or accidental deletion FAILS the offline test instead of silently skipping it green — the exact failure mode this always-on-CI test exists to catch. Dropped the now-unused `pytest` import. - conftest.py: corrected the "11 Hy3 cells" comment to "14 (11 agents + 3 frameworks)" and documented that the matrix parametrizes by a single `family` argument so every Hy3 nodeid ends in exactly `[hy3]` (refutes a gpt-5.5-round false positive about hypothetical combined `[agent-hy3]` ids). - Updated the file docstring: fixtures re-verified green against the merged parser at rebase time; no assertion change was needed. Offline suite still 8/8 green; ruff 0.15.21 clean.
codex converge disposition (rebase + finalize round)Ran Fixed (genuine):
Refuted (arguing against merged, intentional design — not a correctness bug):
Known pre-existing red (not this PR): Local: offline suite 8/8 green; |
…l cleanliness (codex converge r2) Address the genuine findings from the gpt-5.6-sol adversarial round: - test_hy3_offline.py: resolve the tool + reasoning parser NAMES from the production `hy3-preview-4bit` alias profile (`resolve_profile(...)`) instead of hard-coding `"hy_v3"`. The test now also guards the alias -> parser wiring: if the alias stops declaring `tool_call_parser` / `reasoning_parser` (or repoints them), the test fails instead of passing on a stale literal. - test_hy3_offline.py: the reasoning tests now assert the extracted `reasoning` field is itself tag-clean (exact expected payload + no `<think>` tag + no `:opensource` suffix), not only that `content` is clean. A parser that left the raw think tags in `reasoning` would now fail. Verified against the merged parser: `reasoning` is returned stripped (asserting correct behavior, not downgrading — G8). - conftest.py: rewrote the Hy3 infeasibility rationale to evaluate the RAM constraint (~156 GB peak vs 256 GB unified memory, 192 GB floor) and the disk constraint (166 GB weights + G11 100 GB free-disk floor) SEPARATELY rather than summing disk+RAM figures, and to state plainly that a supported M3 Ultra CAN boot it (that is the weekly Golden Path job) — only the always-on per-PR CI runners cannot. Refuted (arguing against merged, intentional design; documented in PR comment): the `xfail(strict=True)` XPASS-on-Golden-Path point (identical to the merged DeepSeek/gpt-oss strict-xfail tripwire pattern) and the "exercise production serialization" scope point (this file's declared scope is the parser-level API-shape contract, deliberately server-free). Offline suite 8/8 green; ruff 0.15.21 clean.
codex converge — round 2 (gpt-5.6 generation)Second adversarial round ( Fixed (genuine — commit
Refuted (design/scope arguments vs merged precedent, not correctness bugs):
All fixes keep the offline suite 8/8 green and |
…on + date the cell-status matrix (codex NIT) Two doc-precision NITs from the gpt-5.6-sol round: - docs/reference/models.md: the Ultra-only callout said "requires M3 Ultra 256 GB" but the runtime only enforces a 192 GB `min_memory_gb` floor with no chip-generation check. Reworded to state 192 GB as the enforced threshold and 256 GB M3 Ultra as the validated recommendation, matching actual runtime behavior. - tests/integrations/README.md: the "Current cell status" heading was still dated "2026-07-06 · 0.10.2" while the section now spans the 0.11.0 Hy3 column. Reworded so the heading states the matrix spans through 0.11.0 while attributing the PASS/XFAIL data to the 2026-07-06 0.10.2 pilot run (the data genuinely is from that pilot; the Hy3 column is strict-xfail). No code change; offline suite still 8/8 green.
codex converge — round 3 (final) + convergence noteThird Fixed the 2 NITs (commit
3 remaining BLOCKINGs — all refuted (recurring design/scope arguments vs merged precedent, not correctness bugs):
Convergence call: 3 rounds, findings 4→5→3-BL with the substantive ones fixed each round; the survivors are the same design/scope debates re-raised each round, each provably consistent with merged precedent. Per project SOP (codex diminishing-returns → converge once evidence is met; G8 — don't cave to policy-arguments framed as bugs) I'm holding here. Quality gate met: offline suite 8/8, GH checks green, Model note: operator asked for |
Rebased onto main — PR-2 (#1070, parsers) + the P0 leak fix (#1075) are both merged. This branch was originally cut from
feat/011.0-hy3-parsers; it has now been rebased--onto origin/mainso only the PR-3 test/docs commits replay. Diff-vs-main is exactly the 4 PR-3 files (docs/reference/models.md+tests/integrations/{README.md,conftest.py,test_hy3_offline.py}) — no parser or engine code (PR-2's parser files are already in main and correctly dropped out of this diff). Ready for review.Why
Hy3 (Tencent Hunyuan 3) landed as the Tier-1 5th family in #1069 (vendor) + #1070 (parsers), but the always-on integration matrices still only knew four families. Without this PR the family has zero CI coverage: the live matrix cells would either be missing entirely or, worse, try to boot the 166 GB
hy3-preview-4biton non-Ultra CI and OOM. This PR closes that gap the same way the DeepSeek V4-Flash Ultra-only precedent did — register Hy3 as a strict-xfail column (so an XPASS is a deliberate tripwire if the model ever becomes always-on-bootable) and add a real, sub-second, model-free offline parser test that gives the family genuine per-PR coverage. Refs #1069, #1070. Completes the 3-PR Hy3 series.PR-3 of the Hy3 (Tencent Hunyuan 3) series. PR-1 (#1069, merged) vendored the 295B/21B-active MoE +
hy3-preview-4bitalias; PR-2 (#1070, open) adds the tool + reasoning parsers. PR-3 adds Hy3 as the Tier-1 5th family across the agent + framework integration matrices, plus the Ultra-only launch docs. Strictly test/docs layer — no parser or engine code touched (verified: onlytests/integrations/**+docs/reference/models.md).What changed
A/B — matrix family registration + strict-xfail cells (
conftest.py)hy3-preview-4bitregistered as the 5th_FAMILY_ALIASESentry (Ultra-only / 166 GB / weekly-Golden-Path reason).xfail(strict=True)viapytest_collection_modifyitems, mirroring the DeepSeek V4-Flash single-node-infeasible precedent: 166 GB weights + the G11 100 GB free-disk floor > 256 GB M3 Ultra. Per G8 this is strict-xfail, not plain skip — an XPASS forces a revisit if a smaller quant or bigger Mac ever makes always-on CI feasible.hy3/hunyuan-3served ids.C — offline parser-level integration test (
test_hy3_offline.py) — the CI-runnable value-addDrives captured Hy3 wire strings (from the same 2026-07-09 REAP50/75 spike that seeded PR-2's unit tests) through the
hy_v3tool + reasoning parsers without booting the 166 GB model, asserting the OpenAI-API-shape contract:tool_callsarray well-formed,<think>reasoning routed to its own channel, no content leak, and a composed reasoning-then-tool-call turn. 8 tests, sub-second, runs in the normalpytest tests/sweep.D — Ultra-only docs
docs/reference/models.md: new "Ultra-only: Hunyuan 3 (Hy3)" section with themin_memory_gb: 192pre-download warning example + LM-family table row.tests/integrations/README.md: Hy3 column in both status matrices, family-alias row, cell counts (56 → 70), offline-test note.min_memory_gb: 192warning (PR-1 wiring,cli.py::_check_alias_min_memory) actually fires forhy3-preview-4biton a sub-192 GB Mac — no gap, purely documented.Local verification (post-rebase, against the merged PR-2 parser)
pytest tests/integrations/test_hy3_offline.py→ 8 passed — re-run against the now-mergedhy_v3parser (5 codex rounds of literal-close / reasoning-leak / brace-depth fixes); captured fixtures still match the merged contract, no assertion change needed.strict=Truexfail markers (verified via collection introspection); cells skip cleanly with no matching server — no false red.ruff check vllm_mlx/ tests/+ruff format --check vllm_mlx/ tests/clean under ruff 0.15.21 (CI-pinned version).Notes for reviewer
skip-version-bumplabel applied — nopyproject.tomlchange.test_hy3_offline.pymay need a re-sync at rebase time (single fixture block at top of file) — expected, not synced live.🤖 Generated with Claude Code