headroom/tests
chopratejas 96a674f1b9 feat(proxy): add client (harness) identification — per-harness analytics across every handler
Cashes in the RequestOutcome refactor with a typed-field surface that
gives EVERY handler per-harness visibility — Codex / Claude Code /
aider / Cursor / Zed / opencode / DROID / antigravity / etc. — for one
field-add across the contract.

The one-field-add proof

Headroom went from "what fraction of OUR requests come from which
harness?" being unanswerable (handlers logged ad-hoc User-Agent strings
in heterogeneous tag dicts at 18 sites, with 9 of 18 not even
populating them) to one structured ``client: str | None`` value on
every observation flowing through the funnel. No new bookkeeping at
call sites; every handler picks it up via a single
``classify_client(headers)`` call at request entry.

Implementation

* New ``CLIENT_UA_MAP`` + ``classify_client()`` in
  ``headroom/proxy/auth_mode.py``. Substring match against
  User-Agent; ``X-Client`` header overrides UA. Returns ``str | None``
  so ``None`` is the loud "unidentified" signal rather than a silent
  empty bucket.
* New ``RequestOutcome.client: str | None = None`` field.
* Funnel updates (in ``outcome.py``):
  - Appends ``client=X`` to the PERF log line ONLY when set, so
    ``headroom perf --client X`` parsing stays clean for
    unidentified traffic (no bogus ``client=`` token).
  - Copies ``client`` into ``RequestLog.tags["client"]`` so the
    dashboard's existing tag-based filtering surfaces per-harness
    slicing with zero new columns.
