"""No-op reranker stub.

Returns the original candidate list sliced to top_k.
Replace with CrossEncoderReranker when a local cross-encoder model is available.
"""
from __future__ import annotations

from app.domain.retrieval.models import RetrievedChunk
from app.domain.retrieval.ports import Reranker


class PassThroughReranker(Reranker):
    """Pass-through reranker that preserves original retrieval order.

    Acts as a placeholder for future cross-encoder reranking (e.g. ms-marco-MiniLM).
    Wire via bootstrap.get_compliance_reranker() when ready to swap.
    """

    def rerank(self, query: str, chunks: list[RetrievedChunk], top_k: int) -> list[RetrievedChunk]:
        """Return the first top_k chunks without reordering."""
        return chunks[:top_k]
