Files
opensquilla--opensquilla/tests/test_context_budget_governor.py
2026-07-13 13:12:33 +08:00

125 lines
4.5 KiB
Python

from __future__ import annotations
from opensquilla.context_budget import (
ContextBudgetClass,
ContextBudgetGovernor,
)
from opensquilla.engine import AgentConfig, ThinkingLevel
def test_context_budget_governor_derives_large_window_caps() -> None:
budget = ContextBudgetGovernor.from_values(
context_window_tokens=200_000,
max_output_tokens=8_192,
thinking_budget_tokens=0,
context_overflow_threshold=0.85,
).snapshot()
assert budget.provider_request_max_chars > 500_000
assert budget.default_tool_argument_max_chars > 8_000
assert budget.default_tool_result_provider_max_chars > 96_000
assert budget.external_tool_result_provider_max_chars < (
budget.default_tool_result_provider_max_chars
)
def test_context_budget_governor_keeps_small_windows_guarded() -> None:
budget = ContextBudgetGovernor.from_values(
context_window_tokens=8_000,
max_output_tokens=8_192,
thinking_budget_tokens=0,
context_overflow_threshold=0.85,
).snapshot()
assert 4_000 <= budget.provider_request_max_chars <= 32_000
assert 2_000 <= budget.default_tool_argument_max_chars <= 16_000
assert budget.default_tool_result_provider_max_chars <= 32_000
def test_context_budget_governor_honors_explicit_overrides() -> None:
governor = ContextBudgetGovernor.from_values(
context_window_tokens=200_000,
max_output_tokens=8_192,
thinking_budget_tokens=0,
context_overflow_threshold=0.85,
provider_request_proof_max_chars=123_456,
tool_use_argument_provider_request_max_chars=12_345,
tool_result_provider_request_max_chars=54_321,
)
budget = governor.snapshot()
assert budget.provider_request_max_chars == 123_456
assert governor.tool_argument_chars_for(ContextBudgetClass.LOCAL) == 12_345
assert governor.tool_result_provider_chars_for(ContextBudgetClass.LOCAL) == 54_321
def test_context_budget_governor_glm_derived_proof_budget_anchor() -> None:
"""Anchor: the GLM window with the xhigh output reserve derives 339,945."""
budget = ContextBudgetGovernor.from_values(
context_window_tokens=202_752,
max_output_tokens=32_768,
thinking_budget_tokens=50_000,
context_overflow_threshold=0.85,
).snapshot()
assert budget.provider_request_max_chars == 339_945
def test_context_budget_governor_explicit_proof_budget_bypasses_glm_ladder() -> None:
"""An explicit 650k proof budget beats the derived GLM-window ladder."""
budget = ContextBudgetGovernor.from_values(
context_window_tokens=202_752,
max_output_tokens=32_768,
thinking_budget_tokens=20_000,
context_overflow_threshold=0.85,
provider_request_proof_max_chars=650_000,
).snapshot()
assert budget.provider_request_max_chars == 650_000
# Derived side-effect caps scale from the explicit proof budget.
assert budget.default_tool_argument_max_chars == 104_000 # 650k * 0.16
assert budget.external_tool_argument_max_chars == 32_000 # 32k clamp
assert budget.default_tool_result_provider_max_chars == 160_000 # clamp
assert budget.external_tool_result_provider_max_chars == 160_000
def test_context_budget_governor_from_agent_config_reads_explicit_proof_budget() -> None:
"""AgentConfig.provider_request_proof_max_chars reaches the governor bypass."""
config = AgentConfig(
context_window_tokens=202_752,
max_tokens=32_768,
thinking=ThinkingLevel.HIGH,
provider_request_proof_max_chars=650_000,
)
assert (
ContextBudgetGovernor.from_config(config).snapshot().provider_request_max_chars == 650_000
)
derived = AgentConfig(
context_window_tokens=202_752,
max_tokens=32_768,
thinking=ThinkingLevel.HIGH,
)
assert (
ContextBudgetGovernor.from_config(derived).snapshot().provider_request_max_chars == 441_945
)
def test_context_budget_governor_external_caps_stay_stricter_than_local() -> None:
governor = ContextBudgetGovernor.from_values(
context_window_tokens=200_000,
max_output_tokens=8_192,
thinking_budget_tokens=0,
context_overflow_threshold=0.85,
)
assert governor.tool_argument_chars_for(ContextBudgetClass.EXTERNAL) < (
governor.tool_argument_chars_for(ContextBudgetClass.LOCAL)
)
assert governor.tool_result_provider_chars_for(ContextBudgetClass.EXTERNAL) < (
governor.tool_result_provider_chars_for(ContextBudgetClass.LOCAL)
)