* Every handler that constructs a RequestOutcome now passes
  ``client=client`` — wired across streaming.py (3 finalizers,
  with ``_finalize_stream_response`` gaining a new optional kwarg
  since it doesn't have direct access to headers), anthropic.py
  (6 sites), openai.py (8 sites including Codex WS), gemini.py
  (2 emitting sites), batch.py (5 sites).

Harnesses recognised

  Anthropic ecosystem:  claude-code, claude-cli, claude-vscode,
                        anthropic-cli
  OpenAI ecosystem:     codex-cli
  Editors:              cursor, zed
  AI coding harnesses:  aider, droid, opencode, github-copilot
  Other:                antigravity (Google experimental)

Adding a new client is a one-line edit to ``CLIENT_UA_MAP``.

Tests

* 8 new tests in ``test_request_outcome.py`` covering:
  - ``client`` field round-trips on the value type
  - ``classify_client`` against every recognised UA prefix
  - ``X-Client`` header override beats UA match
  - ``None`` for unknown traffic (the loud signal)
  - Funnel appends ``client=X`` to PERF when set
  - Funnel OMITS ``client=`` from PERF when None (no bogus empty)
  - Funnel stamps ``client`` into ``RequestLog.tags``
* All 228 existing tests still pass (full sweep across streaming,
  cache, Codex, Anthropic, OpenAI, Gemini, batch, auth-mode).
* ruff + ruff-format + mypy clean.

What's now true that wasn't before

Once this lands, the dashboard can answer:

* "Show me cache hit rate by harness"
  → ``GROUP BY tags.client FROM request_log``
* "Which harness contributes the most cache writes?"
  → same
* "Per-harness savings ratio"
  → same
* ``headroom perf --client codex`` / ``--client claude-code``
  → analyzer filters PERF log lines on ``client=X`` token

Zero new bookkeeping in handlers. Zero changes to Prometheus label
cardinality (kept the client dimension out of Prometheus on purpose —
the tags route is the right surface). The "what's our traffic split
by harness?" question is now answerable in three places (PERF log,
RequestLog tags, dashboard widgets that already filter on tags)
without any per-provider work.
2026-05-14 19:39:35 -07:00
..
cli Add Click-based CLI with memory management commands 2026-01-29 21:30:21 -08:00
fixtures/memory_tool_definitions fix: A7 — memory tool injection session-sticky for both Anthropic and OpenAI 2026-05-02 10:11:27 -07:00
integrations/test_strands feat: Add AWS Strands Agents SDK integration 2026-01-31 00:31:37 -08:00
parity fix: B1 — retire ICM, RollingWindow, scoring, relevance + dependents 2026-05-02 12:23:17 -07:00
test_cache fix: eliminate prefix cache busts from frozen count underestimation 2026-04-07 17:10:20 -07:00
test_cli feat: add lean-ctx context tool support 2026-05-11 17:54:17 -04:00
test_compression Remove LLMLingua: Kompress is the sole text compressor 2026-03-26 11:11:00 -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 style(ci): apply ruff format to bug-3 fix files 2026-05-06 12:23:10 -05:00
test_integrations fix: B1 — retire ICM, RollingWindow, scoring, relevance + dependents 2026-05-02 12:23:17 -07:00
test_learn fix: harden learn path handling across platforms 2026-05-09 15:45:26 -07:00
test_mcp_registry fix: register serena mcp during wrap 2026-05-09 23:05:59 -07:00
test_memory fix(memory): traffic_learner indexes system-reminder fragments as user preferences (refs #464) 2026-05-13 16:13:04 -07:00
test_providers style: match CI ruff formatting 2026-04-22 22:21:00 -05:00
test_proxy fix(proxy): strip cache_control before hashing turn_id 2026-04-23 16:04:57 +02: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_transforms fix: format Kompress tests for ruff 2026-05-12 16:47:11 -07: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
conftest.py fix: B1 — retire ICM, RollingWindow, scoring, relevance + dependents 2026-05-02 12:23:17 -07: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_responses_compression.py fix: complete /v1/responses compression telemetry, multi-frame WS, frozen-count cap 2026-05-07 14:50:03 -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 fix: B5 — TOIN observation-only refactor + per-tenant aggregation key 2026-05-02 16:24:03 -07:00
test_adaptive_sizer.py Diversity-aware SmartCrusher: keep unique items, compress text within 2026-03-25 23:57:24 -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 refactor(proxy): migrate Gemini + Anthropic non-streaming onto outcome funnel 2026-05-14 19:38:54 -07:00
test_anthropic_stage_timings.py fix: B1 — retire ICM, RollingWindow, scoring, relevance + dependents 2026-05-02 12:23:17 -07:00
test_auth_mode.py fix: PR-F1 classify_auth_mode helper (Phase F kickoff) 2026-05-03 17:20:14 -07:00
test_backend_anyllm.py chore: renormalize line endings to LF 2026-04-24 15:33:30 +02: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_bedrock_region.py fix(tests): stop module-level dotenv loaders from polluting os.environ during pytest collection 2026-04-26 09:15:37 -07: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_canonical_pipeline.py fix: align docs and prune dead compatibility surfaces 2026-05-09 14:07:59 -07:00
test_ccr.py feat(rust): retire python smart_crusher, ship rust-only via pyo3 2026-04-27 00:52:21 -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 v0.2.2: Add CCR Response Handler, Context Tracker, and restructure docs 2026-01-14 13:03:41 -08:00
test_ccr_feedback.py Fix all ruff lint and format errors for CI 2026-01-10 15:33:44 -08:00
test_ccr_mcp_server.py fix: restore Windows mypy compatibility 2026-04-11 18:40:53 -05:00
test_ccr_response_handler.py Fix security vulnerabilities in memory and CCR systems 2026-02-04 12:05:50 -08:00
test_ccr_response_handler_extra.py fix: B1 — retire ICM, RollingWindow, scoring, relevance + dependents 2026-05-02 12:23:17 -07:00
test_ccr_row_drop_store_bridge.py fix(crusher): bridge SmartCrusher row-drop hash to Python compression_store (#389) 2026-05-05 11:41:48 -07:00
test_ccr_tool_always_on.py fix: B7 — CCR hardening: persistent backends + always-on tool 2026-05-02 16:52:33 -07:00
test_ccr_tool_injection.py Remove LLMLingua: Kompress is the sole text compressor 2026-03-26 11:11:00 -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_learn.py Fix learn CLI worker expectation in CI 2026-05-09 22:11:42 -07:00
test_cli_proxy_env.py fix(cli): resolve duplicate --code-aware flag breaking proxy import 2026-05-08 11:43:59 -07:00
test_cli_tools.py test: apply linux ruff formatting 2026-04-23 08:49:50 -05:00
test_codex_rate_limits.py chore: renormalize line endings to LF 2026-04-24 15:33:30 +02:00
test_codex_ws_compression_scheduler.py fix(tests): make stress test CI-robust — uniform frame sizes, tighter ratio 2026-05-14 15:20:37 -07: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 fix: complete /v1/responses compression telemetry, multi-frame WS, frozen-count cap 2026-05-07 14:50:03 -07:00
test_compression_determinism.py Compress Codex Responses payloads 2026-05-10 17:27:47 -07:00
test_compression_observability.py fix: expose compression latency bottlenecks 2026-05-12 13:34:08 -07:00
test_compression_policy.py fix(core): F2.2 c1/3 — extend CompressionPolicy with three per-mode tuning fields 2026-05-06 14:37:33 -07: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_store.py fix: log Codex ws cancellations safely 2026-05-10 09:06:07 -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 Compress Codex Responses payloads 2026-05-10 17:27:47 -07:00
test_config.py fix: B1 — retire ICM, RollingWindow, scoring, relevance + dependents 2026-05-02 12:23:17 -07:00
test_copilot_auth.py test: cover copilot auth branches 2026-04-22 00:23:28 -05:00
test_copilot_quota.py chore: renormalize line endings to LF 2026-04-24 15:33:30 +02:00
test_cost_tracker_counterfactual.py fix(tests): stop module-level dotenv loaders from polluting os.environ during pytest collection 2026-04-26 09:15:37 -07: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: B5 — TOIN observation-only refactor + per-tenant aggregation key 2026-05-02 16:24:03 -07:00
test_dashboard_cache_ttl_playwright.py Add observed cache TTL metrics and dashboard coverage 2026-04-06 21:13:30 -05:00
test_evals_datasets.py chore: renormalize line endings to LF 2026-04-24 15:33:30 +02:00
test_evals_metrics.py chore: renormalize line endings to LF 2026-04-24 15:33:30 +02:00
test_exceptions.py chore: renormalize line endings to LF 2026-04-24 15:33:30 +02:00
test_google_multimodal.py Fix Google Gemini conversion to preserve non-text content (Gap #4) 2026-01-24 12:20:13 -08: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_header_isolation.py fix: A5 — strip x-headroom-* from upstream-bound headers (P5-49) 2026-05-02 09:35:27 -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_image_compression.py Skip image tests when Pillow not installed (CI fix) 2026-04-09 16:24:15 -07:00
test_image_compressor.py fix: release image router models after compression 2026-04-29 01:45:27 -04: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_lean_ctx_installer.py feat: add lean-ctx context tool support 2026-05-11 17:54:17 -04:00
test_log_compressor.py fix: improve error handling and add comprehensive test coverage 2026-01-27 16:08:36 -08:00
test_memory_auto_tail.py fix: B6 — memory injection moves to live-zone user-tail 2026-05-02 16:52:31 -07:00
test_memory_bridge.py Add Memory Bridge: bidirectional sync between markdown files and Headroom memory 2026-02-23 22:45:38 -08: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: add anthropic pre-upstream timeouts 2026-04-21 09:48:32 +07:00
test_memory_handler_native_ops.py fix: per-project memory storage so projects can no longer bleed memories (GH #462) 2026-05-13 15:27:41 -07:00
test_memory_handler_project_isolation.py fix: per-project memory storage so projects can no longer bleed memories (GH #462) 2026-05-13 15:27:41 -07:00
test_memory_integration.py Add centralized ML model configuration 2026-02-01 23:47:42 -08:00
test_memory_storage_router.py fix: per-project memory storage so projects can no longer bleed memories (GH #462) 2026-05-13 15:27:41 -07:00
test_memory_sync.py fix: harden learn path handling across platforms 2026-05-09 15:45:26 -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_ml_model_registry_lifecycle.py fix: release image router models after compression 2026-04-29 01:45:27 -04:00
test_models.py Fix pricing lookup for retired Claude models 2026-03-12 21:11:18 -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 refactor(proxy): migrate Codex WS + OpenAI HTTP + batch handlers; delete Databricks 2026-05-14 19:39:15 -07:00
test_openai_codex_ws_lifecycle.py refactor(proxy): migrate Codex WS + OpenAI HTTP + batch handlers; delete Databricks 2026-05-14 19:39:15 -07:00
test_openai_codex_ws_timings.py fix: format Codex compression changes 2026-05-12 14:35:47 -07:00
test_openai_responses_compression_units.py Format OpenAI Responses tests 2026-05-10 20:19:53 -07:00
test_openai_responses_context_compaction.py Format OpenAI Responses tests 2026-05-10 20:19:53 -07:00
test_openai_streaming_backend.py Commit message: 2026-03-13 16:49:18 -07:00
test_package_init_lazy.py fix: make proxy upgrades version-aware 2026-05-09 15:58:27 -07:00
test_parser.py Add multi-provider memory system with auto-detection 2026-02-01 14:42:50 -08:00
test_paths.py feat: add lean-ctx context tool support 2026-05-11 17:54:17 -04:00
test_paths_backward_compat.py test(paths): add adversarial backward-compat stress suite 2026-04-16 19:59:47 -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_pr208_changes.py fix(proxy): defer file logging install to create_app() 2026-04-28 15:28:33 -07:00
test_pricing.py chore: renormalize line endings to LF 2026-04-24 15:33:30 +02:00
test_pricing_litellm.py chore: renormalize line endings to LF 2026-04-24 15:33:30 +02: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 chore: renormalize line endings to LF 2026-04-24 15:33:30 +02: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(ci): update tests to assert absence of requires_openai_auth (bug 3, #406) 2026-05-06 12:18:47 -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_copilot_wrap.py chore: renormalize line endings to LF 2026-04-24 15:33:30 +02:00
test_provider_cursor.py test: remove provider diff churn 2026-04-22 22:13:13 -05:00
test_provider_model_fallback.py Fix CI regressions for cache benchmark work 2026-04-04 22:33:44 -05: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 refactor(proxy): migrate Codex WS + OpenAI HTTP + batch handlers; delete Databricks 2026-05-14 19:39:15 -07:00
test_provider_registry.py test: remove provider diff churn 2026-04-22 22:13:13 -05:00
test_provider_registry_extended.py chore: renormalize line endings to LF 2026-04-24 15:33:30 +02:00
test_proxy_anthropic_cache_stability.py fix: integrate B6+B7 — fix cross-test contamination + injector mock parity 2026-05-02 17:05:58 -07: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_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: A3 — byte-faithful Python forwarders; serialize canonical only when mutated 2026-05-02 09:02:10 -07:00
test_proxy_cache_ttl_metrics.py feat: expose proxy OTEL metrics and Langfuse status 2026-04-09 21:20:46 -05:00
test_proxy_ccr.py fix: align docs and prune dead compatibility surfaces 2026-05-09 14:07:59 -07:00
test_proxy_codex_route_aliases.py fix: log Codex ws cancellations safely 2026-05-10 09:06:07 -07:00
test_proxy_compress_endpoint.py Add TypeScript SDK (headroom-ai npm package) 2026-03-26 15:41:56 -07:00
test_proxy_compression_executor.py fix: expose compression latency bottlenecks 2026-05-12 13:34:08 -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 test: wire test dummies to RequestOutcome funnel for batch + copilot-auth paths 2026-05-14 19:39:15 -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: expose compression latency bottlenecks 2026-05-12 13:34:08 -07:00
test_proxy_debug_endpoints.py fix: add anthropic pre-upstream timeouts 2026-04-21 09:48:32 +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): bound Codex Responses compression work 2026-05-11 03:02:58 -04:00
test_proxy_handlers_batch.py test: wire test dummies to RequestOutcome funnel for batch + copilot-auth paths 2026-05-14 19:39:15 -07:00
test_proxy_healthchecks.py fix: add anthropic pre-upstream timeouts 2026-04-21 09:48:32 +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_memory_integration.py fix: correct cost calculation for cache tokens and simplify memory DevEx 2026-01-26 22:49:31 -08: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_stability.py fix: A3 — byte-faithful Python forwarders; serialize canonical only when mutated 2026-05-02 09:02:10 -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_passthrough_integration.py fix: B1 — retire ICM, RollingWindow, scoring, relevance + dependents 2026-05-02 12:23:17 -07:00
test_proxy_pipeline_lifecycle.py fix: A3 — byte-faithful Python forwarders; serialize canonical only when mutated 2026-05-02 09:02:10 -07:00
test_proxy_savings_history.py chore: renormalize line endings to LF 2026-04-24 15:33:30 +02:00
test_proxy_scalability.py fix(proxy): support multi-worker Docker env startup 2026-04-26 12:25:33 +00:00
test_proxy_streaming_ratelimit_headers.py chore: format proxy route tests with ruff 2026-04-21 19:38:32 +00:00
test_proxy_streaming_request_logger.py Merge branch 'main' into fix/codex-wrap-proxy-mcp-sync 2026-05-09 14:17:40 -07:00
test_proxy_streaming_resilience.py Refactor: extract 7 modules from server.py (Steps 2-4) 2026-04-03 16:18:08 -07:00
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 feat: allow overriding proxy telemetry sdk via HEADROOM_SDK 2026-03-27 14:23:32 +01: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_realignment_live_multi_turn.py fix(security): allowlist GitGuardian-flagged test fixtures 2026-05-02 18:33:22 -07:00
test_release_version.py chore: renormalize line endings to LF 2026-04-24 15:33:30 +02:00
test_release_workflows.py Fix Windows ORT builds and Docker signing retries 2026-05-10 20:59:28 -07:00
test_relevance.py feat(rust): retire python smart_crusher, ship rust-only via pyo3 2026-04-27 00:52:21 -07: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_reporting.py chore: renormalize line endings to LF 2026-04-24 15:33:30 +02:00
test_request_outcome.py feat(proxy): add client (harness) identification — per-harness analytics across every handler 2026-05-14 19:39:35 -07: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 feat(cli): add Docker-native install flow and parity docs 2026-04-10 23:27:24 -05:00
test_rust_core_smoke.py fix: A0 — fail-loud rust core deployment smoke test 2026-05-02 17:52:37 -07: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_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): re-land orphaned audit close-out — CCR knob + scorer fail-loud 2026-04-28 18:37:52 -07: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: A8 — SSE delta arms, UTF-8 buffer, phase preservation, request-id, 413 2026-05-02 10:35:11 -07:00
test_sse_utf8_split.py fix: A8 — SSE delta arms, UTF-8 buffer, phase preservation, request-id, 413 2026-05-02 10:35:11 -07: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_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_strategy_stats_supabase.py feat(telemetry): surface per-strategy compression counters 2026-04-29 14:14:09 -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 feat: add lean-ctx context tool support 2026-05-11 17:54:17 -04: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 fix(telemetry): honour HEADROOM_TELEMETRY=off in /v1/telemetry collector (#390) 2026-05-05 11:30:10 -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 feat: add lean-ctx context tool support 2026-05-11 17:54:17 -04: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: log Codex ws cancellations safely 2026-05-10 09:06:07 -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: B5 — TOIN observation-only refactor + per-tenant aggregation key 2026-05-02 16:24:03 -07: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_tokenizers.py Fix all ruff lint and format errors for CI 2026-01-10 15:33:44 -08:00
test_tool_result_interceptors.py fix(review-3): address third-pass PR #210 feedback 2026-04-20 20:24:47 -07:00
test_transforms_content_detection.py test: align test_error_detection with Phase 3e.1 bug fixes 2026-04-29 16:10:08 -07:00
test_transforms_content_router.py fix: expose compression latency bottlenecks 2026-05-12 13:34:08 -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 style: ruff format tests/test_transforms_search_compressor.py 2026-04-29 18:56:31 -07:00
test_utils.py chore: renormalize line endings to LF 2026-04-24 15:33:30 +02:00
test_ws_http_fallback.py fix: B1 — retire ICM, RollingWindow, scoring, relevance + dependents 2026-05-02 12:23:17 -07: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