Fixed
- Recall no longer serves confident noise on topics the store barely
covers, and itsreasonstring cannot lie. When the candidate head's
cosine spread collapses (nothing to distinguish), the degree term is
dampened proportionally instead of silently deciding the ranking, and
the response carries aflat_cosinehint — hints are now actually
serialized over the recall RPC (they were declared in the tool schema
but never sent). The aaak overlap matches cues against content fields
only — entity anchors and doc names — never machine tokens or
bookkeeping tag values, so a cue word like "user" cannot bias every
record of one role; entity anchors stay dormant until the capture path
writes them.reasonis assembled during scoring with weighted terms
and the full multiplier trail (trigram, fts, lex fusion, tier,
temporal, profile gain, stability, valence, corrector anchoring), so
the printed arithmetic reconciles with the served score. - Served recall ordering is now deterministic. Equal-scored hits used to
inherit candidate scan order (Python's sort is stable), so the same cue
could return a different ordering across calls; the supersede-cap window
had the same tie sensitivity, which could shift served scores. Every
serve path — pipeline, bank fallback, and the daemon's authority merge —
now sorts through one shared helper that breaks ties onrecord_id, and
a guard test keeps score-only sorts out of those files. Reported by
@danielhertz1999-bit. - FHRR bundle golden parity now states its platform tolerance instead of
encoding one machine's libm rounding: components whose mean angle sits
on a quantisation boundary (byte inputs make that exact) may differ by
exactly one step, components with a near-zero resultant are skipped
(atan2 is undefined there), everything else stays byte-exact — so
formula and rounding-mode regressions still fail. Goldens unchanged.
Measured and reported by
@danielhertz1999-bit. - A read-only reader holding a stale snapshot now raises the typed fence
error the caller expects, rather than the older integrity shape. The
crash-recovery test covering it had been red since the fence was typed.
Changed
- The Rust workspace is
rustfmtclean, so formatting can be enforced in
CI from here on. - Two test-suite races removed: the multiprocess WAL test no longer
depends on process interleaving, and detection-arena isolation is
measured with a fresh process per arm.