{"record":{"id":"a6c4c7702342f47c","repo":"MemPalace/mempalace","slug":"candidate-strategy-must-be-one-of-tuple-candidat","errorCode":null,"errorMessage":"candidate_strategy must be one of {tuple(_CANDIDATE_MERGERS)}, got {strategy!r}","messagePattern":"candidate_strategy must be one of (.+?), got (.+?)","errorType":"validation","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"mempalace/searcher.py","lineNumber":1218,"sourceCode":"\n# Strategy dispatch — keeps search_memories' branch count under the\n# project's complexity ceiling (C901 max-complexity=25). New strategies\n# register here.\n_CANDIDATE_MERGERS = {\n    \"vector\": None,  # default no-op\n    \"union\": _merge_bm25_union_candidates,\n}\n\n\ndef _validate_candidate_strategy(strategy: str) -> None:\n    \"\"\"Raise ``ValueError`` for unknown strategies.\n\n    Called eagerly at the top of ``search_memories`` so invalid values\n    fail consistently regardless of whether the call routes through the\n    vector path, the BM25-only fallback, or returns an early error dict.\n    \"\"\"\n    if strategy not in _CANDIDATE_MERGERS:\n        raise ValueError(\n            f\"candidate_strategy must be one of {tuple(_CANDIDATE_MERGERS)}, got {strategy!r}\"\n        )\n\n\ndef _apply_candidate_strategy(\n    strategy: str,\n    hits: list,\n    drawers_col,\n    query: str,\n    wing: str,\n    room: str,\n    n_results: int,\n    max_distance: float = 0.0,\n    source_file: str = None,\n    since_dt=None,\n    before_dt=None,\n) -> None:\n    \"\"\"Dispatch to the registered merger for ``strategy``.","sourceCodeStart":1200,"sourceCodeEnd":1236,"githubUrl":"https://github.com/MemPalace/mempalace/blob/06cb6987f02610784fefbad4b2bd5d026d164ba6/mempalace/searcher.py#L1200-L1236","documentation":"Error \"candidate_strategy must be one of {tuple(_CANDIDATE_MERGERS)}, got {strategy!r}\" thrown in MemPalace/mempalace.","triggerScenarios":"Thrown at mempalace/searcher.py:1218 when the library encounters an invalid state.","commonSituations":"An unknown candidate merge strategy name was configured.","solutions":["Pass one of the listed candidate_strategy values"],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"06cb6987f02610784fefbad4b2bd5d026d164ba6","analyzedAt":"2026-08-15T03:03:36.213Z","schemaVersion":2},"datasetVersion":"2026-08-15T17:31:12.345Z"}