Troubleshooting
Services won't start
bash
# Confirm both health endpoints
curl http://localhost:8080/health
curl http://localhost:8081/healthIf either fails: check Docker (docker compose ps), then the service logs. Without DASH_INGEST_WAL_PATH / DASH_RETRIEVAL_WAL_PATH the services run in-memory and seed a sample claim - useful for smoke-testing config vs data issues.
Retrieval returns nothing
- Wrong service or port? Retrieval is
:8080, ingestion is:8081. Ingesting to the retrieval port (or vice versa) silently misses. stance_mode: support_onlyfiltering everything? Any claim with a contradicting evidence record is dropped. Re-run withbalanced(default) to see demoted results and confirm the claim exists.- Temporal window too narrow? A
time_rangeoutside every claim's[valid_from, valid_to]returns empty. Widen the window first, then narrow. - Tenant mismatch? Queries are tenant-scoped. Ingesting under
t1and querying undert2returns nothing by design.
Scores look wrong
- Contradicted claims rank low on purpose.
supports: 1, contradicts: 1demotes the score inbalancedmode - that is the differentiator working, not a bug. - Semantic vs lexical. Passing a precomputed
query_embeddingmakes dense similarity the primary signal; a raw string leans lexical with semantic as tie-break. Mismatched expectations here look like "wrong" ranking. - Source quality weights. A
supportsfrom a 0.4-quality source counts less than acontradictsfrom a 0.95 source. Check the citations, not just the score.
Ingest rejected (400)
Server-side validation fails the whole write: confidence and source_quality must be in [0.0, 1.0], valid_from <= valid_to, and all IDs non-empty. The error names the offending field.
Embeddings endpoint errors
- Default provider is deterministic hash (no network, no key) - it always works offline.
DASH_EMBEDDING_PROVIDER=ollama|openaifailures are provider-connectivity issues, not DASH issues: verify the provider is reachable with its own CLI first.- Any OpenAI client works via
OPENAI_API_BASE=http://localhost:8080/v1- if one client fails andcurlsucceeds, check the client's base-URL handling (trailing slashes,/v1duplication).
WAL and durability
- WAL-only mode (no persistence paths set) loses in-memory state on restart - by design. Set
DASH_INGEST_WAL_PATH/DASH_RETRIEVAL_WAL_PATHfor replay across restarts. - Never set
DASH_INGEST_ALLOW_UNSAFE_WAL_DURABILITY=trueoutside stress testing. - Verify audit integrity any time:
scripts/verify_audit_chain.sh.
Auth failures (401/403)
- Services need a shared key (
DASH_INGEST_API_KEY/DASH_RETRIEVAL_API_KEY) when auth is on. - JWT
kidmust match a configured key; checkiss/audif enforced. - Revoked keys fail closed - check
DASH_*_REVOKED_API_KEYS.
Still stuck?
GET /metricsexposes service metrics - compare throughput against theperf_benchCI scorecards (ingest_throughput_sequential,retrieve_throughput_lexical,retrieve_throughput_semantic,ann_search_throughput_at_scale,wal_replay_throughput).- The
fuzz/harnesses cover the JWT verifier, OpenAI parser, ranking, and WAL parser - crash inputs there are known-fixed; update before reporting.