haiku.rag/tests
Yiorgis Gozadinos fdb5710491
Ask and analyze across several databases
Chunk 2 gave search a configured set to fan out over. ask and analyze
covered one database still: the RAG capability had no way to be told which
databases a question spanned, and the analysis sandbox mounted one
document tree.

The selection travels as sources on EvidenceState, beside the filter it
scopes with, so both capabilities read it the same way. clients_covering
is the one rule that turns a selection into clients, used by search, the
sandbox mount and the cite fallback, so a question scoped to some
databases cannot search, mount or cite another. Citations carry the
database they came from, and format_for_agent names it, so the model can
attribute evidence while it answers rather than only afterwards.

The sandbox keeps one flat /documents/{id}/ namespace and resolves each id
to the client holding it, which rests on ids being UUID4. A database
copied from another breaks that, so an id held twice is refused rather
than resolved to whichever arrived last.

On the CLI, search, ask and analyze cover the configured set and label
each result with its database. Every other command works on one, named
with --database NAME (a name reaches a database behind a URI, which --db
cannot) or --db PATH, and refuses a set it cannot choose from instead of
silently reading the default database. Cold databases open together, so a
first query costs the slowest open rather than their sum.
2026-08-24 10:03:46 +03:00
..
capabilities Ask and analyze across several databases 2026-08-24 10:03:46 +03:00
cassettes Ask and analyze across several databases 2026-08-24 10:03:46 +03:00
chat Give the capsule to one return, and the run its own copy of state 2026-08-13 13:00:02 +03:00
data Remove repliqa from test setup 2026-06-01 10:40:52 +03:00
docker Add a docker-compose for integration test services 2026-06-04 11:13:16 +03:00
ingester Move source adapters out of the ingester package 2026-08-20 11:46:55 +03:00
sandbox Ask and analyze across several databases 2026-08-24 10:03:46 +03:00
sources Resolve file:// URIs to paths through url2pathname 2026-08-21 10:22:26 +03:00
store Split the store module by responsibility 2026-08-20 12:13:51 +03:00
tools Make get_config the only configuration lookup 2026-08-19 14:43:40 +03:00
__init__.py Use LLM-as-a-judge to test QA 2025-06-25 18:18:28 +03:00
conftest.py Consolidate duplicated client-side tests 2026-07-26 13:30:59 +03:00
json_body_serializer.py Keep cross-encoder rerank scores apart when they saturate 2026-08-07 14:07:53 +03:00
services.py Add a docker-compose for integration test services 2026-06-04 11:13:16 +03:00
test_app.py Measure the CLI and its application layer 2026-08-20 13:23:00 +03:00
test_ask_images.py Accept images on ask/analyze 2026-07-25 10:23:55 +03:00
test_cascade_delete.py Skip embedding validation on document deletion 2026-07-22 10:48:00 +03:00
test_chunk.py Make get_config the only configuration lookup 2026-08-19 14:43:40 +03:00
test_chunker.py Reject unknown and out-of-range configuration values 2026-08-19 15:32:51 +03:00
test_cli.py Ask and analyze across several databases 2026-08-24 10:03:46 +03:00
test_client.py Coerce a string db_path to Path at the Store and capability boundaries 2026-08-21 12:49:45 +03:00
test_client_analyze.py replace haiku.skills with native Pydantic AI capabilities 2026-07-24 15:26:17 +03:00
test_config.py Make the documented configuration match the code 2026-08-19 15:52:50 +03:00
test_context.py Remove the single-document item accessors the batching replaced 2026-08-18 17:12:10 +03:00
test_context_enhancement.py Make get_config the only configuration lookup 2026-08-19 14:43:40 +03:00
test_converters.py Add per-endpoint api_key to model and embedding config 2026-08-23 23:54:40 +03:00
test_database_autocreate.py Test vacuum against real table state 2026-07-27 12:11:01 +03:00
test_docling_serve_client.py Wire providers.docling_serve.timeout through to the client 2026-08-19 13:30:45 +03:00
test_doctor.py Add per-endpoint api_key to model and embedding config 2026-08-23 23:54:40 +03:00
test_document.py Load document blobs only when asked 2026-08-06 13:04:51 +03:00
test_download_models.py Make get_config the only configuration lookup 2026-08-19 14:43:40 +03:00
test_duplicate_ingestion.py Re-check URI under the write lock to prevent duplicate ingestion 2026-07-08 11:26:45 +03:00
test_embedder.py Make get_config the only configuration lookup 2026-08-19 14:43:40 +03:00
test_embedder_config.py Add per-endpoint api_key to model and embedding config 2026-08-23 23:54:40 +03:00
test_enrichment_batching.py Stop the reranker fetch reading text it discards 2026-08-18 18:00:00 +03:00
test_filter.py Rename document_meta identity column document_id to id 2026-07-08 16:32:55 +03:00
test_info.py Split the store module by responsibility 2026-08-20 12:13:51 +03:00
test_inspector.py Do not duplicate metadata items in inspector 2026-08-18 12:30:13 +02:00
test_lancedb_connection.py Make get_config the only configuration lookup 2026-08-19 14:43:40 +03:00
test_logging.py Additional tests 2026-02-13 18:08:46 +02:00
test_mcp.py Make get_config the only configuration lookup 2026-08-19 14:43:40 +03:00
test_multi_db.py Ask and analyze across several databases 2026-08-24 10:03:46 +03:00
test_multi_db_ask.py Ask and analyze across several databases 2026-08-24 10:03:46 +03:00
test_pdf_attachments.py Move source adapters out of the ingester package 2026-08-20 11:46:55 +03:00
test_pdf_concurrency.py Serialize all in-process pdfium access under a shared lock 2026-06-14 10:50:42 +03:00
test_pdf_split.py Cover MCP, ingester and converter error paths 2026-07-26 19:14:26 +03:00
test_picture_description.py cover picture-description provider and rebuild edge cases 2026-05-05 14:20:37 +03:00
test_picture_in_context.py Make get_config the only configuration lookup 2026-08-19 14:43:40 +03:00
test_processing.py Resolve file:// URIs to paths through url2pathname 2026-08-21 10:22:26 +03:00
test_reader.py Make get_config the only configuration lookup 2026-08-19 14:43:40 +03:00
test_rebuild.py Split the store module by responsibility 2026-08-20 12:13:51 +03:00
test_reranker.py Add per-endpoint api_key to model and embedding config 2026-08-23 23:54:40 +03:00
test_s3_integration.py Split the store module by responsibility 2026-08-20 12:13:51 +03:00
test_s3_source.py canonical metadata keys: source_revision + content_type, bump to 0.50.0 2026-05-26 11:43:30 +03:00
test_search.py Make get_config the only configuration lookup 2026-08-19 14:43:40 +03:00
test_search_phases.py Separate fetching from ranking in search 2026-08-24 10:03:45 +03:00
test_settings.py Make get_config the only configuration lookup 2026-08-19 14:43:40 +03:00
test_telemetry.py Route eval scripts through the shared telemetry configure 2026-07-10 11:38:33 +03:00
test_title_generation.py Reach and enforce 100% coverage 2026-07-26 20:11:02 +03:00
test_uri.py Resolve file:// URIs to paths through url2pathname 2026-08-21 10:22:26 +03:00
test_utils.py Ask and analyze across several databases 2026-08-24 10:03:46 +03:00
test_vacuum_debounce.py Make get_config the only configuration lookup 2026-08-19 14:43:40 +03:00
test_versioning.py Make get_config the only configuration lookup 2026-08-19 14:43:40 +03:00