Repository navigation
sampling: a reasoning budget of 0 bounds the think, on the integration line (#95 merged to the stale master) - #96
Conversation
… cannot consume the forced end With budget 0, the generation prompt's prefilled `<think>` moves the budget sampler from IDLE to FORCING, then the prefilled newline was accepted IN FORCING and advanced force_pos, so the sampler reached DONE without ever sampling the end tag and the model thought to its cap. Measured on 0d7dda6 (Qwen3.5-0.8B Q4_K_M, 2026-11-06): reasoning_budget_tokens 0 thought 400 of 400 tokens with empty content, with or without a json_schema; 1 was bounded. FORCING now advances only on the forced token, and a natural end tag accepted while forcing (a prefilled `<think></think>`) ends it, so a closed think is never forced a second time. Tests: the realistic budget-0 case (start, then the forced end) and the budget-exhausted case now feed the forced tokens as sampled; a new test covers budget 0 with the prefilled start and newline (end tag alone; message then end tag), a prefill that already closed the think, and budgets 1 and 3. Reverting the fix aborts the suite at 'activate immediately budget=0'. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01FRQWzgSfo79JtnwZywHKrE
gguf.cpp:996 logs strerror(errno) but never included <cerrno>; it compiled only while another header pulled it in transitively. The WASM WebGPU build (emscripten) no longer does: ubuntu-webgpu failed on #95 with "use of undeclared identifier 'errno'" (it passed on #94, 2026-11-04). Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01FRQWzgSfo79JtnwZywHKrE
…ger provides them transitively ubuntu-webgpu (emscripten) failed on #95 at gguf.cpp (errno), then at llama-graph.h:103 (getenv/atoi undeclared): the same build passed on #94 (2026-11-04), so the toolchain stopped pulling these headers in through others. Upstream ggml-org/llama.cpp master already includes them; this adds exactly the ones upstream has and the fork lacked (diffed per file over src/, common/, ggml/src, ggml/include): llama-graph.h, llama-mmap.cpp, llama-vocab.cpp <cstdlib>; llama-adapter.cpp <cerrno> <cstring>; common/jinja/value.cpp <cstdio> <cstdlib> <cstring>; common/common.h and common/build-info.h <cstdio>. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01FRQWzgSfo79JtnwZywHKrE
|
PASS at 45ae996. Verified: I diffed #95's squashed patch ( Logic: the same FORCING-accept fix I passed on #95. It is re-measured on a server built from this head, because |
…ed runner exists Its runner is [self-hosted, Linux], which exists only upstream. In this fork it sat queued for 24 h on every PR and was cancelled, and a merge gate reads a cancelled check as a failure (#94, #95, #96). The fork's four self-hosted workflows (CI, Server, UI, UI Build) are disabled in the repo settings for the same reason; this job is called from the CPU workflow, so it gets a job condition instead. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01FRQWzgSfo79JtnwZywHKrE
|
PASS carries to 9bd4d63. The delta from 45ae996 is |
444f386
into
889580fc/seq-state-across-stream-counts
The reasoning-budget-0 fix (#95, reviewed by Fable) on the integration line continuum pins. #95 merged into fork
master, which is 99 commits behind continuum's pin 0d7dda6; every fork PR since #84 targets this branch. Same three commits, cherry-picked clean onto a8c33da:force_posadvances only on the forced token, and a natural end tag ends the forcing. A prefilled<think>\ncan no longer consume the forced end, which had let the model think to its cap at budget 0.#include <cerrno>.The fork's default branch is now this line, so new PRs target what continuum ships.
Measured
Integration build 45ae996 (this head), IntelMac CPU, Qwen3.5-0.8B Q4_K_M,
--jinja --reasoning-format deepseek -t 2, 2026-11-07 ~01:20Z. The sampler and its test are byte-identical to master's, butserver-context.cppdiffers by ~880 lines, so the probe was re-run on this build.test-reasoning-budget: OK (13 tests). Mutation (on master's build): reverting the fix aborts the suite atactivate immediately budget=0.🤖 Generated with Claude Code
https://claude.ai/code/session_01FRQWzgSfo79JtnwZywHKrE