2026-08-17
Added
- Cross-encoder reranker (opt-in,
HAKI_RERANK_ENABLED): re-scores the top retrieval candidates for higher accuracy before packing the context. Measured effect on a real A/B test: +33.4 points accuracy on the cases it targets (eval/, same protocol before/after). - Temporal grounding: a fact extracted from a relative time expression (“last week”, “il y a trois jours”) now carries an exact resolved ISO date range instead of losing that information at write time. Every rendered date also ships a precomputed, verified offset (“21 days before the question”) so the reading model never has to do date arithmetic itself — an LLM given raw dates alone gets that arithmetic right only 13.5-16% of the time (Test-of-Time benchmark).
- Pseudo-relevance feedback (PRF) expansion: retrieval now also considers entity names that recur across the top-ranked candidates, closing gaps where the right memory shares no exact keyword with the query.
- Animated demo of
haki verifyin the README Quickstart.
- Default context budget raised from 900 to 2000 tokens, backed by
published accuracy-vs-budget curves (the gain flattens well before
4000 tokens on a
gpt-4o-mini-class reader; 900 was leaving real accuracy on the table for no latency benefit). - README rewritten and fully translated to English; roadmap, test badge, and internal links corrected to match what is actually in this repository.
- Security (external review): constant-time comparison for
shared-secret checks, a missing rate limit on
/v1/context, an unbounded request payload size on capture, and a missing row-level-security policy onforget_receipts. None were exploitable in practice at the time they were found, but all four are closed. - Security: rate-limiting was declared on every relevant route but
never actually activated in this repository’s
app/main.py. Wired in. - Extraction: an out-of-enum
fact_kind,volatility, ormemory_formvalue from the extraction model — observed on a realgpt-4o-minirun — used to silently destroy the entire candidate fact instead of falling back to that field’s own documented default. Found the same day it started biasing a real measurement. - Consolidation: automatic “conflict overflow” reclassification now flags the facts it activates as such instead of serving them as silently certain.
- 6 additional correctness and robustness bugs found by an internal code review across the retrieval and consolidation code.
httpxtimeout raised from 60s to 180s on the extraction provider, for long conversations whose prompt occasionally exceeded the old limit.- The public benchmarks section no longer implies pre-published results live in this repository — the harness is real and reproducible, but no cherry-picked number is ever committed here; run it yourself.
2026-08-14
SDK coverage for mechanism D (
as_of, volatility that degrades instead
of excluding a stale fact) and the calibration eval protocol.2026-08-13
SDK coverage for the temporal tie-break fix and contested-conflict
serving introduced the same day.
2026-08-10
Follow-up fix shortly after the initial release.
2026-08-10
Initial public release: Python and TypeScript SDKs, the
haki CLI, the
MCP server, and the OpenAI-compatible gateway.
