fix(llmcontext): report unresolved/external edges, and stop truncatin… - #87
Merged
Merged
Conversation
…g the quality preface The Extraction Quality block guarded the unresolved-edge count on CoverageGaps > 0, so a snapshot with zero gaps and many unresolved outbound call sites reported neither. Gaps, unresolved edges and external edges are independent signals and now render under independent guards. External edges are reported without a warning and excluded from the "extraction limits" footer — a hardcoded third-party host is expected, not a blind spot. Render() also broke out of the section loop on the first section to overrun the token budget, and Repository Map emits one uncapped row per module. On a multi-repo snapshot the map consumed the whole budget and the Extraction Quality preface was dropped entirely, from exactly the snapshots whose extraction is least complete. Sections can now reserve budget ahead of layout; reserving buys survival, not precedence. Rewriting that loop exposed a third bug: the cut sliced bytes, not runes, so truncation could emit invalid UTF-8. cutAt backs the cut off to the nearest rune boundary. Renderer-only — facts.jsonl and insights.json are byte-identical across the change, so no cacheVersion bump and no golden regeneration. Adds the first tests for the Extraction Quality block and for truncation.
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.
…g the quality preface
The Extraction Quality block guarded the unresolved-edge count on CoverageGaps > 0, so a snapshot with zero gaps and many unresolved outbound call sites reported neither. Gaps, unresolved edges and external edges are independent signals and now render under independent guards. External edges are reported without a warning and excluded from the "extraction limits" footer — a hardcoded third-party host is expected, not a blind spot.
Render() also broke out of the section loop on the first section to overrun the token budget, and Repository Map emits one uncapped row per module. On a multi-repo snapshot the map consumed the whole budget and the Extraction Quality preface was dropped entirely, from exactly the snapshots whose extraction is least complete. Sections can now reserve budget ahead of layout; reserving buys survival, not precedence.
Rewriting that loop exposed a third bug: the cut sliced bytes, not runes, so truncation could emit invalid UTF-8. cutAt backs the cut off to the nearest rune boundary.
Renderer-only — facts.jsonl and insights.json are byte-identical across the change, so no cacheVersion bump and no golden regeneration. Adds the first tests for the Extraction Quality block and for truncation.