From 64ad7dbb3435ed8248bf72b173f10207b6ef7d14 Mon Sep 17 00:00:00 2001 From: Ettore Di Giacinto Date: Wed, 12 Aug 2026 23:42:40 +0000 Subject: [PATCH] fix(build): main is RED -- hf_snapshot.h calls HfSnapshot before it is declared (#551, #546) `Nemotron35LightningSnapshot()` landed with the Nemotron-3.5 goldens (#517) ten lines ABOVE the `HfSnapshot` definition it calls. Name lookup in the body of a non-template function only sees declarations that precede it, so the header does not compile: tests/parity/hf_snapshot.h:52:10: error: 'HfSnapshot' was not declared in this scope That header is included by 16 test translation units, including the SACRED 27B and 35B parity gates, so CPU builds fail outright -- `build-test-cpu` is red on main at 8b00f79f2 and on every PR branched from it. The fix is to put the accessor where every other accessor in this file already sits: below `HfSnapshot`, next to the Qwen and DFlash ones. Nothing else moves, the pinned revision constant stays with its documentation, and the two checkers that PARSE this header for its pins -- test_check_snapshot_pins and test_online_gate_server_binary -- stay green (19 and 20 tests). RED before: the header fails `g++ -std=c++20 -fsyntax-only` at the line above. GREEN after: it compiles clean. That compile IS the test, and the 16 TUs already run it in CI. Worth recording: `Nemotron35LightningSnapshot()` has no caller yet. It is staged for the gate that #517 owes, which is why nothing but the build noticed. FOLLOWING_AGENTS_PROTOCOL Following-Agents-Protocol: true AI-Assisted: true Assisted-by: AGENT:claude-opus-5 [Claude Code] --- tests/parity/hf_snapshot.h | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/tests/parity/hf_snapshot.h b/tests/parity/hf_snapshot.h index 7d4018616..1fd6b1d68 100644 --- a/tests/parity/hf_snapshot.h +++ b/tests/parity/hf_snapshot.h @@ -41,19 +41,6 @@ inline constexpr const char* kQwen27NvfP4Revision = inline constexpr const char* kNemotron35LightningNvfP4Revision = "29f2d1746d8f41e316523194b19018707749b1b1"; -// The Nemotron-3.5-Lightning gate model (#517). Unlike the Qwen pins above, -// this one is NOT in the HF cache: it is staged on the NAS as a `local_dir` -// snapshot at `$CHECKPOINT_ROOT/nemotron-3.5-lightning-30b-nvfp4`, so there is -// no `models--org--name/snapshots/` layout to resolve. The env override is -// therefore the ONLY reachable path, and the cache spelling below exists so the -// revision still names what the golden belongs to. Absent env var => "" => the -// caller emits its loud SKIP, which is the intended behavior off the gate host. -inline std::string Nemotron35LightningSnapshot() { - return HfSnapshot("models--nvidia--NVIDIA-Nemotron-3.5-Lightning-30B-A3B-NVFP4", - kNemotron35LightningNvfP4Revision, - "VT_NEMOTRON35_SNAPSHOT"); -} - // Snapshot directory for `` at `revision`, or "" when it is not cached // (the caller then emits its loud SKIP). `env_override`, when set and non-empty, // names an explicit snapshot directory for a deliberate different-checkpoint @@ -178,6 +165,19 @@ inline std::string Qwen27DFlashDraftSnapshot() { return HfSnapshot("models--z-lab--Qwen3.6-27B-DFlash", kQwen27DFlashDraftRevision, "VT_DFLASH_DRAFT_SNAPSHOT");} +// The Nemotron-3.5-Lightning gate model (#517). Unlike the Qwen pins above, +// this one is NOT in the HF cache: it is staged on the NAS as a `local_dir` +// snapshot at `$CHECKPOINT_ROOT/nemotron-3.5-lightning-30b-nvfp4`, so there is +// no `models--org--name/snapshots/` layout to resolve. The env override is +// therefore the ONLY reachable path, and the cache spelling below exists so the +// revision still names what the golden belongs to. Absent env var => "" => the +// caller emits its loud SKIP, which is the intended behavior off the gate host. +inline std::string Nemotron35LightningSnapshot() { + return HfSnapshot("models--nvidia--NVIDIA-Nemotron-3.5-Lightning-30B-A3B-NVFP4", + kNemotron35LightningNvfP4Revision, + "VT_NEMOTRON35_SNAPSHOT"); +} + } // namespace parity #endif // VLLM_TESTS_PARITY_HF_SNAPSHOT_H_