Two behaviour changes plus the eval harness land in this release.
Behaviour changes (both were the documented defaults, both are now measured
worse than the alternatives and both are reversible by config):
searchScoring: weighted is the new default for mem_search scoring. A plain
matched-keyword count cannot tell a distinctive keyword from a ubiquitous one;
rarity weighting took recall_all@5 from 0.7383 to 0.7553 and ndcg@5 from
0.6865 to 0.7001 on LongMemEval _S with matching untouched (recall_all@50 is
unchanged at 0.9979). `searchScoring: count` restores the old arithmetic
exactly. Note the score VALUES change scale: integers+0.5 before, roughly
0.01-10 now, so any external threshold on `score` needs revisiting.
systemOne.policy: rerank is the new default for the System-one recall gate:
the judge's values now order the page instead of dropping from it. With the
same judge and the same per-candidate values, filtering scored 0.3800 and
reranking 0.8020 end-to-end over 500 questions. `policy: filter` is kept for
when context budget is the binding constraint, and is now bounded by
maxDropFraction (default 0.25) so a mis-calibrated threshold cannot gut a
page. The operational consequence: the gate no longer shrinks context by
default.
New output fields: `gated.policy`, `gated.bounded`, `gated.ordered`, and the
decision exposes `ordered` so a caller can re-rank from one judgement.
New in the repo (not published: evals/ is outside the files whitelist): a
LongMemEval retrieval harness and an OmniMemEval backend for the engine, with
the studies behind the two changes above.
128/128 tests pass. v0.4.2 was retracted before tagging, so 0.5.0 follows 0.4.1.