fix(mcp): flag source drift in get_code_snippet and search_code (#1750) - #1788
Open
umi008 wants to merge 1 commit into
Open
fix(mcp): flag source drift in get_code_snippet and search_code (#1750)#1788umi008 wants to merge 1 commit into
umi008 wants to merge 1 commit into
Conversation
The snippet and full-mode search tools slice the live file on disk using line coordinates recorded at index time. After the file is edited without re-indexing, those ranges are stale: the tools returned shifted source text, or a grep hit attributed to an adjacent function, with no signal that the answer was drifting (everything after a small edit looked like current source). Both tools now consult the same freshness oracle check_index_coverage already exposes. When the file no longer matches the recorded metadata (metadata_changed/missing) they skip the stale live slice and report source_drift/freshness instead; the healthy path (metadata_match) is byte-identical to before. No index-format change: the recorded metadata is unchanged, only the read tools consult it. Fixes DeusData#1750 Signed-off-by: Ulises Millan Guerrero <ulises.millanguerrero@gmail.com>
|
Thanks for opening this — it has been seen, and it is queued. This note is automated, but it is not a brush-off: it exists so you know where your PR stands instead of having to guess from silence. Current review status: working through a backlog. What that means for this PR, concretely:
Things that will genuinely speed it up whenever review does happen:
If this fixes a bug, a reproduction we can run is worth more than a description of the symptom. Thanks for contributing, and sorry in advance for the wait. |
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.
What does this PR do?
get_code_snippetandsearch_codesliced the live file on disk using line coordinates recorded at index time. After the file was edited without re-indexing those ranges are stale, and the tools returned shifted source text — a grep hit misattributed to an adjacent function, or a snippet of the wrong symbol — presented as though it were current source.Both tools now consult the same freshness oracle
check_index_coveragealready exposes. When the recorded metadata no longer matches the file on disk (metadata_changed/missing), they skip the stale live slice and reportsource_drift: trueplus the freshness state instead. The healthy path (metadata_match) is byte-identical to before; re-indexing remains the remedy.Tested with two reproduce-first regression tests: a snippet request and a full-mode search after a file is modified on disk (asserting
source_driftand no stale text), plus the unchanged clean-metadata path.Checklist
git commit -s) — required, CI rejects unsigned commits (DCO, see CONTRIBUTING.md)make -f Makefile.cbm test)make -f Makefile.cbm lint-ci)