v0.5.0 — Phase 6: cross-encoder reranker
Precision at the top of the ranking, where the generator reads.
- Consumes Polaris 1.4.0: SentencePairClassifier (num_classes=1), collate_pairs ([CLS] q [SEP] passage [SEP]), train_bpe special-token reservation, native tokenizer save/load.
- Tokenizer now reserves // so one vocabulary serves the MLM, embedder, and pair models (resolves ADR-0003's deferral).
- meridian.reranker: SentencePairClassifier config/artifact, pointwise pair-sample builders, and BCE train_reranker (init from the shared Stage-0 trunk).
- RerankingRetriever: rerank a base retriever's top-N candidates with the cross-encoder; config-gated via 'meridian ask --rerank --reranker DIR' and evaluate.py --rerank (default off). Composes with bm25/dense/hybrid.
Verified end-to-end offline. nDCG@10 lift and rerank latency pending the real training run (adopt only if it improves — honesty gate).