Repository navigation
docs: the output budget is used as sent; document the reason-empty signal - #202
Merged
Merged
Conversation
…gnal
nan-devops#898 removed the output-budget floor (owner decision
2026-10-19): the client's budget is now passed through as sent on every
model. Three public surfaces still documented the floor it removed, none
of them reachable from that repo:
* the model card, both locales, which promised "a budget below 16384 is
raised to 16384";
* the OpenAPI spec's max_tokens description, which promised the same
and drew a consequence from it (an overflow near the window);
* the two suites that pin that text, which would have gone red the
moment the card changed.
They now say what the platform does: the budget is used exactly as sent,
reasoning is billed against that same budget, and a small budget on a
prompt that needs deliberation can come back as 200 with finish_reason
"length" and empty content. That case is documented with its three-field
rule and the new `x-nan-truncated-in-reasoning: true` response header
(non-streamed calls), which is what tells a client who reads only
`content` that the answer is not legitimately empty.
Both locales, spec and suites moved together; the suites now also assert
the absence of the old promise, so a half-updated card fails.
barckcode
added a commit
that referenced
this pull request
Oct 19, 2026
Resolved into one text per surface: - deepseek-v4-flash card (en + es): #200's wording (both ceilings, per-route signals, remedies) plus #202's non-streamed x-nan-truncated-in-reasoning header on the /chat/completions signal. #202's voseo phrasing and "raise the budget, or stream" are superseded. - Controlling reasoning: #200's paragraph keeps #202's three-field rule and header (scoped to non-streamed Chat Completions, per nan-devops#901, which reads `choices`); #201's token-budget subsection is linked from the "effort is a hint" sentence. - OpenAPI max_tokens: #200's text plus the header. max_output_tokens: #202 claimed finish_reason and the header on Responses; replaced by the Responses signal (status incomplete, incomplete_details) and the ceilings. - Tests: union of both suites, adjusted to the final text. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
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
nan-devops#898 removed the output-budget floor (owner decision 2026-10-19). Three public surfaces still documented the floor it removed, and none of them is reachable from that repo:
max_tokensdescription, which promised the same and drew a consequence from it;They now say what the platform does: the budget is used exactly as sent, reasoning is billed against that same budget, and a small budget on a prompt that needs deliberation can come back as 200 with
finish_reason: "length"and empty content.The signal
That case is documented with its three-field rule plus the new
x-nan-truncated-in-reasoning: trueresponse header (non-streamed calls), added in nan-devops#901. Without it, a client reading onlycontentsees an empty string and one reading only the status sees success.Tests
Both suites updated and now also assert the absence of the old promise, so a half-updated card fails.
npm test: 2502 tests / 87 files green.npm run buildgreen.