Repository navigation
Conversation
…ake is a 400 A client could not tell from /v1/models whether a model takes image or video parts, and a video_url part sent to a server whose model reads video but which has no libtfvideo (GLM-5.3-Flash with the default image) ended in HTTP 500 at the first video (ashhart#3004). Each model entry now ends with "input_types": ["text"], plus "image" with --vision, plus "video" when the checkpoint offers video and libtfvideo loads. The keys before it keep their order and bytes. There is no new option: the server decides it once at startup (input_types.zig), loading libtfvideo with the loader every video uses, which keeps its answer, and only when the model offers video. Server.media() takes its image and video flags from the same Inputs, so every request route (chat, completions, responses, messages, tokenize) refuses a video_url part on a server that does not list "video" with the 400 an unsupported part gets (invalid_request_error). The startup log names the missing library once. If libtfvideo still fails at a video, that is now a 400 naming the library instead of a 500. The 17 server goldens holding a /v1/models reply gain the key on each entry (the fake engine is text only) and 25 bytes of Content-Length per entry, and nothing else. New tests in models_input_types_test.zig cover the listing (text, image, image and video, and video without the library), the 400 for both kinds of model without video, and the library refusal. docs/api.md describes the key; docs/vision.md says when libtfvideo loads. Co-authored-by: WebReflection <85749+WebReflection@users.noreply.github.com>
This was referenced Nov 13, 2026
Author
|
/atc depends 3154 |
ashhart
force-pushed
the
lead/models-input-types
branch
from
November 14, 2026 03:15
0029d0e to
eab1e7e
Compare
This branch has not been deployed
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 this changes
Wires the request contract and repetition-only kernels into GLM CUDA with request-owned full-prefix histories. Each row includes the committed prompt/reply and accepted verification ancestry; prefix extensions append only their new suffix, while shortening or replacement rebuilds membership from authoritative IDs.
8ee0d8d23, which follows server: add request-only repetition penalty contract #3153. This PR contributes8ee0d8d23..f2a3f894b;9886d4387adds only this PR's changelog link.atc overlap --json: selected inspection is complete. Parent server: /v1/models lists each model's input_types; a video it can't take is a 400, not a 500 (#3004) #3019 shares 19 files and merges cleanly. GLM-5.3-Flash CUDA: shared rounds draft MTP for every stream at once #2856 and GLM on CUDA: kept states, carries and prompt twins under the latent split (TF_GLM_KV_SPLIT, #1431 part 4; stacked on #2937) #2938 each have one conflict inzig/src/families/glm/cuda_follow.zig; final landing-order coordination is required. This is selected coverage.Stack order: #3153 (request/API), #3154 (kernels/contracts), then this GLM engine layer. All three drafts target
lead/models-input-typesand identify their own review ranges.Checks on this head
9886d4387; implementation commitf2a3f894b.zig build test-glm-repetition-host compile-glm-native-open --summary all: 7/7 steps, 23/23 tests passed.zig build test test-kernel-contract test-golden fuzz-cortheon --summary all: 679/679 steps; 8,699 passed, 222 skipped, zero failed.zig fmt --check build.zig zig,git diff --check, andtools/pr_check.py: pass; 65 changed files cumulatively and zero new lean findings.zig build: the exact target base and earlier cumulative heads each reach 26/29 steps, thentf-qwen35-cudahits the same seven Windowsstd.c/fabric-network errors in unchanged code.Receipt
nulluse identity1; no checkpoint or server-wide default.Checklist