Skip to content

v0.13.0

Latest

Choose a tag to compare

@github-actions github-actions released this 22 Aug 02:24
48f14fa

0.13.0 (2026-08-22)

Features

  • add autonomous CAPTCHA detection and recovery (#456) (c77266b), closes #455
  • add deterministic LLM contract scenarios (f71781b)
  • add deterministic LLM contract scenarios (86dc5f4)
  • add deterministic SlopSearX contract twin (216c65f)
  • add deterministic SlopSearX contract twin (1445642)
  • agent,cli: retryable rate-limit contract (ADR-0053) (2eab2b7)
  • agent,cli: retryable rate-limit contract (ADR-0053) (eba5122)
  • agent: add --search-type flag for research depth control (f7dd947)
  • agent: add --search-type flag for research depth control (f7dd947)
  • agent: add portable research state projection (#464) (2b40ad0)
  • agent: harden research-memory cache compatibility and freshness (fa2e14f), closes #529
  • allow maintainer to merge own PRs (review bypass only) (1ec81ba)
  • allow maintainer to merge own PRs (review bypass only) (b17bf2f), closes #499
  • allow maintainer to merge own PRs (review bypass only) (#518) (1ec81ba)
  • ashby: add official Ashby API tiers to the adapter (bb66bbf)
  • ashby: add official Ashby API tiers to the AshbyHQ adapter (544bb7e)
  • compose: expose direct SlopSearX MCP service (629e54e)
  • compose: expose SlopSearX MCP service (f406ff6)
  • mcp-svc: complete MCP tool surface and fix adapter correctness (b4b7982)
  • mcp-svc: complete MCP tool surface and fix adapter correctness (58802c1)
  • metrics: add stage timer, gauge inc/dec, and shared stage helpers (52ef618)
  • parse-svc: adopt firecrawl-anydoc as the conversion engine (3721a05)
  • parse-svc: adopt firecrawl-anydoc as the conversion engine (bb96263), closes #523

Bug Fixes

  • add graceful shutdown with drain timeout to MCP server (#417) (3541515), closes #410
  • add transient Playwright error recovery (f6f6c71)
  • add transient Playwright error recovery (#412) (b69efba)
  • admission: refund granted waiter weight on cancellation (e9573ed)
  • agent,cli: address review findings on retry metadata safety (66c2cdc)
  • agent: align polling research with streaming (#463) (4fe03f6)
  • agent: cap answer sources at num_sources after URL dedup (5bf9b71)
  • agent: correct cancelled/completed telemetry across agent paths (c3a31a3)
  • agent: degrade find_similar on any semantic backend failure, not just 503 (#545) (0cfbd1d)
  • agent: harden hybrid blend dedup, malformed URLs, and diversity floor (81f2104)
  • agent: opt-in downstream 429 classification for retry paths (6554ea1)
  • agent: preserve compact sources and single-flight SWR refresh (802be94)
  • agent: record research memory Valkey lookup errors (1db27b4)
  • agent: track stream-mode crawl workload telemetry (ca74265)
  • agent: treat degraded lightweight scrape as insufficient (27600cf)
  • agent: wire search_type through streaming pipeline and SSE plan event (5345c7e)
  • agent: wire search_type through streaming pipeline and SSE plan event (5345c7e)
  • agent: wire search_type through streaming pipeline and SSE plan event (42e8a5c)
  • align tests with explicit LLM model contract (cc1bc41)
  • align tests with explicit LLM model contract (ba775de)
  • ashby: gate RPC tier to individual postings and document the key (277e6b8)
  • ashbyhq: escape pipes and newlines in API markdown table cells (95d1c76)
  • ashbyhq: escape pipes and newlines in markdown table cells (a613e32)
  • benchmarks: fail cleanly when StackRunner is unwired (2138462)
  • benchmarks: reject non-positive --runs with a clean error (accf580)
  • browser: do not count failed session creation as destroyed (ea98f96)
  • browser: stop manually started Playwright controllers (c3e99a8)
  • browser: stop manually started Playwright controllers (6cfd068)
  • ci: classify root *.md as docs-only and contract-test RUNTIME_SERVICES (7a942fd)
  • ci: classify root *.md as docs-only and contract-test RUNTIME_SERVICES (3153b8b)
  • ci: copy benchmarks into integration container (c0b703a)
  • ci: make mcp-svc test steps pass under CI config (b45ed7c)
  • ci: make release-please version tracking explicit (29199b2)
  • ci: make release-please version tracking explicit (0f1902d)
  • ci: treat .github/ markdown as docs-only per review (45b32d4)
  • complete LLM scenario error contracts (b62345e)
  • compose: bound browser workloads and profile indexing (#482) (47967cd)
  • compose: delegate slopsearx-mcp grant defaults to upstream secure policy (#579) (3df5948), closes #578
  • compose: gate slopsearx-mcp behind opt-in mcp profile (#558) (60fab8d)
  • compose: stop slopsearx-mcp aborting a no-config docker compose up (8e53441)
  • differentiate Playwright browser errors from generic upstream errors (#416) (85dc819), closes #408
  • document BRAVE_API_KEY and surface search degradation warnings (#414) (a9e33c4), closes #406
  • drop release-please bypass exemption (dependabot-only review policy) (01d2f9f)
  • drop release-please bypass exemption (dependabot-only review policy) (c42748f), closes #499
  • emit parseable semantic service metrics (#451) (1569fca)
  • harden research-memory cache compatibility and freshness (d1d2e65)
  • isolate search twin integration lane (d57d069)
  • make LLM fixture deterministic with sources (415735e)
  • mcp-svc: address review findings on monitor contract, SSRF, retries (f29f4e8)
  • mcp-svc: fail-closed DNS-rebinding default, address review findings (3bf116e)
  • mcp-svc: make DNS-rebinding Host allowlist explicit and configurable (ffdc57c)
  • mcp-svc: make DNS-rebinding Host allowlist explicit and configurable (4d76637), closes #524
  • mcp-svc: wire MCP_ALLOWED_ORIGINS through docker-compose (6971bea)
  • metrics: distinguish cache lookup errors from misses (7c69e21)
  • metrics: omit invalid OpenMetrics timestamps (5371956)
  • metrics: omit OpenMetrics timestamps (#488) (e1ac66d)
  • metrics: record search-stream TTFB on empty results (2a88e29)
  • metrics: record stream TTFB at first real event (f8c2608)
  • omit integration_id from Ruleset B required status checks payload (8fe4bea)
  • omit integration_id from Ruleset B required status checks payload (865a41a), closes #499
  • omit integration_id from Ruleset B required status checks payload (#515) (8fe4bea)
  • politeness: read-only per-tier checks and aborted-delay rollback (911e90d)
  • reject unsupported version inferences in research (10f0c8c)
  • reject unsupported version inferences in research (5cd4a0a)
  • remove hardcoded gpt-4o-mini defaults from research modules (#415) (0dc1b1e)
  • satisfy service dependency and fixture contracts (171c4d9)
  • scraper: bound browser process lifecycles (#468) (efdc388), closes #467
  • scraper: record tier error metric on smart_scrape raise (b382978)
  • scraper: sample browser stage metrics on Playwright raise (fc7fd8c)
  • scraper: sample extraction histogram on empty/failed extractions (47e7c5c)
  • security: reject all NAT64 space and redact webhook URLs in logs (f6fad87)
  • security: reject IPv4-encapsulating IPv6 forms in SSRF guard (a7db7bf)
  • security: reject IPv4-mapped IPv6 private addresses in SSRF guard (6c67dec)
  • security: unmap Teredo client and NAT64-embedded IPv4 in SSRF guard (0a92dc7)
  • security: validate webhook destinations to prevent SSRF (4cd6e90)
  • security: validate webhook destinations to prevent SSRF (3889bfa)
  • semantic-svc: resolve 7 mypy errors surfaced by qdrant_client stubs (1d63dd8)
  • semantic-svc: resolve 7 mypy errors surfaced by qdrant_client stubs (cb61034)
  • semantic: bound Qdrant query timeout and degrade to 503 instead of 500 (#544) (c34d906)
  • semantic: narrow Qdrant readiness client type (ae37711)
  • semantic: narrow Qdrant readiness client type (e96a935), closes #486
  • semantic: require Qdrant for readiness (#485) (3e5ab1a)
  • skip failed results in research memory cache (609440d)
  • skip failed results in research memory cache (0e32c79), closes #432
  • support disabling llama.cpp template reasoning (b3a7912)
  • support disabling llama.cpp template reasoning (9140613)
  • test: remove unused variable flagged by vulture (261368f)
  • update CLI coverage script to scan routes/ package (7d2905d)
  • update CLI coverage script to scan routes/ package instead of api.py (d401e17)
  • wait for semantic service readiness (746ee46)
  • wait for semantic service readiness (37be058)
  • webhook: never leak parser or resolver errors from destination guard (9a7d799)
  • webhook: redact userinfo credentials from webhook URL logs (d618215)
  • webhook: retry transient DNS failures during destination validation (9828d7b)
  • worker: do not double-count cancelled jobs (5465541)

Performance Improvements

  • add concurrent cache-assisted hybrid retrieval (a3cfb96)
  • add global admission control and end-to-end cancellation (65a8f22)
  • add stage-level latency and capacity telemetry (25b24ca)
  • agent: add concurrent cache-assisted hybrid retrieval planner (399e4a2)
  • agent: add global weighted admission controller and cancel token (cd3cff7), closes #531
  • agent: instrument research stages, caches, streaming, and workload class (b10ba94)
  • agent: request-scoped source artifact with rerank reuse (0802c50)
  • agent: single research-memory lookup per agent request (d4eaba6)
  • agent: wire admission and cancellation into fan-out paths (f6e9bfc), closes #531
  • benchmarks: add stdlib benchmark harness and checked-in baseline (2b3fc71)
  • eliminate duplicate retrieval, cache, and browser work (2b96563)
  • scraper: add tier/adapter/cache and browser lifecycle telemetry (87cf58c)
  • scraper: browser-tier admission and politeness burst fix (ae3c625), closes #531
  • scraper: lightweight-only contract and awaited cancellation (bef4b5e)
  • worker: bound batch scrape task creation with a worker pool (2f1636a)

Documentation

  • add ADR-0049 for research-memory compatibility, freshness, and SWR (b6a100a), closes #529
  • add contribution intake and Now/Next/Later roadmap (adaa195)
  • add contribution intake and Now/Next/Later roadmap (23f3ab5)
  • add graphify query tuning guidance to AGENTS.md (966643b)
  • add graphify query tuning guidance to AGENTS.md (e380a8d)
  • add release and dependency-update PR triage routine (104def5)
  • add release and dependency-update PR triage routine (486a9c9)
  • add stage telemetry ADR, metric inventory, and dashboard panels (09b35c4)
  • ADR-0051 admission control, observability, public surface (0a7fa3e), closes #531
  • adr: make async-job durability an explicit deployment and roadmap decision (#521) (608486f)
  • adr: remove private deployment identifier from ADR-0026 (838ce9f)
  • adr: remove private deployment identifier from ADR-0026 (7a1c75f)
  • agent: clarify async job durability (#462) (8f37b7b)
  • align emergency runbook trigger list with self-merge note (e725c72), closes #499
  • benchmarks: fix percentile interpolation docstring (f42aae0)
  • clarify CLI authentication configuration (a0eca83)
  • clarify CLI authentication configuration (ab247f7)
  • correct search-client mutation-review kill claims (09921fc)
  • correct triage summary kill claims (947bfb5)
  • document dedup/retry metrics and ADR-0050 (a1af8ba)
  • document hybrid blend diversity floor in ADR-0052 (a275777)
  • document hybrid retrieval planner and add benchmark script (b542bdb)
  • document PR review loop and merge bypass for agents (9b42178)
  • document PR review loop and merge bypass for agents (a77564a)
  • mark vision as historical (1719843)
  • mark vision as historical (00dcbf3)
  • note AshbyHQ posting API and expanded parse formats (3a3cb34)
  • note AshbyHQ posting API and expanded parse formats (0f1a9fc)
  • note maintainer self-merge in emergency runbook (d185b6a)
  • note maintainer self-merge in emergency runbook (74bac62), closes #499
  • note maintainer self-merge in emergency runbook (#520) (d185b6a)
  • note minimum graphify version for --context flag (5bc186d)
  • overhaul documentation and add drift checks (#422) (8473fdd)
  • place roadmap under docs/ so docs-only PRs stay docs-only (156239a)
  • promote ADR-0046 status to accepted (6eebdf7)
  • promote ADR-0046 status to accepted (0b58e34)
  • readme: fix quickstart examples and required auth token (9ebcb3c)
  • readme: restructure quickstart into Choose your path (cf9c4dc)
  • readme: restructure quickstart into Choose your path (#472) (f6aa8cd)
  • register MCP_ALLOWED_HOSTS/MCP_ALLOWED_ORIGINS in public-surface inventory (a305a1e)
  • verify observability artifact chain (#449) (3c13dfc)

CI/CD

  • add diagnostic critical journey smoke (#446) (2c06ea8)
  • bump actions/setup-python from 6 to 7 (6935654)
  • bump actions/setup-python from 6 to 7 (5b6f1d3)
  • bump actions/upload-artifact from 4 to 7 (19ea3a7)
  • bump actions/upload-artifact from 4 to 7 (553da2c)
  • bump Factory-AI/droid-action (c40a056)
  • bump Factory-AI/droid-action from 7c7bfea2aa3bb7ea87579402cc1d89dbcf6b13b3 to 2041e7cc36d1390346bdaa6616e4bf7ac6b96b27 (3835742)
  • compile fixture probes exactly (4cb1577)
  • docker: address droid-review P1/P2 on runtime lanes (#494) (fafd1e0)
  • docker: address droid-review P1/P3 on fork guard (#483) (eacbc9c)
  • docker: drop dead parse deps from integration lane (f073df9)
  • docker: drop dead parse deps from integration lane (d6815e9)
  • docker: fix mcp-svc build-and-push context (8d2ad15)
  • docker: fix mcp-svc build-and-push context (69ebf00)
  • docker: fix mcp-svc build-and-push context (#494 follow-up) (f736a5b)
  • docker: fix mcp-svc build-and-push context (#494) (c048977)
  • docker: guard self-hosted integration against fork PRs (#483) (9d4723c)
  • docker: guard self-hosted integration against fork PRs (#483) (43608a8)
  • docker: publish parse-svc and mcp-svc images (f752bbd)
  • docker: service-local PR builds and remove duplicate --build (#494) (323d6f0)
  • docker: service-local PR builds, remove duplicate --build (#494) (e029a06)
  • docker: tolerate unpublished images in the pull lane (#494) (e981516)
  • enforce critical journey smoke gate (#447) (c407aa0)
  • enforce required QA checks and review policy on main (9277c29)
  • enforce required QA checks and review policy on main (66e44fe), closes #499
  • gate source-backed fixture contracts early (5e88b9c)
  • integrate dependency twin validation (e3bbf6f)
  • integrate dependency twin validation (7f86d0d)
  • make dependency hygiene blocking (4f15fb2)
  • make dependency hygiene blocking (4c0c5c3), closes #471
  • parse-svc: install firecrawl-anydoc in the integration test runner (fc055a8)
  • parse-svc: install pypdf in the integration test runner (da18a7e)
  • preserve integration failure diagnostics (0106eba)
  • provide MCP token for integration stack (030176e)
  • publish parse-svc and mcp-svc images (5d4ca1c)
  • reset persisted test memory before integration (16f557e)
  • resolve twin review findings (7b26d55)
  • review: trigger re-review on synchronize pushes (a113198)
  • review: trigger re-review on synchronize pushes (ca2477b)
  • review: use DeepSeek V4 Flash for droid auto review (d787c24)
  • review: use DeepSeek V4 Flash for droid auto review (3cb5724)
  • route answer evals through host lane (b1a9a97)
  • run deterministic fast tests on every change (0bbbf24)
  • separate hosted and compose twin contracts (93dc54e)
  • serialize shared-runner integration jobs (#453) (946e6ed)
  • skip Docker integration for docs-only pull requests (8f6b280)
  • skip Docker integration for docs-only pull requests (1781908)

Refactoring

  • agent: unify research execution (#461) (d3e94d8)
  • webhook: share destination validation between job and monitor paths (80ec386)

Tests

  • add bounded mutation-testing pilot harness for search-client slice (ae4299b)
  • add grounded answer evaluation harness (9f4446c)
  • add grounded answer evaluation harness (e3186e2)
  • admission budgets, cancellation teardown, batch parallelism, politeness (5f6f4ec), closes #531
  • agent: cover degraded-lightweight fallback and answer URL dedup (51f9a1e)
  • agent: cover hybrid blend dedup, malformed URLs, and diversity floors (a235b73)
  • agent: cover hybrid retrieval planner and call-site delegation (4de1ab3)
  • agent: cover research-memory compatibility, freshness, SWR, and sweep (21abf71), closes #529
  • agent: cover run_answer_stream rerank reuse (a0af90f)
  • agent: cover SWR compact sources and single-flight refresh (f743f76)
  • bounded mutation-testing pilot on search policy (bf0ca66)
  • cover issue 530 dedup, reuse, and browser lifecycle (a3a3cb3)
  • crawler: cover cancellation branches in the fast lane (0041def)
  • finalize search-client mutation-pilot evidence, report, and ADR-0057 (64b44d0)
  • govern pytest outcome lifecycle (#509) (f6e8a28), closes #502
  • harden deferred search-client oracle gaps (027de90)
  • harden evaluation artifacts and baselines (2f37b5e)
  • isolate hosted socket dependency (68ab87f)
  • make GitHub adapter coverage deterministic (41a70f5)
  • mcp-svc: fix _default_allowed_test_host exact host:port handling (87b90f2)
  • mcp-svc: isolate origin-derivation test, derive allowed Host from allowlist (e14883c)
  • metrics: cover browser session expired lifecycle paths (80b0489)
  • metrics: cover semantic OpenMetrics renderer (ff3a938)
  • metrics: cover semantic OpenMetrics renderer (90d0551)
  • metrics: cover stage metrics, browser lifecycle branches, and harness (eb67ce2)
  • metrics: cover stage-metric error and stream telemetry paths (a8edb1b)
  • metrics: cover TTFB, tier error, and browser create-failure regressions (79d03b9)
  • metrics: run service-module metric tests in unit lane (a796352)
  • parse-svc: add real .docx/.pptx/.xlsx fixtures (3c8cb0a)
  • quarantine live Gutenberg probes (abd6ab5)
  • quarantine live Gutenberg probes (b9bfbbe)
  • remove live-search dependency from cross-session isolation (72a01fa)
  • triage search-client survivors and harden Retry-After boundary gaps (9a7b881)
  • url: assert permanent rejection for overlong hostnames (#508) (1fc36f5)

Chores

  • coverage: exempt cross-container high-risk files from integration gate (05f63db)
  • deps: regenerate lockfile for cloakbrowser 0.5.3 (9181fce)
  • deps: regenerate lockfile for qdrant-client <1.20.0 (30b7f00)
  • ignore parallel-mode coverage data files (67630b0)
  • ignore parallel-mode coverage data files (.coverage*) (e0ed4c2)
  • remove search-svc fixture, update docs from SearXNG to SlopSearX (#405) (fd556b1)