Fence lossy serial-tool history certificates by producer policy - #989
Draft
bradhilton wants to merge 2 commits into
Draft
bradhilton wants to merge 2 commits into
bradhilton wants to merge 2 commits into
Conversation
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.
Serial tool projection can return one parsed call while retaining sampled tokens for multiple calls. The previous complete-turn check could therefore certify a canonical one-call history as equivalent to that longer sampled history.
This change denies complete-turn certification for explicit
parallel_tool_calls=Falsewhen tools are configured or returned. Independently aligned reasoning prefixes, exact raw observations, non-tool turns, and true/omitted parallel settings retain their existing eligibility. Sampled token IDs, logprobs, usage, and served responses are unchanged. Both Responses adapters carry this setting into their chat observation; the Tinker direct observation path uses the same eligibility rule.The vLLM Responses observer also preserves absent tools as
Nonein its internal chat request. Passing an empty list caused the native chat validator to reject a valid Responses request after generation. Nonempty tools and the serial-policy setting remain intact.ART now owns a certificate-policy scope helper. Native vLLM and Tinker derive their cache namespace internally, excluding old certificates without deleting them. Distributed consumers need the companion integration that derives this scope inside corrected workers and checks attached-candidate policy; merely forwarding a new scope label to an old producer is insufficient. SGLang uses the external observer/store rather than an ART-owned local cache.
Validation:
uv run prek run --all-files: lint, formatting, and lock checks pass. Full type checking reports 14 diagnostics in unchanged trainer/megatron code. The final candidate and untouched policy parent67567571cffc4eb37a6cf9f2d01ac474c11aa88aproduce byte-identical output for the sameuv run ty check src testscommand/environment; the original main parent also reproduced these diagnostics.Draft pending the distributed consumer companion and review. The final absent-tools correction still needs runtime qualification. No deployment or cache migration is included.