test_bad_process (serve.test_server.MacTelemetry.test_bad_process) ... ok
test_device_is_released_on_success_and_unsupported_selector (serve.test_server.MacTelemetry.test_device_is_released_on_success_and_unsupported_selector) ... ok
test_no_registry (serve.test_server.MacTelemetry.test_no_registry) ... ok
test_note_reaches_the_monitor (serve.test_server.MacTelemetry.test_note_reaches_the_monitor) ... ok
test_readings (serve.test_server.MacTelemetry.test_readings) ... ok
test_working_set_is_read_once_for_samples_and_static (serve.test_server.MacTelemetry.test_working_set_is_read_once_for_samples_and_static) ... ok
test_a_lazy_engine_keeps_the_prompts_its_arguments_ask_for (serve.test_server.IncrementalPrompts.test_a_lazy_engine_keeps_the_prompts_its_arguments_ask_for) ... ok
test_a_tokenizer_without_resume_points_encodes_in_full (serve.test_server.IncrementalPrompts.test_a_tokenizer_without_resume_points_encodes_in_full) ... ok
test_counting_tokens_leaves_the_kept_prompts_alone (serve.test_server.IncrementalPrompts.test_counting_tokens_leaves_the_kept_prompts_alone) ... [strata] done: 8 tokens in 0 s (153919.4 tok/s) (length, cancel=False)
[strata] the reply reached max tokens while still thinking, so it has no answer: a thinking budget (reasoning_budget_tokens, in the request or in strata-<model>.json for every request) leaves room to answer
ok
test_prompt_encoder_slot_count_is_capped (serve.test_server.IncrementalPrompts.test_prompt_encoder_slot_count_is_capped) ... ok
test_same_ids_as_a_full_encode_on_varied_conversations (serve.test_server.IncrementalPrompts.test_same_ids_as_a_full_encode_on_varied_conversations) ... ok
test_the_kept_prompts_follow_the_engines_conversation_slots (serve.test_server.IncrementalPrompts.test_the_kept_prompts_follow_the_engines_conversation_slots) ... ok
test_the_slot_argument_wins_over_the_info_line_and_a_bad_one_falls_back (serve.test_server.IncrementalPrompts.test_the_slot_argument_wins_over_the_info_line_and_a_bad_one_falls_back) ... ok
test_turns (serve.test_server.IncrementalPrompts.test_turns) ... [strata] done: 32 tokens in 0 s (298925.9 tok/s) (stop, cancel=False)
[strata] done: 32 tokens in 0 s (347714.3 tok/s) (stop, cancel=False)
[strata] done: 32 tokens in 0 s (380220.2 tok/s) (stop, cancel=False)
[strata] done: 32 tokens in 0 s (381300.4 tok/s) (stop, cancel=False)
[strata] done: 32 tokens in 0 s (390167.8 tok/s) (stop, cancel=False)
[strata] done: 32 tokens in 0 s (394758.0 tok/s) (stop, cancel=False)
ok
test_without_a_slot_setting_four_prompts_are_kept (serve.test_server.IncrementalPrompts.test_without_a_slot_setting_four_prompts_are_kept) ... ok
test_a_refused_prompt_is_not_kept (serve.test_prompt_encoder.Served.test_a_refused_prompt_is_not_kept) ... ok
test_another_conversation_does_not_evict_the_first (serve.test_prompt_encoder.Served.test_another_conversation_does_not_evict_the_first)
A subagent beside the main conversation: every rendered prompt starts with the template's header, which ... ok
test_quoted_think_across_turns (serve.test_prompt_encoder.Served.test_quoted_think_across_turns) ... ok
test_random_messages_equal_a_full_encode (serve.test_prompt_encoder.Served.test_random_messages_equal_a_full_encode)
Messages quoting control-token texts and <think> tags at random, growing, edited and cut back between ... ok
test_a_turn_reuses_the_previous_one (serve.test_prompt_encoder.Units.test_a_turn_reuses_the_previous_one) ... ok
test_plain_agree_until (serve.test_prompt_encoder.Units.test_plain_agree_until) ... ok
test_same_ids_as_a_full_encode (serve.test_prompt_encoder.Units.test_same_ids_as_a_full_encode) ... ok
test_configured_vision_is_not_omitted (serve.test_image_omission.ImageOmission.test_configured_vision_is_not_omitted) ... ok
test_disabled_switch_keeps_the_normal_vision_error (serve.test_image_omission.ImageOmission.test_disabled_switch_keeps_the_normal_vision_error) ... ok
test_omitted_images_are_cached_as_text_and_retries_are_stable (serve.test_image_omission.ImageOmission.test_omitted_images_are_cached_as_text_and_retries_are_stable) ... ok
test_capability_and_batch (serve.test_logit_bias.LogitBias.test_capability_and_batch) ... ok
test_forms_and_transport (serve.test_logit_bias.LogitBias.test_forms_and_transport) ... ok
test_http_rejects_before_stream (serve.test_logit_bias.LogitBias.test_http_rejects_before_stream) ... [strata] 400 invalid request: logit_bias: expected an object or a list of [token_id, bias] pairs
[strata] 400 invalid request: logit_bias: this engine does not support token biases; use a supporting CUDA/HIP build
[strata] 400 invalid request: logit_bias: biases must be finite numbers between -100 and 100; false is a pair-list ban
ok
test_invalid (serve.test_logit_bias.LogitBias.test_invalid) ... ok
test_large_list (serve.test_logit_bias.LogitBias.test_large_list) ... ok
test_a_bad_list_is_never_stored (serve.test_logit_bias.LogitBiasCache.test_a_bad_list_is_never_stored) ... ok
test_an_equal_list_in_a_later_request_is_a_hit (serve.test_logit_bias.LogitBiasCache.test_an_equal_list_in_a_later_request_is_a_hit) ... ok
test_false_is_not_zero (serve.test_logit_bias.LogitBiasCache.test_false_is_not_zero) ... ok
test_json_equivalent_pairs_and_token_keys (serve.test_logit_bias.LogitBiasCache.test_json_equivalent_pairs_and_token_keys) ... ok
test_same_answers_as_the_plain_function (serve.test_logit_bias.LogitBiasCache.test_same_answers_as_the_plain_function) ... ok
test_same_length_mutations_are_validated (serve.test_logit_bias.LogitBiasCache.test_same_length_mutations_are_validated) ... ok
test_the_cache_is_bounded (serve.test_logit_bias.LogitBiasCache.test_the_cache_is_bounded) ... ok
test_the_result_is_a_copy (serve.test_logit_bias.LogitBiasCache.test_the_result_is_a_copy) ... ok
test_vocabulary_size_is_part_of_the_key (serve.test_logit_bias.LogitBiasCache.test_vocabulary_size_is_part_of_the_key) ... ok

----------------------------------------------------------------------
Ran 39 tests in 3.786s

OK
