test(retrieval): mixed-corpus G2 eval for entity-persist demote (#1096) - #1103
Conversation
There was a problem hiding this comment.
Sorry @robotrocketscience, you have reached your weekly rate limit of 500000 diff characters.
Please try again later or upgrade to continue using Sourcery
|
Warning Review limit reached
Next review available in: 55 minutes Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available. How can I continue?After more reviews become available, a review can be triggered using the To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews. How do review limits work?CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability. For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window. Please refer docs for additional details. Review details⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (2)
✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
PR-size soft capThis PR is over the advisory size threshold:
Bigger PRs collide with more open work, which under the parallel-session workflow tends to produce repeated This is advisory only — nothing is blocked. If the size is intentional (large refactor, module removal, generated code), apply the |
|
[claim:review:Setr:2026-07-06T19:47:34Z] |
e45b4c4 to
cd4a34f
Compare
Review — LGTM, mergeable (test-only)Reviewed for the one risk that matters in a synthetic G2 fixture: is it fair, or built to guarantee the demotion wins? It holds up well. Strengths
Two minor observations (non-blocking — for the flip-decision's confidence, not this merge):
Neither changes the verdict. This lands the G2 evidence the "measure before flip" clause needed; it does not flip the lane (test-only, |
|
merge-train: blocked branch is not fast-forward on The |
The academic benches cannot exercise the entity-persistence demotion lane's G2 positive half: LoCoMo extracts almost entirely noun_phrase entities, so every candidate takes the same grounding-neutral penalty and nothing reorders (recall-safe but no measurable demotion). Add a self-contained deterministic mixed corpus — durable technical beliefs (file_path/identifier/error_code grounding) paired with ephemeral coordination beliefs (branch/version grounding) that share query vocabulary — so retrieve_v2 control-vs-treatment exercises both halves of G2. Result: durable recall preserved at every budget (20/20, recall-safe); ephemeral coordination hits demoted out of a tight pack (250: 20->3); first-durable MRR 0.883->1.000. Fair by construction — BM25 alone interleaves ephemeral at ranks 2-3, so the lane is the marginal signal. Not corpus-gated: runs on public CI as a repeatable G2 gate and a regression lock on the lane. References #1096.
cd4a34f to
2f299f8
Compare
|
merge-train: merged 2f299f8 → |
|
[release:review:Setr:2026-07-06T19:58:52Z] |
What
Adds the mixed-corpus retrieval eval that the entity-persistence demotion lane (#1096) needs to exercise G2 — the evidence gate that has been unmeetable on the academic benches.
Why the existing benches can't do it: LoCoMo extracts almost entirely
noun_phraseentities, so every candidate takes the same grounding-neutral penalty and nothing reorders. The lane is provably recall-safe there but its demotion half is unmeasurable (all arms within ~0.13pp). Proving G2's positive half needs a store that mixes durable technical content with ephemeral coordination content — which no bench provided.The fixture (
tests/bench_gate/_entity_persist_mixed_store.py): per topic, a durable technical belief (grounding tofile_path/identifier/error_code) paired with an ephemeral coordination belief (grounding tobranch/version) that shares the query vocabulary. Entities auto-populate via the realextract_entities, so it's an end-to-end exercise of extraction + S1 + retrieval, not a hand-seeded entity table. Fully deterministic, self-contained, public-safe.Fair by construction: under control (lane off), ephemeral beliefs interleave at ranks 2–3 — BM25 alone does not separate them (the realistic exposure-inflation shape). The entity-persistence lane is the only signal that sinks them. A
test_corpus_grounds_as_labeledguard fails loudly if the extractor ever drifts and breaks that premise.Result
retrieve_v2control vs treatment on the mixed corpus:Scope
src/change. Notbench_gated— runs on public CI as a repeatable G2 gate and a regression lock on the lane's behaviour.Test