Follow-up to #373, found live during the #372 perplexity A/B: bartowski/nvidia_NVIDIA-Nemotron-Nano-9B-v2-GGUF carries tokenizer.ggml.pre = tekken, which #373's (correct) loud gate now rejects at load. Before #373 this model silently tokenized with NO pre-tokenization — so every prior dotLLM run of it, including the gated NemotronHTextGeneratorTests real-weights e2e, was mis-tokenizing.
Fix: add the tekken pipeline. .NET regex supports Unicode category classes natively, so use the ORIGINAL tokenizer.json pattern quoted verbatim in llama.cpp llama-vocab.cpp:408 (llama.cpp itself ships a lookahead rewrite only because std::regex lacks \p{Lu}-style classes).
Acceptance:
Follow-up to #373, found live during the #372 perplexity A/B:
bartowski/nvidia_NVIDIA-Nemotron-Nano-9B-v2-GGUFcarriestokenizer.ggml.pre = tekken, which #373's (correct) loud gate now rejects at load. Before #373 this model silently tokenized with NO pre-tokenization — so every prior dotLLM run of it, including the gatedNemotronHTextGeneratorTestsreal-weights e2e, was mis-tokenizing.Fix: add the tekken pipeline. .NET regex supports Unicode category classes natively, so use the ORIGINAL tokenizer.json pattern quoted verbatim in llama.cpp
llama-vocab.cpp:408(llama.cpp itself ships a lookahead rewrite only because std::regex lacks \p{Lu}-style classes).Acceptance:
tekkenresolves to its own pipeline (llama.cppLLAMA_VOCAB_PRE_TYPE_TEKKEN).