Repository navigation
ADR-055: one result per text, and eval rows that name their stack (B-010, B-009, B-005) - #88
Merged
Merged
Conversation
Proposed. Covers B-010 (read-time dedup only), B-009 (eval provenance) and B-005 (two stale doc pointers). Co-Authored-By: Claude <noreply@anthropic.com> [ADR-055]
A file smaller than the tier-2 window has identical tier-2 and tier-3 chunks, and both were returned (B-010). The retriever now collapses hits with the same file and text before each cut in _rerank and _fuse_summaries. The most specific tier stands, at its group's best position and score, and the freed slot refills from the next distinct hit. Copies in other files are kept, since find_similar_code and the per-file scan tools need them. Co-Authored-By: Claude <noreply@anthropic.com> [ADR-055 src/hybrid_retriever.py]
append_baseline now writes embedder_model_id, embedder_dim, reranker_model_id, reranker_enabled and summarizer_model_id into each row (B-009), read from the same load_indexer_config() the run used. A field the record already has wins, so the real-repo and CoIR harnesses record whether the reranker was on for that arm themselves. Existing benchmarks/ rows are left as they are. CONTRIBUTING 4.2 says so. Co-Authored-By: Claude <noreply@anthropic.com> [ADR-055]
The study doc's flag asked for a correction that ADR-008 and ADR-017 already carry, and adr-backlog.md named the tier amendment against ADR-004, which is CI observability; the tier model moved to ADR-017 (B-005). Co-Authored-By: Claude <noreply@anthropic.com> [ADR-055]
Co-Authored-By: Claude <noreply@anthropic.com> [ADR-055]
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> [ADR-055]
A tier-2/3 scope is a positional label every file shares, so keying on scope dropped every other file's whole-file chunks from later rounds and could end the loop early. Use the (file, text) identity ADR-055 dedups on. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> [ADR-055 src/iterative_retriever.py]
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> [ADR-055]
…upe-results [ADR-055]
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Implements ADR-055 (backlog B-010 read-time half, B-009, B-005).
What changes
One result per text in a file (B-010). Search keeps one result when a file holds the same text more than once. This happens before the top-k cut, so duplicates no longer take up result slots. The same text in two different files is still returned twice (§2).
The iterative retriever uses the same identity (§5, added at @EDB's request). It tracked explored chunks by FQN, which every tier-2/3 slice shares (
Full File_part_N). Explored chunks are now keyed on file and text, so a slice is no longer skipped as "already explored" when a different slice was.Eval rows name their stack (B-009).
tools/eval_common.stack_provenance()stamps each row with:summarization_enabled;fusion_modeand the four fusion weights.real_repo_evalrecords the fusion mode per arm.Two stale pointers fixed (B-005).
Tests
tests/test_iterative_explored.py(5) and an extendedtests/test_eval_common.py, plus the dedupe tests.Still open (left in the ADR)
🤖 Generated with Claude Code