headroom/tests
Rod Boev 4ac54934cb
fix(streaming): preserve server_tool_use sse blocks (#1826)
## Description

Buffered Anthropic responses currently fail late when they contain a
`server_tool_use` block. `_response_to_sse()` raises after the upstream
response is already fully buffered, so callers wait through the whole
generation and then receive a 502 instead of the completed response.
This adds explicit `server_tool_use` support in the buffered-to-SSE
replay path, while keeping the existing rejection for truly unsupported
Anthropic block types. Closes #1806.

## Type of Change

- [x] Bug fix (non-breaking change that fixes an issue)
- [ ] New feature (non-breaking change that adds functionality)
- [ ] Breaking change (fix or feature that would cause existing
functionality to change)
- [ ] Documentation update
- [ ] Performance improvement
- [ ] Code refactoring (no functional changes)

## Changes Made

- Added a `server_tool_use` branch in the Anthropic buffered-response
SSE conversion loop.
- Emitted the full `server_tool_use` block in `content_block_start`
instead of raising during replay.
- Added a focused regression that proves buffered `server_tool_use`
blocks convert to SSE and round-trip with the block type intact.
- Kept the existing reject-unknown test so unsupported future block
types still fail loudly.
- Applied the pinned Ruff formatter to three pre-existing files on the
current base so the repo-wide lint job passes unchanged semantics.

## Testing

- [x] Unit tests pass (`uv run pytest tests/test_sse_thinking_blocks.py
-q`)
- [x] Linting passes (`uv run ruff check
headroom/proxy/handlers/streaming.py tests/test_sse_thinking_blocks.py`)
- [ ] Type checking passes (`uv run mypy headroom`)
- [x] New tests added for new functionality when applicable
- [ ] Manual testing performed

### Test Output

```text
uv run pytest tests/test_sse_thinking_blocks.py -q
7 passed, 1 warning in 0.19s

uv run ruff check headroom/proxy/handlers/streaming.py tests/test_sse_thinking_blocks.py
All checks passed!

uv run ruff check .
All checks passed!

uv run ruff format --check .
1046 files already formatted
```

## Real Behavior Proof

- Environment: Windows, project `uv` environment, focused handler-level
regression.
- Exact command / steps: run `tests/test_sse_thinking_blocks.py` on
`origin/main` with the new `server_tool_use` regression present, then
rerun the same file on this branch.
- Observed result: base raises `Unsupported Anthropic content block type
for SSE conversion: 'server_tool_use'`; head passes the focused file and
preserves the `server_tool_use` block type through buffered SSE
reconstruction, while the existing reject-unknown test still passes.
- Not tested: live proxy traffic against Anthropic server-side tools.

## Review Readiness

- [x] I have performed a self-review
- [x] This PR is ready for human review

## Checklist

- [x] My code follows the project's style guidelines
- [x] I have performed a self-review of my code
- [x] I have commented my code, particularly in hard-to-understand areas
- [x] I have made corresponding changes to the documentation
- [x] My changes generate no new warnings
- [x] I have added tests that prove my fix is effective or that my
feature works
- [x] New and existing unit tests pass locally with my changes
- [x] I have updated the CHANGELOG.md if applicable

## Additional Notes

No changelog entry is needed for this internal handler fix. The issue
suggested a broader accept-all fallback, but this PR stays intentionally
narrower: it handles the proven `server_tool_use` case and keeps the
existing rejection for truly unsupported Anthropic block types. The
extra formatting-only diff comes from the current base failing the
pinned full-repo Ruff format check.
2026-07-07 23:25:58 -05:00
..
cli Add Click-based CLI with memory management commands 2026-01-29 21:30:21 -08:00
fixtures test(evals): add offline fidelity regression gate (recall-based, zero-model) (#1187) 2026-06-22 22:53:59 -05:00
integrations/test_strands feat: Add AWS Strands Agents SDK integration 2026-01-31 00:31:37 -08:00
parity perf(compression): take large cold-start contexts off the synchronous kompress path (#1171) (#1298) 2026-06-23 10:48:06 -05:00
test_backends fix(bedrock): fail fast when session-token auth lacks botocore (#1553) 2026-07-01 21:02:15 -05:00
test_cache feat(cache): attribute prompt-cache misses to TTL lapse vs prefix change (#1313) (#1343) 2026-06-24 09:50:34 -05:00
test_cli fix(rtk): link managed rtk onto PATH instead of mutating the hook (#1698) 2026-07-07 12:23:26 -05:00
test_compression fix(compression): repair entropy preservation + JSON-safe truncation fallback (#1536) 2026-06-28 10:39:02 -07:00
test_dashboard test(dashboard): fix playwright importorskip placement 2026-04-21 00:10:05 -05:00
test_evals Remove LLMLingua: Kompress is the sole text compressor 2026-03-26 11:11:00 -07:00
test_install fix(install): pass sc.exe create as raw command line so binPath= quoting survives (#1654) (#1702) 2026-07-07 12:43:57 -05:00
test_integrations fix(agno): tolerate streaming tool-call SDK objects in parser (#1312) (#1336) 2026-06-24 09:52:15 -05:00
test_learn fix(learn): honor CLAUDE_CONFIG_DIR when locating Claude logs and memory (#1642) 2026-07-01 23:22:16 -05:00
test_live feat(read-maturation): activity-based hold-back Read maturation (Mechanism B) (#1068) 2026-06-22 22:52:42 -05:00
test_mcp_registry fix(io): use UTF-8 with locale fallback and preserve line endings on config/text I/O (#1498) 2026-06-28 13:18:47 -07:00
test_memory fix(memory): cap local embedder CPU thread oversubscription (#198) (#1559) 2026-07-01 17:12:02 -05:00
test_providers fix(proxy): strip 1m model suffix before upstream forwarding (#1840) 2026-07-06 08:33:45 -07:00
test_proxy fix(codex): OpenCode Zen telemetry attribution (#1648) 2026-07-07 11:35:21 -05:00
test_scripts fix(ci): restore repro harness test in dev installs 2026-04-20 22:12:01 +07:00
test_storage fix: B1 — retire ICM, RollingWindow, scoring, relevance + dependents 2026-05-02 12:23:17 -07:00
test_tokenizers fix(tokenizers): bound tiktoken vocab load so a stalled download cannot hang requests (#956) (#994) 2026-06-19 11:27:09 -05:00
test_transforms fix(code-compressor): CJK-aware relevance-query symbol matching (#1747) 2026-07-07 12:49:26 -05:00
__init__.py Initial commit: Headroom SDK - LLM context optimization toolkit 2026-01-06 23:16:58 -08:00
_dotenv.py fix(tests): stop module-level dotenv loaders from polluting os.environ during pytest collection 2026-04-26 09:15:37 -07:00
_mcp_stub.py fix(codex): stop pinning Codex memory MCP to one project db (#1269) 2026-06-23 07:49:07 -05:00
_skip_helpers.py fix(ccr): skip Anthropic marker emission when tool injection is deferred (#1273) 2026-06-23 12:48:05 -05:00
conftest.py fix(tests): reset whole headroom logger subtree so caplog stays deterministic (#1117) 2026-06-26 12:05:26 -05:00
e2e_cortex_latency.py fix(cortex-code): migrate to current Cortex REST API endpoints + add e2e benchmarks (#1474) 2026-06-30 14:14:36 -05:00
e2e_cortex_mcp.py fix(cortex-code): migrate to current Cortex REST API endpoints + add e2e benchmarks (#1474) 2026-06-30 14:14:36 -05:00
e2e_cortex_proxy.py fix(cortex-code): migrate to current Cortex REST API endpoints + add e2e benchmarks (#1474) 2026-06-30 14:14:36 -05:00
e2e_cortex_proxy_mcp.py fix(cortex-code): migrate to current Cortex REST API endpoints + add e2e benchmarks (#1474) 2026-06-30 14:14:36 -05:00
e2e_cortex_quality.py fix(cortex-code): migrate to current Cortex REST API endpoints + add e2e benchmarks (#1474) 2026-06-30 14:14:36 -05:00
e2e_cortex_savings.py fix(cortex-code): migrate to current Cortex REST API endpoints + add e2e benchmarks (#1474) 2026-06-30 14:14:36 -05:00
e2e_real_compression.py fix: complete /v1/responses compression telemetry, multi-frame WS, frozen-count cap 2026-05-07 14:50:03 -07:00
e2e_ws_codex_usage_headers.py fix(proxy): restore Codex usage headers on WS and streaming SSE transports (#577) (#794) 2026-06-09 15:55:53 -05:00
e2e_ws_responses_compression.py fix: complete /v1/responses compression telemetry, multi-frame WS, frozen-count cap 2026-05-07 14:50:03 -07:00
repro_unsendable_panic.py fix(ci): restore green lint gate on main 2026-06-04 14:15:49 -07:00
test_acceptance.py fix: B1 — retire ICM, RollingWindow, scoring, relevance + dependents 2026-05-02 12:23:17 -07:00
test_adapter_hooks.py feat: compression extraction — Rust knob exposure, CCR hardening, traffic audits (#818) 2026-06-16 20:21:13 -07:00
test_adaptive_sizer.py Diversity-aware SmartCrusher: keep unique items, compress text within 2026-03-25 23:57:24 -07:00
test_adversarial_grid.py feat(evals): adversarial-input robustness grid for compressors (#918) 2026-06-13 10:47:54 -05:00
test_agent_savings.py feat(agent-savings): land coding + general workload personas on main (#1732) 2026-07-03 07:28:19 -07:00
test_anthropic_beta_session_sticky.py fix: A6 — anthropic-beta and openai-beta deterministic merge + session-sticky 2026-05-02 09:53:37 -07:00
test_anthropic_pre_upstream_backpressure.py fix(proxy): include system/tools/sampling in cache key (#1473) 2026-06-30 16:29:20 -05:00
test_anthropic_stage_timings.py fix: preserve anthropic passthrough tool order (#1427) 2026-06-30 08:38:51 -05:00
test_audit_codex.py feat: compression extraction — Rust knob exposure, CCR hardening, traffic audits (#818) 2026-06-16 20:21:13 -07:00
test_audit_reads.py feat: compression extraction — Rust knob exposure, CCR hardening, traffic audits (#818) 2026-06-16 20:21:13 -07:00
test_auth_mode.py fix(proxy/auth): match real Anthropic OAuth token prefix (sk-ant-oat) (#1672) 2026-07-02 14:26:19 -07:00
test_azure_foundry_claude_compression.py feat(azure-foundry): derive upstream URL from ANTHROPIC_FOUNDRY_RESOURCE (#1138) 2026-06-22 15:49:14 -05:00
test_backend_anyllm.py fix(anyllm): forward openai api_base/api_key to the any-llm backend (#942) (#954) 2026-06-15 11:07:43 -05:00
test_backend_bugs.py fix(tests): stop module-level dotenv loaders from polluting os.environ during pytest collection 2026-04-26 09:15:37 -07:00
test_backend_streaming_cache_metrics.py fix(proxy): record cache reads/writes on backend-routed streaming (#327) 2026-05-14 11:01:57 -07:00
test_banner_upstream_targets.py feat: add Vertex AI proxy routing (#793) 2026-06-09 23:05:30 -07:00
test_bash_search_lossless_fold.py feat(content-router): lossless-excluded compaction (grep/log/json) + enable in coding/general personas (#1762) 2026-07-03 12:09:05 -07:00
test_bedrock_region.py fix(bedrock): route ARNs via converse, named AWS profiles, and au. re… (#1456) 2026-07-02 22:51:05 -05:00
test_bedrock_streaming_input_tokens.py fix(proxy): report real input tokens on streaming message_start (#1132) (#1305) 2026-06-23 12:53:15 -05:00
test_binaries.py fix: docker install fails with PermissionError in readonly cache dir 2026-04-20 17:36:44 -07:00
test_bundled_tools_savings.py fix(tests): stop module-level dotenv loaders from polluting os.environ during pytest collection 2026-04-26 09:15:37 -07:00
test_cache_aligner_detector_only.py fix(tests): update CacheAligner detector-only tests for F2.2 5-field CompressionPolicy 2026-05-06 14:39:39 -07:00
test_cache_control_move_bust.py fix(proxy): keep cache_control bounded + stable so the freeze overlay stops busting (#1852) 2026-07-06 17:05:34 -07:00
test_cache_prefix_overlay.py fix(proxy): freeze must forward cached (compressed) prefix byte-identical — stop token-mode cache busting (#1850) 2026-07-06 14:54:39 -07:00
test_canonical_pipeline.py fix(transforms): gate tool string output from lossy compression (#1307) (#1387) 2026-06-25 13:43:53 -05:00
test_ccr.py fix(ccr): make headroom_retrieve a hash-only full-content lookup (#1532) 2026-06-28 10:32:43 -07:00
test_ccr_batch_processor.py Harden Anthropic prefix cache stability across proxy and batch paths 2026-04-04 13:45:37 -05:00
test_ccr_batch_store.py chore: renormalize line endings to LF 2026-04-24 15:33:30 +02:00
test_ccr_context_tracker.py fix(ccr): make headroom_retrieve a hash-only full-content lookup (#1532) 2026-06-28 10:32:43 -07:00
test_ccr_feedback.py fix(ccr): make headroom_retrieve a hash-only full-content lookup (#1532) 2026-06-28 10:32:43 -07:00
test_ccr_mcp_server.py fix(mcp): surface dead proxy state (#1786) 2026-07-07 23:18:57 -05:00
test_ccr_response_handler.py fix(ccr): make headroom_retrieve a hash-only full-content lookup (#1532) 2026-06-28 10:32:43 -07:00
test_ccr_response_handler_extra.py fix(ccr): make headroom_retrieve a hash-only full-content lookup (#1532) 2026-06-28 10:32:43 -07:00
test_ccr_row_drop_store_bridge.py fix(proxy): gate CCR retrieve/compress endpoints to loopback (#1338) 2026-06-24 09:45:20 -05:00
test_ccr_rust_marker_hash_bridge.py fix(ccr): key Rust search/diff/log markers with explicit_hash (#852) 2026-06-11 13:08:05 -05:00
test_ccr_sqlite_backend.py fix(ccr): honor workspace dir for sqlite store (#1564) 2026-07-01 20:25:14 -05:00
test_ccr_tool_always_on.py fix(ccr): make headroom_retrieve a hash-only full-content lookup (#1532) 2026-06-28 10:32:43 -07:00
test_ccr_tool_injection.py fix(ccr): make headroom_retrieve a hash-only full-content lookup (#1532) 2026-06-28 10:32:43 -07:00
test_claude_session_branch_compare.py Harden anthropic cache-mode replay stability 2026-04-05 16:11:39 -05:00
test_claude_session_mode_benchmark.py Harden cache validation reporting and TTL analysis 2026-04-06 20:11:21 -05:00
test_cli_dashboard.py feat(cli): add headroom dashboard and surface the dashboard URL (#1277) (#1292) 2026-06-22 19:05:38 -05:00
test_cli_doctor.py fix(claude): surface Remote Control proxy incompatibility (#1610) 2026-07-01 23:19:25 -05:00
test_cli_learn.py fix(learn): aggregate verbosity baselines across projects instead of overwriting (#1288) 2026-06-30 08:37:37 -05:00
test_cli_perf_format.py feat: measure and surface token throughput (tokens/sec) through the proxy (#983) 2026-06-17 09:42:38 -05:00
test_cli_proxy_embedding_server.py fix(cli): fall back gracefully when embedding-server sidecar is absent (#1206) 2026-06-23 07:47:51 -05:00
test_cli_proxy_env.py feat(content-router): lossless-first dispatch, cross-turn dedup, and A7 lossy-after-fold (#1818) 2026-07-06 08:32:06 -07:00
test_cli_proxy_improvements.py feat(proxy): add provider-only HTTP proxy (#1807) 2026-07-05 15:56:59 -07:00
test_cli_tools.py test: apply linux ruff formatting 2026-04-23 08:49:50 -05:00
test_cli_update.py feat(cli): add headroom update command and release banner (#1088) 2026-06-18 11:22:20 -05:00
test_code_aware_regressions.py fix: correct Go AST compression bugs and CODE_AWARE token accounting (#1668) 2026-07-07 11:36:49 -05:00
test_code_compressor_thread_safety.py test(code_compressor): add unsendable-panic repro and thread-local parser tests 2026-06-03 17:02:07 -05:00
test_codex_client_stamp.py fix(proxy): stamp X-Client: codex on Responses endpoint for unidentified callers (#1036) 2026-06-17 11:45:20 -05:00
test_codex_openai_contract_parity.py fix(proxy): restore Codex usage headers on WS and streaming SSE transports (#577) (#794) 2026-06-09 15:55:53 -05:00
test_codex_rate_limits.py fix(codex): poll /wham/usage for subscription limits (handshake no longer sends x-codex-* headers) (#924) 2026-06-12 17:03:14 -05:00
test_codex_responses_passthrough_bytes.py Wire OpenAI Responses output shaping (#1438) 2026-07-05 13:59:21 -07:00
test_codex_responses_waste_signals.py fix(codex): compute waste signals on the OpenAI Responses path (#898) 2026-06-12 17:10:29 -05:00
test_codex_ws_compression_scheduler.py perf(proxy): cap compression workers to CPU count (#1803) 2026-07-05 14:01:23 -07:00
test_compaction_markdown_kv.py feat: gated Markdown-KV compaction formatter (serialization-aware output) (#859) 2026-06-11 13:03:50 -05:00
test_compress_api.py chore: renormalize line endings to LF 2026-04-24 15:33:30 +02:00
test_compress_failure.py chore: renormalize line endings to LF 2026-04-24 15:33:30 +02:00
test_compression_cache.py refactor: DRY cache logic, add thread safety, fix Bash exclusion (#704) 2026-06-16 14:50:04 -05:00
test_compression_decision.py fix(proxy): surface CompressionDecision.passthrough_reason in tags 2026-05-15 14:40:00 -07:00
test_compression_determinism.py Compress Codex Responses payloads 2026-05-10 17:27:47 -07:00
test_compression_fidelity_regression.py test(evals): add offline fidelity regression gate (recall-based, zero-model) (#1187) 2026-06-22 22:53:59 -05:00
test_compression_observability.py chore(telemetry): remove Supabase anonymous beacon; fix contact domain to headroomlabs.ai (#1526) 2026-06-27 22:48:26 -07:00
test_compression_policy.py fix(policy): correct warm-cache penalty in net_mutation_gain to (S + dT) (#903) 2026-06-12 17:14:30 -05:00
test_compression_policy_toin_gate.py fix(transforms): F2.2 c2/3 — wire toin_read_only gate + extend policy_selected log 2026-05-06 14:37:33 -07:00
test_compression_safety_rails.py feat: compression safety rails — error-output protection, pipeline circuit breaker, library inflation guard (#851) 2026-06-11 12:55:13 -05:00
test_compression_store.py fix(ccr): make headroom_retrieve a hash-only full-content lookup (#1532) 2026-06-28 10:32:43 -07:00
test_compression_summary.py Add compression summaries, multi-provider headers, Dockerfile fix 2026-02-18 16:54:20 -08:00
test_compression_summary_eval.py Add compression summaries, multi-provider headers, Dockerfile fix 2026-02-18 16:54:20 -08:00
test_compression_summary_hard_eval.py fix(tests): stop module-level dotenv loaders from polluting os.environ during pytest collection 2026-04-26 09:15:37 -07:00
test_compression_summary_integration.py fix(tests): stop module-level dotenv loaders from polluting os.environ during pytest collection 2026-04-26 09:15:37 -07:00
test_compression_summary_tool_eval.py fix(tests): stop module-level dotenv loaders from polluting os.environ during pytest collection 2026-04-26 09:15:37 -07:00
test_compression_units.py fix(compression): reject lossy unmarked tool output in unit router path (#1479) 2026-06-30 16:30:12 -05:00
test_compressor_config_exposure.py feat: compression extraction — Rust knob exposure, CCR hardening, traffic audits (#818) 2026-06-16 20:21:13 -07:00
test_config.py feat: attribute reread waste to over-compression via marker check (#901) 2026-06-13 10:43:35 -05:00
test_content_router_exclude_tools.py fix(proxy): add --protect-tool-results to prevent lossy compression of exact-output Bash results (#1374) 2026-06-26 12:22:04 -05:00
test_content_router_tool_role_reversibility.py fix(transforms): gate tool string output from lossy compression (#1307) (#1387) 2026-06-25 13:43:53 -05:00
test_copilot_auth.py fix(copilot): normalize subscription routing host (#1836) 2026-07-06 06:23:48 -07:00
test_copilot_linux_secret.py fix(copilot): support subscription auth through Headroom 2026-06-02 21:24:47 -07:00
test_copilot_macos_keychain.py fix(copilot): support subscription auth through Headroom 2026-06-02 21:24:47 -07:00
test_copilot_quota.py chore: renormalize line endings to LF 2026-04-24 15:33:30 +02:00
test_copilot_subscription_smoke.py fix: support Copilot Business subscription auth (#641) 2026-06-12 20:46:38 -05:00
test_corrupt_golden_bytes_recovery.py fix(proxy): fail-open on corrupt golden bytes instead of RuntimeError (#603) 2026-06-04 18:19:06 -07:00
test_cortex_code_compression.py feat(providers): add Cortex Code (Snowflake CoCo) as a supported agent (#1190) 2026-06-21 22:18:47 -07:00
test_cost_tracker_counterfactual.py fix(proxy): make budget enforcement actually work (#885) 2026-06-15 10:22:27 -05:00
test_critical_fixes.py fix: B5 — TOIN observation-only refactor + per-tenant aggregation key 2026-05-02 16:24:03 -07:00
test_critical_gaps.py fix(ccr): make headroom_retrieve a hash-only full-content lookup (#1532) 2026-06-28 10:32:43 -07:00
test_cross_turn_cache_safety.py fix(proxy): freeze must forward cached (compressed) prefix byte-identical — stop token-mode cache busting (#1850) 2026-07-06 14:54:39 -07:00
test_cross_turn_dedup.py feat(content-router): lossless-first dispatch, cross-turn dedup, and A7 lossy-after-fold (#1818) 2026-07-06 08:32:06 -07:00
test_custom_base_passthrough_telemetry.py fix(codex): OpenCode Zen telemetry attribution (#1648) 2026-07-07 11:35:21 -05:00
test_dashboard_agent_usage.py feat: add dashboard agent usage stats (#814) 2026-06-12 14:12:22 -05:00
test_dashboard_cache_lifetime_playwright.py fix(proxy): persist lifetime cache-read savings across restarts (#1665) 2026-07-07 11:36:07 -05:00
test_dashboard_cache_net_playwright.py feat(dashboard): surface compression-vs-cache net impact in Prefix Cache panel (#913) 2026-06-12 23:43:49 -05:00
test_dashboard_cache_ttl_playwright.py fix(proxy): subtract cache write premiums from net savings (#1800) 2026-07-07 23:24:41 -05:00
test_dashboard_token_savings.py fix(dashboard): align token savings headline denominator (#1653) 2026-07-01 23:31:32 -05:00
test_debug_dump_gating.py feat(security): pilot hardening — stateless guarantee, model pinning, CI security gate (#1515) 2026-06-27 17:44:10 -07:00
test_docker_compose_persistence.py fix(docker): persist headroom workspace in compose (#1839) 2026-07-06 08:35:06 -07:00
test_evals_cjk_tokenization.py fix(evals): CJK-aware F1 tokenization + token estimation (#1527) 2026-06-30 14:27:25 -05:00
test_evals_datasets.py chore: renormalize line endings to LF 2026-04-24 15:33:30 +02:00
test_evals_metrics.py feat(evals): add zero-cost tool schema compaction integrity eval (#817) 2026-06-10 16:03:42 -05:00
test_exceptions.py chore: renormalize line endings to LF 2026-04-24 15:33:30 +02:00
test_force_kompress_all.py feat(proxy): add --force-kompress-all to route all content through kompress-v2-base (#1613) 2026-06-30 15:30:22 -07:00
test_forwarded_headers.py fix(proxy): F4 — trust X-Forwarded-* only behind allow-listed gateway 2026-05-06 14:37:09 -07:00
test_fsutil.py fix(io): use UTF-8 with locale fallback and preserve line endings on config/text I/O (#1498) 2026-06-28 13:18:47 -07:00
test_gemini_compression_offload.py fix(gemini): offload compression to the executor (#1382) 2026-06-26 12:25:15 -05:00
test_gemini_function_response_waste.py fix(gemini): surface functionResponse payloads to waste-signal detection (#897) 2026-06-12 17:09:20 -05:00
test_google_multimodal.py fix: correct preserved-entry index mapping in Gemini content round-trip (#836) 2026-06-10 21:10:56 -05:00
test_google_multimodal_e2e.py Add E2E tests for Google multimodal content preservation 2026-01-24 21:01:25 -08:00
test_graph.py chore: renormalize line endings to LF 2026-04-24 15:33:30 +02:00
test_graph_tokensave.py feat(wrap): make tokensave the primary coding-task compressor, Serena the backup (#1230) 2026-06-25 16:55:37 -05:00
test_h2_stream_reset_retry.py fix(proxy): retry HTTP/2 stream resets instead of 502ing (#1645) 2026-07-07 11:31:06 -05:00
test_handler_outcome_tag_invariant.py refactor(proxy): MemoryRanker + ImageCompressionDecision + branch-aware version-sync 2026-05-19 12:13:09 -05:00
test_header_isolation.py fix: A5 — strip x-headroom-* from upstream-bound headers (P5-49) 2026-05-02 09:35:27 -07:00
test_hf_revision_pinning.py feat(security): pilot hardening — stateless guarantee, model pinning, CI security gate (#1515) 2026-06-27 17:44:10 -07:00
test_hnsw_only.py Add bounded memory support to HNSWVectorIndex with LRU eviction 2026-02-01 21:12:06 -08:00
test_hooks.py Add Compression Hooks — extension points for SaaS and advanced customization 2026-02-19 08:17:30 -08:00
test_huggingface_tokenizer_timeout.py fix(proxy): bound HF tokenizer load and offload token counting off event loop (#1738) 2026-07-07 12:46:26 -05:00
test_image_compression.py Skip image tests when Pillow not installed (CI fix) 2026-04-09 16:24:15 -07:00
test_image_compression_decision.py refactor(proxy): MemoryRanker + ImageCompressionDecision + branch-aware version-sync 2026-05-19 12:13:09 -05:00
test_image_compression_offload.py perf(proxy): offload image compression off event loop (#1612) 2026-07-02 23:17:47 -05:00
test_image_compressor.py fix: release image router models after compression 2026-04-29 01:45:27 -04:00
test_image_log_redaction.py fix(observability): G3 remediation — bound cardinality + wire dead metrics 2026-05-24 10:41:56 -07:00
test_image_ocr_api_compat.py fix: PR #372 — restore [image] extra on Python 3.13 via rapidocr 3.x adapter 2026-05-04 08:20:01 -07:00
test_issue_728_empty_tools_injection.py fix(proxy): preserve byte-faithful Anthropic tool forwarding (#1222) 2026-06-21 10:07:29 -07:00
test_issue_746_tool_search.py fix: preserve Claude Code tool-search deferral through the proxy (#746) (#753) 2026-06-08 11:20:48 -07:00
test_issue_1601_remote_control_gate.py fix(claude): surface Remote Control proxy incompatibility (#1610) 2026-07-01 23:19:25 -05:00
test_kompress_must_keep.py fix(kompress): hard override keeps must-keep tokens regardless of model score (#1400) 2026-06-26 14:15:37 -05:00
test_kompress_preload_deferral.py fix(proxy): make Kompress eager preload cache-only so a cold cache can't block startup (#783) 2026-06-11 12:53:03 -05:00
test_kompress_request_nonblocking.py fix(proxy): fail open when kompress saturation would exhaust pre-upstream budget (#1430) 2026-06-30 13:41:22 -05:00
test_lean_ctx_installer.py feat: add lean-ctx context tool support 2026-05-11 17:54:17 -04:00
test_litellm_optional.py fix(deps): make litellm optional on Python 3.14 (#956) (#993) 2026-06-16 21:11:12 -05:00
test_local_backend_init_race.py fix(memory): singleflight LocalBackend init to stop cold-start races (#1691) 2026-07-02 16:00:55 -07:00
test_log_compressor.py fix: improve error handling and add comprehensive test coverage 2026-01-27 16:08:36 -08:00
test_lossless_excluded_compaction.py feat(content-router): lossless-excluded compaction (grep/log/json) + enable in coding/general personas (#1762) 2026-07-03 12:09:05 -07:00
test_lossless_first_dispatch.py feat(content-router): lossless-first dispatch, cross-turn dedup, and A7 lossy-after-fold (#1818) 2026-07-06 08:32:06 -07:00
test_lossless_mode.py fix(content-router): token-measure lossless folds at the acceptance gate (#1772) 2026-07-03 15:04:07 -07:00
test_lossless_then_lossy.py feat(content-router): lossless-first dispatch, cross-turn dedup, and A7 lossy-after-fold (#1818) 2026-07-06 08:32:06 -07:00
test_mcp_registry_opencode.py fix(opencode): write local MCP config (#1381) 2026-06-26 12:23:54 -05:00
test_mcp_stub.py fix(codex): stop pinning Codex memory MCP to one project db (#1269) 2026-06-23 07:49:07 -05:00
test_memory_auto_tail.py fix(memory): READ-ONLY framing + fail-closed unresolved-project fallback 2026-05-26 14:32:08 -07:00
test_memory_bridge.py fix(ccr): skip Anthropic marker emission when tool injection is deferred (#1273) 2026-06-23 12:48:05 -05:00
test_memory_decision.py fix(proxy): MemoryDecision contract + 3 bypass bugs + drop 500-char query cap 2026-05-19 11:13:52 -05:00
test_memory_eval.py Add hierarchical memory system with graph + vector storage 2026-01-26 21:58:47 -08:00
test_memory_handler_concurrent_init.py fix(ccr): skip Anthropic marker emission when tool injection is deferred (#1273) 2026-06-23 12:48:05 -05:00
test_memory_handler_native_ops.py fix(memory): expose memory IDs in auto-tail + memory_list tool + ID-usage guidance 2026-05-19 22:10:42 -05:00
test_memory_handler_project_isolation.py fix(memory): READ-ONLY framing + fail-closed unresolved-project fallback 2026-05-26 14:32:08 -07:00
test_memory_injection_budget.py fix(proxy): MemoryDecision contract + 3 bypass bugs + drop 500-char query cap 2026-05-19 11:13:52 -05:00
test_memory_integration.py Add centralized ML model configuration 2026-02-01 23:47:42 -08:00
test_memory_invariants.py fix(proxy): MemoryDecision contract + 3 bypass bugs + drop 500-char query cap 2026-05-19 11:13:52 -05:00
test_memory_query.py fix(proxy): MemoryDecision contract + 3 bypass bugs + drop 500-char query cap 2026-05-19 11:13:52 -05:00
test_memory_ranker.py Merge remote-tracking branch 'origin/main' into refactor/memory-tool-handles 2026-05-19 22:17:20 -05:00
test_memory_storage_router.py fix(memory): READ-ONLY framing + fail-closed unresolved-project fallback 2026-05-26 14:32:08 -07:00
test_memory_sync.py fix(memory): use ONNX embedder for wrap --memory sync (#1092) (#1262) 2026-06-21 20:08:12 -07:00
test_memory_system.py Fix CI: guard starlette imports, asyncio.run(), deprecate datetime.utcnow() 2026-02-19 11:03:24 -08:00
test_memory_tool_mode.py fix: integrate B6+B7 — fix cross-test contamination + injector mock parity 2026-05-02 17:05:58 -07:00
test_memory_tool_session_sticky.py fix: A7 — memory tool injection session-sticky for both Anthropic and OpenAI 2026-05-02 10:11:27 -07:00
test_memory_tracker.py Add memory observability system (Phase 1) 2026-02-01 19:49:53 -08:00
test_memory_tracker_integration.py Add wrap commands for Codex/Cursor/Aider with rtk instructions, fix savings metrics 2026-03-13 22:02:47 -07:00
test_memory_usage_integration.py fix(tests): stop module-level dotenv loaders from polluting os.environ during pytest collection 2026-04-26 09:15:37 -07:00
test_memory_wrapper.py test: apply linux ruff formatting 2026-04-23 08:49:50 -05:00
test_mid_turn_steering.py fix(proxy): queue mid-turn user messages on non-Bedrock streaming path (#1377) 2026-06-26 12:22:48 -05:00
test_ml_model_registry_lifecycle.py feat: headroom wrap opencode / unwrap opencode CLI (#1105) 2026-06-22 11:07:12 -05:00
test_models.py fix(gemini): resolve Google model capabilities through ModelRegistry (#1276) 2026-06-26 23:31:56 -05:00
test_netcost_gate.py feat(policy): decay P_alive from idle time near cache TTL (#856 P3b) (#1028) 2026-06-18 11:15:40 -05:00
test_network_diff_capture.py feat: add differential network capture harness (#761) 2026-06-08 22:18:31 -07:00
test_no_ccr_lossy.py feat(content-router): lossless-first dispatch, cross-turn dedup, and A7 lossy-after-fold (#1818) 2026-07-06 08:32:06 -07:00
test_oauth_bearer_routing.py style: fix ruff lint/format and mypy errors for CI 3.12 pass 2026-04-20 13:23:20 -05:00
test_observability_metrics.py feat: add OTEL observability core 2026-04-09 21:20:34 -05:00
test_observability_tracing.py feat: add OTEL observability core 2026-04-09 21:20:34 -05:00
test_onnx_runtime.py fix(onnx): reduce retained cpu memory 2026-04-20 22:31:48 +00:00
test_openai_beta_session_sticky.py fix: A6 — anthropic-beta and openai-beta deterministic merge + session-sticky 2026-05-02 09:53:37 -07:00
test_openai_codex_routing.py fix(proxy): strip Codex lite header on the HTTP /responses path (#1663) 2026-07-01 23:54:09 -05:00
test_openai_codex_ws_lifecycle.py fix(opencode): use local MCP config (#1383) 2026-07-06 06:22:15 -07:00
test_openai_codex_ws_timings.py fix(proxy): restore Codex usage headers on WS and streaming SSE transports (#577) (#794) 2026-06-09 15:55:53 -05:00
test_openai_max_completion_tokens.py fix(proxy/openai): translate max_tokens -> max_completion_tokens on chat path (#1774) 2026-07-07 23:08:11 -05:00
test_openai_responses_compression_units.py feat(content-router): lossless-excluded compaction (grep/log/json) + enable in coding/general personas (#1762) 2026-07-03 12:09:05 -07:00
test_openai_responses_context_compaction.py fix(proxy): preserve Responses memory continuations with store=false (#1103) 2026-06-22 22:56:30 -05:00
test_openai_responses_output_shaper.py Wire OpenAI Responses output shaping (#1438) 2026-07-05 13:59:21 -07:00
test_openai_responses_t3_replay_regression.py Rename tool output compression parallelism env 2026-06-04 14:54:21 +10:00
test_openai_streaming_backend.py Commit message: 2026-03-13 16:49:18 -07:00
test_output_savings.py Wire OpenAI Responses output shaping (#1438) 2026-07-05 13:59:21 -07:00
test_output_savings_cli.py feat: output-token reduction — verbosity shaper, per-user learning, counterfactual savings (#965) 2026-06-16 21:06:43 -07:00
test_output_shaper.py fix(opencode): use local MCP config (#1383) 2026-07-06 06:22:15 -07:00
test_owned_asset_encoding.py fix: decode/encode owned config, state and template assets as UTF-8 2026-06-03 03:25:42 +08:00
test_package_init_lazy.py Pin ORT dylib on Windows; init Python logging (#1010) 2026-06-23 07:46:24 -05:00
test_parser.py fix(agno): tolerate streaming tool-call SDK objects in parser (#1312) (#1336) 2026-06-24 09:52:15 -05:00
test_paths.py feat: add lean-ctx context tool support 2026-05-11 17:54:17 -04:00
test_paths_backward_compat.py fix(wrap): track shared proxy clients with markers (#877) 2026-06-11 19:42:43 -05:00
test_perf_cli_filtering.py fix(perf): surface RTK/CLI context-tool savings in perf and the session card (#1433) 2026-06-25 21:13:36 -07:00
test_pid_alive.py fix(install): use Windows-safe PID liveness probe in runtime_status (#1544) (#1560) 2026-07-01 17:13:11 -05:00
test_pipeline.py test: apply linux ruff formatting 2026-04-23 08:49:50 -05:00
test_plugin_manifests.py chore: renormalize line endings to LF 2026-04-24 15:33:30 +02:00
test_plugins_hermes_retrieve.py fix(ccr): make headroom_retrieve a hash-only full-content lookup (#1532) 2026-06-28 10:32:43 -07:00
test_pr208_changes.py fix(proxy): defer file logging install to create_app() 2026-04-28 15:28:33 -07:00
test_pricing.py feat(pricing): add DeepSeek V4 model pricing (deepseek-v4-flash, deepseek-v4-pro) (#1168) 2026-06-24 09:44:27 -05:00
test_pricing_litellm.py fix(pricing): resolve MiniMax-M3 (provider prefix + pre-registration) (#1186) 2026-06-30 08:36:36 -05:00
test_probe_recorder.py feat: probe-based retention scoring of recorded compression events (#862) 2026-06-11 13:02:36 -05:00
test_prometheus_stage_timing_concurrency.py perf(proxy): reduce lock contention on stage-timing metrics 2026-04-20 22:08:09 +07:00
test_provider_aider.py feat(proxy): per-project savings breakdown on the dashboard (claude, codex, aider, copilot, cursor) (#803) 2026-06-10 21:04:45 -05:00
test_provider_claude.py chore: renormalize line endings to LF 2026-04-24 15:33:30 +02:00
test_provider_codex_install.py fix(codex): poll /wham/usage for subscription limits (handshake no longer sends x-codex-* headers) (#924) 2026-06-12 17:03:14 -05:00
test_provider_codex_runtime.py fix(ci): update tests to assert absence of requires_openai_auth (bug 3, #406) 2026-05-06 12:18:47 -05:00
test_provider_codex_threads.py fix(codex): retag thread providers so history menu stays whole across the proxy boundary (#1034) 2026-06-16 15:13:21 -05:00
test_provider_copilot_wrap.py fix: respect COPILOT_PROVIDER_TYPE env var when provider_type is auto (#549) 2026-06-26 12:04:09 -05:00
test_provider_cortex_code.py feat(providers): add Cortex Code (Snowflake CoCo) as a supported agent (#1190) 2026-06-21 22:18:47 -07:00
test_provider_cursor.py feat(proxy): per-project savings breakdown on the dashboard (claude, codex, aider, copilot, cursor) (#803) 2026-06-10 21:04:45 -05:00
test_provider_model_fallback.py feat(anthropic): add Claude 5 family pricing & align current rates (#1767) 2026-07-03 12:09:35 -07:00
test_provider_openclaw_wrap.py fix(cli): proxy/perf/wrap UX cleanup + perf --hours correctness 2026-05-07 16:43:35 -07:00
test_provider_package_init.py chore: renormalize line endings to LF 2026-04-24 15:33:30 +02:00
test_provider_proxy_routes.py fix(codex): OpenCode Zen telemetry attribution (#1648) 2026-07-07 11:35:21 -05:00
test_provider_registry.py fix(mcp): surface dead proxy state (#1786) 2026-07-07 23:18:57 -05:00
test_provider_registry_extended.py fix(bedrock): route ARNs via converse, named AWS profiles, and au. re… (#1456) 2026-07-02 22:51:05 -05:00
test_providers_opencode_config.py fix(opencode): expose headroom/* models in injected provider config (#1716) 2026-07-03 15:20:14 -07:00
test_providers_opencode_install.py fix(opencode): write local MCP config (#1381) 2026-06-26 12:23:54 -05:00
test_proxy_anthropic_cache_stability.py fix: preserve anthropic passthrough tool order (#1427) 2026-06-30 08:38:51 -05:00
test_proxy_anthropic_compression_diagnostics.py fix: A3 — byte-faithful Python forwarders; serialize canonical only when mutated 2026-05-02 09:02:10 -07:00
test_proxy_anthropic_model_sanitization.py fix(proxy): strip 1m model suffix before upstream forwarding (#1840) 2026-07-06 08:33:45 -07:00
test_proxy_batch_integration.py Add multi-provider batch API support with CCR post-processing 2026-01-24 11:41:18 -08:00
test_proxy_byte_faithful_forwarding.py fix(proxy): preserve streaming passthrough beta headers (#1783) 2026-07-07 23:16:59 -05:00
test_proxy_cache_ttl_metrics.py fix(proxy): subtract cache write premiums from net savings (#1800) 2026-07-07 23:24:41 -05:00
test_proxy_ccr.py fix(ccr): make headroom_retrieve a hash-only full-content lookup (#1532) 2026-06-28 10:32:43 -07:00
test_proxy_codex_route_aliases.py fix(proxy): stamp X-Client: codex on Responses endpoint for unidentified callers (#1036) 2026-06-17 11:45:20 -05:00
test_proxy_compress_endpoint.py fix(proxy): offload /v1/compress to the compression executor to stop blocking the loop (#1501) 2026-06-28 13:14:20 -07:00
test_proxy_compression_executor.py perf(proxy): cap compression workers to CPU count (#1803) 2026-07-05 14:01:23 -07:00
test_proxy_compression_headers.py fix: strip accept-encoding from forwarded proxy headers 2026-04-15 11:40:11 -07:00
test_proxy_copilot_auth_hooks.py fix(proxy): thread tags into 13 outcome sites + synth /v1/models + free-fn _extract_tags 2026-05-15 19:15:48 -07:00
test_proxy_cors.py fix(proxy): scope CORS to loopback + gate operator/content endpoints (#1226) 2026-06-21 00:50:55 -07:00
test_proxy_count_tokens_integration.py Add multi-provider batch API support with CCR post-processing 2026-01-24 11:41:18 -08:00
test_proxy_dashboard_stats_cache.py fix(dashboard): deduplicate repeated savings metrics (#1804) 2026-07-05 16:00:25 -07:00
test_proxy_debug_endpoints.py fix(security): block DNS-rebinding on /debug/* and /stats/reset via Host-header allowlist (#605) 2026-06-11 12:58:33 -05:00
test_proxy_disable_kompress.py feat: add --disable-kompress-fallback to restore legacy PASSTHROUGH fallback (#1185) 2026-06-22 22:51:55 -05:00
test_proxy_eager_preload_bind.py fix(proxy): bind before eager preload so a hung compressor load can't block startup (#1500) 2026-06-28 13:15:50 -07:00
test_proxy_gemini_integration.py Add multi-provider batch API support with CCR post-processing 2026-01-24 11:41:18 -08:00
test_proxy_gemini_native_integration.py Add multi-provider batch API support with CCR post-processing 2026-01-24 11:41:18 -08:00
test_proxy_google_cloudcode_route_aliases.py chore: format proxy route tests with ruff 2026-04-21 19:38:32 +00:00
test_proxy_handler_helpers.py fix(proxy): freeze must forward cached (compressed) prefix byte-identical — stop token-mode cache busting (#1850) 2026-07-06 14:54:39 -07:00
test_proxy_handlers_batch.py fix(proxy): bound HF tokenizer load and offload token counting off event loop (#1738) 2026-07-07 12:46:26 -05:00
test_proxy_hardening.py feat(proxy): pilot hardening — inbound auth, security headers, audit log, air-gap switch (#1537) 2026-06-28 12:09:00 -07:00
test_proxy_healthchecks.py fix(proxy): scope CORS to loopback + gate operator/content endpoints (#1226) 2026-06-21 00:50:55 -07:00
test_proxy_hooks_regression.py test(proxy): align hooks regression test with Bug 3 recount semantics 2026-04-30 13:26:53 -07:00
test_proxy_loop_exception_health.py fix(proxy): surface codex websocket loop failures in livez (#1727) 2026-07-03 13:33:55 -07:00
test_proxy_loopback_gating.py test(proxy): assert CCR hash route guard blocks valid hashes (#1480) 2026-06-26 15:29:33 -07:00
test_proxy_memory_integration.py test(memory): live tests for delete-via-[id] + dedup-hint mechanism 2026-05-19 22:18:15 -05:00
test_proxy_mode_benchmark.py Rebrand proxy modes to token/cache and harden cache-mode stability 2026-04-04 14:32:07 -05:00
test_proxy_modes.py Harden cache-mode immutability for OpenAI and fix stats mode reporting 2026-04-04 14:36:29 -05:00
test_proxy_openai_cache_key_integration.py fix(proxy): include system/tools/sampling in cache key (#1473) 2026-06-30 16:29:20 -05:00
test_proxy_openai_cache_stability.py fix(proxy): freeze must forward cached (compressed) prefix byte-identical — stop token-mode cache busting (#1850) 2026-07-06 14:54:39 -07:00
test_proxy_openai_responses_bypass.py fix: per-project memory storage so projects can no longer bleed memories (GH #462) 2026-05-13 15:27:41 -07:00
test_proxy_openai_responses_integration.py fix: stabilize codex compression, stats, and proxy lifecycle 2026-05-09 13:47:53 -07:00
test_proxy_package_init.py fix(proxy): lazy-import server to avoid fastapi crash (#442) 2026-06-10 12:44:23 -05:00
test_proxy_passthrough_integration.py fix: B1 — retire ICM, RollingWindow, scoring, relevance + dependents 2026-05-02 12:23:17 -07:00
test_proxy_passthrough_transient_retry.py fix(proxy): retry passthrough on transient upstream connection close (#1513) 2026-07-06 18:35:39 -05:00
test_proxy_per_provider_kompress.py feat(proxy): per-provider Kompress enable/disable (#1119) 2026-06-22 15:07:10 -05:00
test_proxy_pipeline_lifecycle.py fix(proxy): cancel retry backoff on shutdown (#1834) 2026-07-06 06:24:47 -07:00
test_proxy_project_savings.py fix(proxy): persist lifetime cache-read savings across restarts (#1665) 2026-07-07 11:36:07 -05:00
test_proxy_retry_429.py fix(proxy): cancel retry backoff on shutdown (#1834) 2026-07-06 06:24:47 -07:00
test_proxy_savings_history.py fix(proxy): persist lifetime cache-read savings across restarts (#1665) 2026-07-07 11:36:07 -05:00
test_proxy_scalability.py feat(proxy): add provider-only HTTP proxy (#1807) 2026-07-05 15:56:59 -07:00
test_proxy_semantic_cache_key.py fix(proxy): include system/tools/sampling in cache key (#1473) 2026-06-30 16:29:20 -05:00
test_proxy_semantic_cache_key_integration.py fix(proxy): include system/tools/sampling in cache key (#1473) 2026-06-30 16:29:20 -05:00
test_proxy_stats_recent_requests.py fix(proxy): scope CORS to loopback + gate operator/content endpoints (#1226) 2026-06-21 00:50:55 -07:00
test_proxy_streaming_ratelimit_headers.py fix(proxy): forward request-id headers on the streaming path (#1100) (#1258) 2026-06-23 07:48:34 -05:00
test_proxy_streaming_request_logger.py feat(proxy): log compressed messages alongside original request (#261) 2026-06-11 19:02:54 -05:00
test_proxy_streaming_resilience.py style: fix linting and formatting issues 2026-06-03 20:08:26 +05:30
test_proxy_system_prompt_immutable.py fix: A3 — byte-faithful Python forwarders; serialize canonical only when mutated 2026-05-02 09:02:10 -07:00
test_proxy_telemetry_env.py chore(telemetry): remove Supabase anonymous beacon; fix contact domain to headroomlabs.ai (#1526) 2026-06-27 22:48:26 -07:00
test_proxy_warmup.py fix: align docs and prune dead compatibility surfaces 2026-05-09 14:07:59 -07:00
test_quality_retention.py feat(rust): SmartCrusher PR4 — lossless-first default + CCR-Dropped restoration 2026-04-27 16:30:22 -07:00
test_quota_registry.py chore: renormalize line endings to LF 2026-04-24 15:33:30 +02:00
test_read_maturation.py feat(read-maturation): activity-based hold-back Read maturation (Mechanism B) (#1068) 2026-06-22 22:52:42 -05:00
test_read_maturation_handler_nobust.py feat(read-maturation): activity-based hold-back Read maturation (Mechanism B) (#1068) 2026-06-22 22:52:42 -05:00
test_realignment_live_multi_turn.py fix(security): allowlist GitGuardian-flagged test fixtures 2026-05-02 18:33:22 -07:00
test_release_version.py fix(windows): pin UTF-8 encoding on text-mode subprocess calls (#1311) 2026-06-23 12:52:49 -05:00
test_release_workflows.py fix(build): enable Intel macOS pip installs via ort-load-dynamic (#1538) 2026-07-06 18:33:34 -05:00
test_relevance.py feat(relevance): weight BM25 score_batch by corpus IDF (#646) 2026-06-05 14:15:44 -08:00
test_relevance_extra.py feat(rust): retire python smart_crusher, ship rust-only via pyo3 2026-04-27 00:52:21 -07:00
test_relevance_split.py feat(content-router): lossless-first dispatch, cross-turn dedup, and A7 lossy-after-fold (#1818) 2026-07-06 08:32:06 -07:00
test_reporting.py feat: detect re-served tool results as over-compression waste signal (#854) 2026-06-11 13:07:04 -05:00
test_request_outcome.py fix(proxy): make budget enforcement actually work (#885) 2026-06-15 10:22:27 -05:00
test_reread_attribution.py feat: attribute reread waste to over-compression via marker check (#901) 2026-06-13 10:43:35 -05:00
test_responses_pyo3_compression.py fix: align docs and prune dead compatibility surfaces 2026-05-09 14:07:59 -07:00
test_responses_ws_pyo3_compression.py fix: align docs and prune dead compatibility surfaces 2026-05-09 14:07:59 -07:00
test_rtk_installer.py chore: bump RTK from v0.28.2 to v0.42.4 (#1362) 2026-06-26 12:39:48 -05:00
test_rtk_session_savings.py fix(proxy): stop rtk stat failures from corrupting session baseline (#1693) 2026-07-07 12:21:33 -05:00
test_runtime_env.py feat(proxy): hot-reload live env knobs so a reused proxy picks them up without a restart (#1090) 2026-06-18 09:50:50 -07:00
test_rust_core_smoke.py fix: A0 — fail-loud rust core deployment smoke test 2026-05-02 17:52:37 -07:00
test_savings_ledger.py feat(savings): durable savings ledger + headroom savings command (#1127) 2026-06-22 18:47:57 -05:00
test_search_compressor.py fix: improve error handling and add comprehensive test coverage 2026-01-27 16:08:36 -08:00
test_security_validations.py Fix security vulnerabilities in memory and CCR systems 2026-02-04 12:05:50 -08:00
test_session_probes.py feat: probe-based retention scoring of recorded compression events (#862) 2026-06-11 13:02:36 -05:00
test_shared_context.py Add SharedContext for multi-agent, rewrite README, fix proxy cleanup 2026-03-17 16:31:04 -07:00
test_signals_keyword_parity.py chore(transforms): retire dead text_compressor module (Phase 3e.3) 2026-04-29 21:14:36 -07:00
test_smart_crusher_toin_attachment.py fix(smart-crusher): honor enable_ccr_marker on the opaque-blob path (#1130) 2026-06-22 11:11:46 -05:00
test_sqlite_graph_store.py Add SQLiteGraphStore for bounded, persistent graph storage 2026-02-01 20:48:57 -08:00
test_sqlite_vector_index.py fix(memory): batch onnx embeddings and sqlite-vec ops 2026-04-24 09:49:28 +00:00
test_sse_thinking_blocks.py fix(streaming): preserve server_tool_use sse blocks (#1826) 2026-07-07 23:25:58 -05:00
test_sse_utf8_split.py [codex] fix(proxy): parse CRLF SSE event terminators (#649) 2026-06-10 21:16:00 -05:00
test_ssl_context.py fix(tls): add HEADROOM_TLS_STRICT=0 toggle for corporate SSL inspection (#1308) (#1341) 2026-06-24 09:51:30 -05:00
test_stage_timer.py feat(proxy): add per-stage timings for Codex WS and Anthropic HTTP paths 2026-04-20 22:01:41 +07:00
test_startup_log_noise.py fix: suppress LiteLLM provider banner before import (#874) 2026-06-11 15:10:20 -05:00
test_stateless_toin.py feat(security): pilot hardening — stateless guarantee, model pinning, CI security gate (#1515) 2026-06-27 17:44:10 -07:00
test_stateless_writers.py feat(security): pilot hardening — stateless guarantee, model pinning, CI security gate (#1515) 2026-06-27 17:44:10 -07:00
test_storage_backends.py test: apply linux ruff formatting 2026-04-23 08:49:50 -05:00
test_strands_tokenizer.py Count Strands reasoningContent, image, document, video tokens (#111 follow-up) 2026-04-08 17:31:00 -07:00
test_streaming_usage_parser.py fix(content-router,proxy): cache-safe text-block compression and online streaming usage 2026-05-08 15:20:54 -07:00
test_subscription_base.py chore: renormalize line endings to LF 2026-04-24 15:33:30 +02:00
test_subscription_client.py chore: renormalize line endings to LF 2026-04-24 15:33:30 +02:00
test_subscription_tracker.py fix(subscription): only reset 5h contribution on real rollover, not API jitter (#1255) 2026-06-26 14:13:44 -05:00
test_subscription_tracker_rtk_wired.py fix(proxy): stop rtk stat failures from corrupting session baseline (#1693) 2026-07-07 12:21:33 -05:00
test_subscription_window_render.py fix: PR #281 — synthesize 5h subscription window after Anthropic reset 2026-05-04 08:17:25 -07:00
test_tag_protection_integration.py Fix API integration test: use tool output not user message for tags 2026-03-26 11:46:55 -07:00
test_tag_protector_invariant.py fix: A9 — tag protector discards wrap on placeholder loss 2026-05-02 18:01:24 -07:00
test_telemetry.py chore(telemetry): remove Supabase anonymous beacon; fix contact domain to headroomlabs.ai (#1526) 2026-06-27 22:48:26 -07:00
test_telemetry_context.py refactor(telemetry): centralize stack slug validation + cardinality cap 2026-04-17 18:42:41 +02:00
test_telemetry_warning.py chore(telemetry): remove Supabase anonymous beacon; fix contact domain to headroomlabs.ai (#1526) 2026-06-27 22:48:26 -07:00
test_text_compressors.py chore(transforms): retire dead text_compressor module (Phase 3e.3) 2026-04-29 21:14:36 -07:00
test_toin.py fix: align docs and prune dead compatibility surfaces 2026-05-09 14:07:59 -07:00
test_toin_feedback.py fix(ccr): make headroom_retrieve a hash-only full-content lookup (#1532) 2026-06-28 10:32:43 -07:00
test_toin_fixes.py fix: B5 — TOIN observation-only refactor + per-tenant aggregation key 2026-05-02 16:24:03 -07:00
test_toin_full_integration.py fix: B5 — TOIN observation-only refactor + per-tenant aggregation key 2026-05-02 16:24:03 -07:00
test_toin_integration.py feat(rust): retire python smart_crusher, ship rust-only via pyo3 2026-04-27 00:52:21 -07:00
test_toin_observation_only.py fix: align docs and prune dead compatibility surfaces 2026-05-09 14:07:59 -07:00
test_toin_publish.py fix(toin): publish skip compression recommendations (#1782) 2026-07-07 23:14:54 -05:00
test_token_headroom_mode.py fix: complete /v1/responses compression telemetry, multi-frame WS, frozen-count cap 2026-05-07 14:50:03 -07:00
test_tokenizer.py chore: renormalize line endings to LF 2026-04-24 15:33:30 +02:00
test_tokenizer_count_offload.py fix(proxy): bound HF tokenizer load and offload token counting off event loop (#1738) 2026-07-07 12:46:26 -05:00
test_tokenizers.py fix(tokenizers): estimate oversized tool blobs instead of json.dumps on the loop (#1270) 2026-06-23 09:46:44 -05:00
test_tool_result_interceptors.py fix(proxy): register interceptor in explicit transforms list when HEADROOM_INTERCEPT_ENABLED (#1376) 2026-06-24 20:58:02 -05:00
test_transforms_content_detection.py fix(content-detector): detect and compress space-separated JSON objects (#1742) 2026-07-07 12:48:24 -05:00
test_transforms_content_router.py fix(transforms/content-router): route grep/log output away from HTML extractor (#1719) 2026-07-02 16:22:31 -07:00
test_transforms_log_compressor.py feat(rust): port log_compressor to Rust + bug fixes (Phase 3e.5) 2026-04-29 20:47:49 -07:00
test_transforms_package.py chore: renormalize line endings to LF 2026-04-24 15:33:30 +02:00
test_transforms_search_compressor.py fix(ccr): key Rust search/diff/log markers with explicit_hash (#852) 2026-06-11 13:08:05 -05:00
test_transforms_tabular.py fix(transforms): pass through ragged tables instead of misaligning columns (#1713) 2026-07-07 12:45:46 -05:00
test_update_check.py feat(cli): add headroom update command and release banner (#1088) 2026-06-18 11:22:20 -05:00
test_update_helpers.py feat(cli): add headroom update command and release banner (#1088) 2026-06-18 11:22:20 -05:00
test_utils.py test: add missing type hints to FakeProvider in test_utils (#631) 2026-06-10 21:15:16 -05:00
test_verbosity_controller.py feat: output-token reduction — verbosity shaper, per-user learning, counterfactual savings (#965) 2026-06-16 21:06:43 -07:00
test_verbosity_learn.py feat: output-token reduction — verbosity shaper, per-user learning, counterfactual savings (#965) 2026-06-16 21:06:43 -07:00
test_vertex_claude_compression.py fix(bedrock): route ARNs via converse, named AWS profiles, and au. re… (#1456) 2026-07-02 22:51:05 -05:00
test_ws_http_fallback.py fix(proxy): restore Codex usage headers on WS and streaming SSE transports (#577) (#794) 2026-06-09 15:55:53 -05:00
test_ws_memory_relay.py Fix CI lint errors and test failures 2026-04-14 18:23:06 -07:00
test_ws_session_registry.py feat(proxy): track Codex WS sessions and cancel relay tasks deterministically 2026-04-20 22:01:41 +07:00