Skip to content

fix(llmcontext): report unresolved/external edges, and stop truncatin… - #87

Merged
dejo1307 merged 1 commit into
mainfrom
fix/llmcontext-extraction-quality-reporting
Jul 10, 2026
Merged

fix(llmcontext): report unresolved/external edges, and stop truncatin…#87
dejo1307 merged 1 commit into
mainfrom
fix/llmcontext-extraction-quality-reporting

Conversation

@dejo1307

Copy link
Copy Markdown
Collaborator

…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.

…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.
@dejo1307
dejo1307 merged commit fe7d1a9 into main Jul 10, 2026
4 checks passed
@dejo1307
dejo1307 deleted the fix/llmcontext-extraction-quality-reporting branch July 18, 2026 06:54
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant