haiku.rag/tests
Yiorgis Gozadinos 85594a1fd1
Record what each evidence capability retrieved and cited
`CapabilityEvidenceRecord` holds the relationships a transcript cannot express:
which chunks a capability retrieved, which it cited, in which questions, and at
which point in the conversation. RAG and analysis each own one in their own state
namespace. Nothing is co-written: the host's state is JSON storage, so a shared
record would be overwritten by whichever capability synced last, and merging
happens in transient per-request views instead.

Both clocks are derived from the conversation rather than counted locally, so
every participant computes the same values without sharing a counter. Question
identity is the message count when the question arrived; epoch is the message
count at an outcome. Epochs are therefore globally comparable, which is what
lets `citation_status` require a declaration to follow the newest evidence of
every capability, and what makes equal epochs mean one request.

A declaration is written only after `resolve_citations` succeeds, so a call
naming only unresolvable ids is not a citation. Status is derived, never stored,
so refs and status cannot contradict.

Resuming a question requires the host to carry the capability state from the run
being resumed. Without it the identity of the question in progress is unknowable,
and adopting the current message count would relabel that question as a new one
and judge every declaration in it against the wrong identity.

Nothing reads the records yet and no wire behaviour changes.
2026-08-13 13:00:01 +03:00
..
capabilities Record what each evidence capability retrieved and cited 2026-08-13 13:00:01 +03:00
cassettes Recover from worker death and deny metadata writes 2026-07-28 19:11:19 +03:00
chat Constrain the chat prompt container height 2026-07-25 14:40:40 +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 ingester telemetry setup behind argument parsing 2026-08-13 11:37:36 +03:00
sandbox Point the limit comments at the right limits 2026-07-28 19:11:37 +03:00
store Similar fix for haiku.rag.ingester, and formatting 2026-08-12 15:20:11 +01:00
tools Name the search result each page image belongs to 2026-08-13 13:00:01 +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_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 Fix defects found reviewing the coverage work 2026-07-27 10:44:32 +03:00
test_chunker.py Fix defects found reviewing the coverage work 2026-07-27 10:44:32 +03:00
test_cli.py Move ingester telemetry setup behind argument parsing 2026-08-13 11:37:36 +03:00
test_client.py Load document blobs only when asked 2026-08-06 13:04:51 +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 Cover the lazy config init and restore the uv cache in CI 2026-07-27 13:35:50 +03:00
test_context.py Fix defects found reviewing the coverage work 2026-07-27 10:44:32 +03:00
test_context_enhancement.py Shrink the docling-serve context-expansion cassette 2026-06-29 15:15:26 +03:00
test_converters.py Reuse the local docling converter across documents 2026-08-13 11:39:01 +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 Cover MCP, ingester and converter error paths 2026-07-26 19:14:26 +03:00
test_doctor.py Reach and enforce 100% coverage 2026-07-26 20:11:02 +03:00
test_document.py Load document blobs only when asked 2026-08-06 13:04:51 +03:00
test_download_models.py Reach and enforce 100% coverage 2026-07-26 20:11:02 +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 Pool HTTP clients for vLLM embedding and vLLM/Jina reranking 2026-07-09 10:32:44 +03:00
test_embedder_config.py Fix defects found reviewing the coverage work 2026-07-27 10:44:32 +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 Harden history against tag annotation failures; document tag restore 2026-07-16 13:11:34 +03:00
test_inspector.py Surface database-open errors in the TUIs 2026-07-25 11:27:29 +03:00
test_lancedb_connection.py Fix defects found reviewing the coverage work 2026-07-27 10:44:32 +03:00
test_logging.py Additional tests 2026-02-13 18:08:46 +02:00
test_mcp.py Cover MCP, ingester and converter error paths 2026-07-26 19:14:26 +03:00
test_pdf_attachments.py compare off-loop work against actual event-loop thread, fix ty 2026-06-22 10:17:02 +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 Name the search result each page image belongs to 2026-08-13 13:00:01 +03:00
test_processing.py Normalize pragma comments to the codebase's single-line form 2026-07-26 20:18:19 +03:00
test_reader.py async versions for convert_file() convert_text() 2025-11-26 17:46:25 +02:00
test_rebuild.py Stop loading page rasters on the title and update paths 2026-08-06 13:04:51 +03:00
test_reranker.py Keep cross-encoder rerank scores apart when they saturate 2026-08-07 14:07:53 +03:00
test_s3_integration.py Clean up S3 test data per-test to keep SeaweedFS writable 2026-06-26 16:41:20 +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 Cover get_model provider branches and visualize_chunk edge paths 2026-07-26 19:23:54 +03:00
test_settings.py Cover store engine and repository paths 2026-07-26 19:36:37 +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_utils.py Map thinking onto Pydantic AI's unified setting 2026-07-27 18:26:42 +03:00
test_vacuum_debounce.py Serialize tag operations, vacuum, and metadata refresh with writes 2026-07-16 12:32:57 +03:00
test_versioning.py Throttle background auto-vacuum to at most once per 5 minutes 2026-06-12 10:17:18 +03:00