v0.3.0
0.3.0 (2026-08-22)
Features
- add curated non-secret operational diagnostics to status and health (28c39f3)
- add deterministic MCP fixture harness over streamable HTTP (def7497)
- add explainable cost- and coverage-aware routing (b8103fc)
- add explainable cost- and coverage-aware routing (d11d105)
- add explicit image/video media search and result contract (2dceac1)
- add explicit media search and result contract (85e710b)
- add jobs search topic and ATS engine adapters (Greenhouse, Ashby, Lever) (#132) (dfd517c)
- add MCP server for AI agents (af763ab)
- add MCP server for AI agents (c1ae16f)
- add selective research retry and bounded follow-up (2d5e8c6)
- add structured filter-enforcement report to MCP search tools (9797ac7)
- audit and declare engine capability metadata (2e32f3c)
- audit and declare engine capability metadata (18e9736)
- derive live engine health from observed outcomes (0fd7bde)
- derive live engine health from observed outcomes (4ff5000)
- diagnose empty scrape responses (51ee882)
- diagnose empty scrape responses (6004d81)
- enforce and report search filter semantics (f3ae26a)
- enforce and report search filter semantics (b26d1f3)
- expose full engine capability matrix from the live catalog (6fe1c5c)
- expose machine-readable search-to-retrieval handoff boundary (c1c510a)
- full-strength MCP access for SlopSearX (f922728)
- harden snapshot/cursor lifecycle with expiry and unavailability semantics (87e2781)
- implement progressive-disclosure result card/record contract (c788662)
- make research job execution durable across replicas (7c9993e)
- make research job execution durable across replicas (0b370be)
- persist research per-query and per-engine coverage with failure classes (5365ba1)
- preserve typed domain payloads in normalized results (9b020c8)
- preserve typed domain payloads in normalized results (6c8f4ef)
- raise Brave default result cap (#207) (03b294f)
- recover discarded evidence in the MCP search envelope (192b8a9)
- unify sensitive-engine and specialist-grant policy gate (61cc3f3)
Bug Fixes
- add type args to bare dict in init for mypy 2.2.0 (9bc5b1a)
- align payload/media disclosure gates with persistence boundary (cb423d4)
- align payload/media disclosure gates with persistence boundary (ef7b065)
- apply base-image security updates (#209) (851090f)
- apply persistence bound to HTTP payload output gate (e57963d)
- bound the aggregate dispatch deadline (0f78d0d)
- brave: load API key from environment variable as fallback (9096879)
- brave: load API key from environment variable as fallback (9096879)
- brave: load API key from environment variable as fallback (8f7f8b7)
- brave: load API key in init so health check passes at startup (9becad0)
- brave: load API key in init so health check passes at startup (9becad0)
- brave: load API key in init so health check passes at startup (f833807)
- cache canonical full response and derive per-request view (9c64dbc)
- centralize feature env overrides (6031f62)
- centralize feature env overrides (bebdaa3)
- ci: skip droid-review for dependabot PRs (a14910b)
- clear stale research leases, guard saves, use SCAN (a2a697d)
- close media routing gaps from issue-188 code review (e088544)
- close SSRF gaps in retrieval URL handoff guard (3112c20)
- complete timeout status follow-up contract (f11e15f)
- expire deadline-passed claims and guard direct runs (fc2b789)
- finalize lapsed-deadline runs before mutation, scan colon-safe tenants (40afa0c)
- fold observed health into routing cache digest (dc19d08)
- fold sensitive/tier1 sets into routing digest; freeze HTTP budget (f15a73b)
- fold sensitive/tier1 sets into routing digest; freeze HTTP budget (f3e084f)
- gate cancel/retry/extend and keep research leases alive (78ac88a)
- gate health folding in routing digest on engine-count cap (c8739ac)
- gate payload serialization the renderer way and cap requested inline (a298d5a)
- handle arXiv HTTPS redirects safely (8985874)
- harden payload disclosure and CVSS parity (0957a1e)
- harden payload serialization, persistence bound, and CVSS parity (f780274)
- harden retrieval handoff URL classification and docs (45fd16c)
- harden snapshot TTL and research retry/extend edge cases (e3a04f9)
- harden URL handoff guard and dedup against malformed hosts (4c99744)
- honor per-engine timeout_ms at search dispatch (#184) (23dc38c)
- install cssselect at runtime (2433336)
- install cssselect at runtime (e859bc2)
- keep cached scope live and pin routing test config (d5cd05a)
- keep intent media type across explicit scope in _resolve_scope (f97f578)
- lease direct research runs and check lease liveness (3999081)
- make filter enforcement value-aware and honest in warnings (0924989)
- make research lease primitives atomic and claim terminal retries (f1da60c)
- make SearchResult serialization JSON-safe (6b7447a)
- memoize /health config+catalog and never fabricate observed latency (8d77e38)
- never fabricate observed health latency or auth state (0005392)
- never hand off SSRF-prone IP hosts or userinfo URLs (9f1730c)
- only count the local layer for filters with a local post-filter (b44b20b)
- pin Docker image provenance (#211) (77d1448)
- pin sanitized error-message assertion to exact output (32c47fd)
- preserve arXiv rate-limit classification (28d4670)
- preserve configured timeout in fan-out deadline (9ab5c37)
- ratelimit: remove unused sidecar stub (9b22616)
- ratelimit: remove unused sidecar stub (9ae0dad)
- reconcile direct runs and surface durable cancellation (de1f754)
- reject IPv6 6to4 literals and distinguish reserved-prefix reasons (635bc6c)
- reject IPv6 translation-prefix and site-local retrieval targets (a18d889)
- reject IPv6 translation-prefix and site-local retrieval targets (427ade1)
- reject percent-encoded and non-ASCII hosts in retrieval handoff (7c52d2a)
- remove dead payload catalog and gate read-result payload (f495e58)
- route strict-safesearch preview through the real query scope (373b52e)
- run routing pass on media path and pin harness config (7e3c0df)
- satisfy both mypy gate versions for MCP SDK redirect helper (de3d939)
- scope IPv6 reserved check so IPv4-mapped literals embed-safe (776c431)
- strict payload size gating and CVSS/FRED fixes (64b2007)
- sync ctx sensitive set from policy; harden routing eval bounds (965e1f3)
- treat empty max_cost_class as permissive; fix R5 eval baseline (f615341)
Documentation
- add engine troubleshooting guidance (f350d49)
- add engine troubleshooting guidance (59e796c)
- add field-level MCP contract mapping (07186a7)
- correct stale claims and document MCP invariants (0f4f725)
- define the search-to-retrieval handoff boundary (4dd4e8a)
- document advanced-search decision and finalize CI parity (7da23a6)
- expose unavailable health status (95d9a1b)