Skip to content

radius is documented and validated but has no effect on any search lane #394

Description

@Kendrick-Song

SearchRequest.radius is declared, range-validated to [0.0, 1.0], and documented at memory/search/dto.py:84-88 as gating "raw cosine at recall time". It has no effect anywhere.

  • HYBRID: manager.py passes radius=_effective_radius(req) into RankInput at three call sites (~:420, :477, :551). grep -rn radius .venv/.../everalgo/ returns exactly two hits, both in types/rank.py — the field declaration and its docstring. everalgo never reads it.
  • AGENTIC: never passed at all.

PR #393 briefly wired it into the agentic path as ahybrid_retrieve(min_score=radius) and had to revert: min_score is applied after RRF fusion (everalgo/rank/hybrid.py:86-91), where rrf replaces each score with Σ 1/(k+rank) (max ≈ 0.0328, fusion.py:41). Since top_k defaults to -1 and _effective_radius then returns _DEFAULT_UNLIMITED_RADIUS = 0.5 (manager.py:120, :937-941), every candidate was filtered out — default agentic agent search returned []. Measured: {None: 2 hits, 0.5: 0 hits, 0.03: 2 hits}.

Needs a decision before any implementation: what should radius mean? Candidates — (a) a pre-fusion cosine floor applied inside the dense recall route, which is what the docstring describes; (b) a post-fusion floor on the calibrated LR score, which is what min_score already does; (c) remove it and keep min_score. Whichever is chosen, apply it consistently across lanes and delete the three inert RankInput.radius args.

Found while verifying #393.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions